1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -mavx512vl -mno-avx512bw" } */
7 f1 (__m128i a
, __m128i b
)
9 register __m128i c
__asm ("xmm16") = a
;
10 asm volatile ("" : "+v" (c
));
11 c
= _mm_packs_epi16 (c
, b
);
12 asm volatile ("" : "+v" (c
));
16 /* { dg-final { scan-assembler-times "vpacksswb\[^\n\r\]*xmm\[0-9\]" 1 } } */
17 /* { dg-final { scan-assembler-not "vpacksswb\[^\n\r\]*xmm16" } } */
20 f2 (__m128i a
, __m128i b
)
22 register __m128i c
__asm ("xmm16") = a
;
23 asm volatile ("" : "+v" (c
));
24 c
= _mm_packs_epi32 (c
, b
);
25 asm volatile ("" : "+v" (c
));
29 /* { dg-final { scan-assembler-times "vpackssdw\[^\n\r\]*xmm\[0-9\]" 1 } } */
30 /* { dg-final { scan-assembler-not "vpackssdw\[^\n\r\]*xmm16" } } */
33 f3 (__m128i a
, __m128i b
)
35 register __m128i c
__asm ("xmm16") = a
;
36 asm volatile ("" : "+v" (c
));
37 c
= _mm_packus_epi16 (c
, b
);
38 asm volatile ("" : "+v" (c
));
42 /* { dg-final { scan-assembler-times "vpackuswb\[^\n\r\]*xmm\[0-9\]" 1 } } */
43 /* { dg-final { scan-assembler-not "vpackuswb\[^\n\r\]*xmm16" } } */
46 f4 (__m128i a
, __m128i b
)
48 register __m128i c
__asm ("xmm16") = a
;
49 asm volatile ("" : "+v" (c
));
50 c
= _mm_packus_epi32 (c
, b
);
51 asm volatile ("" : "+v" (c
));
55 /* { dg-final { scan-assembler-times "vpackusdw\[^\n\r\]*xmm\[0-9\]" 1 } } */
56 /* { dg-final { scan-assembler-not "vpackusdw\[^\n\r\]*xmm16" } } */
59 f5 (__m256i a
, __m256i b
)
61 register __m256i c
__asm ("xmm16") = a
;
62 asm volatile ("" : "+v" (c
));
63 c
= _mm256_packs_epi16 (c
, b
);
64 asm volatile ("" : "+v" (c
));
68 /* { dg-final { scan-assembler-times "vpacksswb\[^\n\r\]*ymm\[0-9\]" 1 } } */
69 /* { dg-final { scan-assembler-not "vpacksswb\[^\n\r\]*ymm16" } } */
72 f6 (__m256i a
, __m256i b
)
74 register __m256i c
__asm ("xmm16") = a
;
75 asm volatile ("" : "+v" (c
));
76 c
= _mm256_packs_epi32 (c
, b
);
77 asm volatile ("" : "+v" (c
));
81 /* { dg-final { scan-assembler-times "vpackssdw\[^\n\r\]*ymm\[0-9\]" 1 } } */
82 /* { dg-final { scan-assembler-not "vpackssdw\[^\n\r\]*ymm16" } } */
85 f7 (__m256i a
, __m256i b
)
87 register __m256i c
__asm ("xmm16") = a
;
88 asm volatile ("" : "+v" (c
));
89 c
= _mm256_packus_epi16 (c
, b
);
90 asm volatile ("" : "+v" (c
));
94 /* { dg-final { scan-assembler-times "vpackuswb\[^\n\r\]*ymm\[0-9\]" 1 } } */
95 /* { dg-final { scan-assembler-not "vpackuswb\[^\n\r\]*ymm16" } } */
98 f8 (__m256i a
, __m256i b
)
100 register __m256i c
__asm ("xmm16") = a
;
101 asm volatile ("" : "+v" (c
));
102 c
= _mm256_packus_epi32 (c
, b
);
103 asm volatile ("" : "+v" (c
));
107 /* { dg-final { scan-assembler-times "vpackusdw\[^\n\r\]*ymm\[0-9\]" 1 } } */
108 /* { dg-final { scan-assembler-not "vpackusdw\[^\n\r\]*ymm16" } } */