PR inline-asm/84742
[official-gcc.git] / gcc / testsuite / gcc.target / i386 / avx512bw-vpbroadcast-1.c
blobda6dba59d95573187d83cc42091e90f2893f0602
1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -mavx512vl -mavx512bw" } */
4 #include <x86intrin.h>
6 void
7 f1 (__m128i x)
9 register __m128i a __asm ("xmm16");
10 a = x;
11 asm volatile ("" : "+v" (a));
12 a = _mm_broadcastb_epi8 (a);
13 asm volatile ("" : "+v" (a));
16 /* { dg-final { scan-assembler "vpbroadcastb\[^\n\r]*xmm16\[^\n\r]*xmm16" } } */
18 void
19 f2 (__m128i x)
21 register __m128i a __asm ("xmm16");
22 a = x;
23 asm volatile ("" : "+v" (a));
24 a = _mm_broadcastw_epi16 (a);
25 asm volatile ("" : "+v" (a));
28 /* { dg-final { scan-assembler "vpbroadcastw\[^\n\r]*xmm16\[^\n\r]*xmm16" } } */
30 void
31 f3 (__m128i x)
33 register __m128i a __asm ("xmm16");
34 a = x;
35 asm volatile ("" : "+v" (a));
36 a = _mm_broadcastd_epi32 (a);
37 asm volatile ("" : "+v" (a));
40 /* { dg-final { scan-assembler "vpbroadcastd\[^\n\r]*xmm16\[^\n\r]*xmm16" } } */
42 void
43 f4 (__m128i x)
45 register __m128i a __asm ("xmm16");
46 a = x;
47 asm volatile ("" : "+v" (a));
48 a = _mm_broadcastq_epi64 (a);
49 asm volatile ("" : "+v" (a));
52 /* { dg-final { scan-assembler "vpbroadcastq\[^\n\r]*xmm16\[^\n\r]*xmm16" } } */
54 void
55 f5 (__m128i x)
57 register __m128i a __asm ("xmm16");
58 register __m256i b __asm ("xmm17");
59 a = x;
60 asm volatile ("" : "+v" (a));
61 b = _mm256_broadcastb_epi8 (a);
62 asm volatile ("" : "+v" (b));
65 /* { dg-final { scan-assembler "vpbroadcastb\[^\n\r]*(xmm1\[67]\[^\n\r]*ymm1\[67]|ymm1\[67]\[^\n\r]*xmm1\[67])" } } */
67 void
68 f6 (__m128i x)
70 register __m128i a __asm ("xmm16");
71 register __m256i b __asm ("xmm17");
72 a = x;
73 asm volatile ("" : "+v" (a));
74 b = _mm256_broadcastw_epi16 (a);
75 asm volatile ("" : "+v" (b));
78 /* { dg-final { scan-assembler "vpbroadcastw\[^\n\r]*(xmm1\[67]\[^\n\r]*ymm1\[67]|ymm1\[67]\[^\n\r]*xmm1\[67])" } } */
80 void
81 f7 (__m128i x)
83 register __m128i a __asm ("xmm16");
84 register __m256i b __asm ("xmm17");
85 a = x;
86 asm volatile ("" : "+v" (a));
87 b = _mm256_broadcastd_epi32 (a);
88 asm volatile ("" : "+v" (b));
91 /* { dg-final { scan-assembler "vpbroadcastd\[^\n\r]*(xmm1\[67]\[^\n\r]*ymm1\[67]|ymm1\[67]\[^\n\r]*xmm1\[67])" } } */
93 void
94 f8 (__m128i x)
96 register __m128i a __asm ("xmm16");
97 register __m256i b __asm ("xmm17");
98 a = x;
99 asm volatile ("" : "+v" (a));
100 b = _mm256_broadcastq_epi64 (a);
101 asm volatile ("" : "+v" (b));
104 /* { dg-final { scan-assembler "vpbroadcastq\[^\n\r]*(xmm1\[67]\[^\n\r]*ymm1\[67]|ymm1\[67]\[^\n\r]*xmm1\[67])" } } */