1 /* { dg-do compile { target { ! ia32 } } } */
2 /* { dg-options "-O2 -mavx512vl -mavx512bw" } */
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\]*xmm16" 1 } } */
19 f2 (__m128i a
, __m128i b
)
21 register __m128i c
__asm ("xmm16") = a
;
22 asm volatile ("" : "+v" (c
));
23 c
= _mm_packs_epi32 (c
, b
);
24 asm volatile ("" : "+v" (c
));
28 /* { dg-final { scan-assembler-times "vpackssdw\[^\n\r\]*xmm16" 1 } } */
31 f3 (__m128i a
, __m128i b
)
33 register __m128i c
__asm ("xmm16") = a
;
34 asm volatile ("" : "+v" (c
));
35 c
= _mm_packus_epi16 (c
, b
);
36 asm volatile ("" : "+v" (c
));
40 /* { dg-final { scan-assembler-times "vpackuswb\[^\n\r\]*xmm16" 1 } } */
43 f4 (__m128i a
, __m128i b
)
45 register __m128i c
__asm ("xmm16") = a
;
46 asm volatile ("" : "+v" (c
));
47 c
= _mm_packus_epi32 (c
, b
);
48 asm volatile ("" : "+v" (c
));
52 /* { dg-final { scan-assembler-times "vpackusdw\[^\n\r\]*xmm16" 1 } } */
55 f5 (__m256i a
, __m256i b
)
57 register __m256i c
__asm ("xmm16") = a
;
58 asm volatile ("" : "+v" (c
));
59 c
= _mm256_packs_epi16 (c
, b
);
60 asm volatile ("" : "+v" (c
));
64 /* { dg-final { scan-assembler-times "vpacksswb\[^\n\r\]*ymm16" 1 } } */
67 f6 (__m256i a
, __m256i b
)
69 register __m256i c
__asm ("xmm16") = a
;
70 asm volatile ("" : "+v" (c
));
71 c
= _mm256_packs_epi32 (c
, b
);
72 asm volatile ("" : "+v" (c
));
76 /* { dg-final { scan-assembler-times "vpackssdw\[^\n\r\]*ymm16" 1 } } */
79 f7 (__m256i a
, __m256i b
)
81 register __m256i c
__asm ("xmm16") = a
;
82 asm volatile ("" : "+v" (c
));
83 c
= _mm256_packus_epi16 (c
, b
);
84 asm volatile ("" : "+v" (c
));
88 /* { dg-final { scan-assembler-times "vpackuswb\[^\n\r\]*ymm16" 1 } } */
91 f8 (__m256i a
, __m256i b
)
93 register __m256i c
__asm ("xmm16") = a
;
94 asm volatile ("" : "+v" (c
));
95 c
= _mm256_packus_epi32 (c
, b
);
96 asm volatile ("" : "+v" (c
));
100 /* { dg-final { scan-assembler-times "vpackusdw\[^\n\r\]*ymm16" 1 } } */