aboutsummaryrefslogtreecommitdiff
path: root/packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c')
-rw-r--r--packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c67
1 files changed, 67 insertions, 0 deletions
diff --git a/packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c b/packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
new file mode 100644
index 000000000000..4cfb2239c06f
--- /dev/null
+++ b/packages/Python/lldbsuite/test/functionalities/register/intel_avx/main.c
@@ -0,0 +1,67 @@
+//===-- main.c ------------------------------------------------*- C -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+void func() {
+ unsigned int ymmvalues[16];
+ unsigned char val;
+ unsigned char i;
+ for (i = 0 ; i < 16 ; i++)
+ {
+ val = (0x80 | i);
+ ymmvalues[i] = (val << 24) | (val << 16) | (val << 8) | val;
+ }
+
+ unsigned int ymmallones = 0xFFFFFFFF;
+ __asm__("int3;"
+ "vbroadcastss %1, %%ymm0;"
+ "vbroadcastss %0, %%ymm0;"
+ "vbroadcastss %2, %%ymm1;"
+ "vbroadcastss %0, %%ymm1;"
+ "vbroadcastss %3, %%ymm2;"
+ "vbroadcastss %0, %%ymm2;"
+ "vbroadcastss %4, %%ymm3;"
+ "vbroadcastss %0, %%ymm3;"
+ "vbroadcastss %5, %%ymm4;"
+ "vbroadcastss %0, %%ymm4;"
+ "vbroadcastss %6, %%ymm5;"
+ "vbroadcastss %0, %%ymm5;"
+ "vbroadcastss %7, %%ymm6;"
+ "vbroadcastss %0, %%ymm6;"
+ "vbroadcastss %8, %%ymm7;"
+ "vbroadcastss %0, %%ymm7;"
+#if defined(__x86_64__)
+ "vbroadcastss %9, %%ymm8;"
+ "vbroadcastss %0, %%ymm8;"
+ "vbroadcastss %10, %%ymm9;"
+ "vbroadcastss %0, %%ymm9;"
+ "vbroadcastss %11, %%ymm10;"
+ "vbroadcastss %0, %%ymm10;"
+ "vbroadcastss %12, %%ymm11;"
+ "vbroadcastss %0, %%ymm11;"
+ "vbroadcastss %13, %%ymm12;"
+ "vbroadcastss %0, %%ymm12;"
+ "vbroadcastss %14, %%ymm13;"
+ "vbroadcastss %0, %%ymm13;"
+ "vbroadcastss %15, %%ymm14;"
+ "vbroadcastss %0, %%ymm14;"
+ "vbroadcastss %16, %%ymm15;"
+ "vbroadcastss %0, %%ymm15;"
+#endif
+ ::"m"(ymmallones),
+ "m"(ymmvalues[0]), "m"(ymmvalues[1]), "m"(ymmvalues[2]), "m"(ymmvalues[3]),
+ "m"(ymmvalues[4]), "m"(ymmvalues[5]), "m"(ymmvalues[6]), "m"(ymmvalues[7])
+#if defined(__x86_64__)
+ ,
+ "m"(ymmvalues[8]), "m"(ymmvalues[9]), "m"(ymmvalues[10]), "m"(ymmvalues[11]),
+ "m"(ymmvalues[12]), "m"(ymmvalues[13]), "m"(ymmvalues[14]), "m"(ymmvalues[15])
+#endif
+ );
+}
+
+int main(int argc, char const *argv[]) { func(); }