PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx512vl-vpbroadcast-2.c
blobaed9914b597e6ecc3d9e619909dfcdd19bd7fbf1
1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -mavx512vl -mno-avx512bw" } */
4 typedef char V1 __attribute__((vector_size (16)));
5 typedef short V2 __attribute__((vector_size (16)));
6 typedef char V5 __attribute__((vector_size (32)));
7 typedef short V6 __attribute__((vector_size (32)));
8 typedef int V7 __attribute__((vector_size (32)));
10 void
11 f1 (V1 x)
13 register V1 a __asm ("xmm16");
14 a = x;
15 asm volatile ("" : "+v" (a));
16 a = __builtin_shuffle (a, (V1) { 0 });
17 asm volatile ("" : "+v" (a));
20 /* { dg-final { scan-assembler-not "vpbroadcastb\[^\n\r]*xmm16" } } */
22 void
23 f2 (V2 x)
25 register V2 a __asm ("xmm16");
26 a = x;
27 asm volatile ("" : "+v" (a));
28 a = __builtin_shuffle (a, (V2) { 0 });
29 asm volatile ("" : "+v" (a));
32 /* { dg-final { scan-assembler-not "vpbroadcastw\[^\n\r]*xmm16" } } */
34 void
35 f5 (V5 x)
37 register V5 a __asm ("xmm16");
38 a = x;
39 asm volatile ("" : "+v" (a));
40 a = __builtin_shuffle (a, (V5) { 0 });
41 asm volatile ("" : "+v" (a));
44 /* { dg-final { scan-assembler-not "vpbroadcastb\[^\n\r]*\[xy]mm16" } } */
46 void
47 f6 (V6 x)
49 register V6 a __asm ("xmm16");
50 a = x;
51 asm volatile ("" : "+v" (a));
52 a = __builtin_shuffle (a, (V6) { 0 });
53 asm volatile ("" : "+v" (a));
56 /* { dg-final { scan-assembler-not "vpbroadcastw\[^\n\r]*\[xy]mm16" } } */
58 void
59 f7 (V7 x)
61 register V7 a __asm ("xmm16");
62 a = x;
63 asm volatile ("" : "+v" (a));
64 a = __builtin_shuffle (a, (V7) { 0 });
65 asm volatile ("" : "+v" (a));
68 /* { dg-final { scan-assembler "vpbroadcastd\[^\n\r]*(xmm16\[^\n\r]*ymm16|ymm16\[^\n\r]*xmm16)" } } */