1 /* { dg-do compile } */
2 /* { dg-options "-O2 -mavx512vl -mno-avx512bw" } */
3 
4 #include <x86intrin.h>
5 
6 __m128i
f1(__m128i a,__m128i b)7 f1 (__m128i a, __m128i b)
8 {
9   return _mm_packs_epi16 (a, b);
10 }
11 
12 /* { dg-final { scan-assembler-times "vpacksswb\[^\n\r\]*xmm\[0-9\]" 1 } } */
13 
14 __m128i
f2(__m128i a,__m128i b)15 f2 (__m128i a, __m128i b)
16 {
17   return _mm_packs_epi32 (a, b);
18 }
19 
20 /* { dg-final { scan-assembler-times "vpackssdw\[^\n\r\]*xmm\[0-9\]" 1 } } */
21 
22 __m128i
f3(__m128i a,__m128i b)23 f3 (__m128i a, __m128i b)
24 {
25   return _mm_packus_epi16 (a, b);
26 }
27 
28 /* { dg-final { scan-assembler-times "vpackuswb\[^\n\r\]*xmm\[0-9\]" 1 } } */
29 
30 __m128i
f4(__m128i a,__m128i b)31 f4 (__m128i a, __m128i b)
32 {
33   return _mm_packus_epi32 (a, b);
34 }
35 
36 /* { dg-final { scan-assembler-times "vpackusdw\[^\n\r\]*xmm\[0-9\]" 1 } } */
37 
38 __m256i
f5(__m256i a,__m256i b)39 f5 (__m256i a, __m256i b)
40 {
41   return _mm256_packs_epi16 (a, b);
42 }
43 
44 /* { dg-final { scan-assembler-times "vpacksswb\[^\n\r\]*ymm\[0-9\]" 1 } } */
45 
46 __m256i
f6(__m256i a,__m256i b)47 f6 (__m256i a, __m256i b)
48 {
49   return _mm256_packs_epi32 (a, b);
50 }
51 
52 /* { dg-final { scan-assembler-times "vpackssdw\[^\n\r\]*ymm\[0-9\]" 1 } } */
53 
54 __m256i
f7(__m256i a,__m256i b)55 f7 (__m256i a, __m256i b)
56 {
57   return _mm256_packus_epi16 (a, b);
58 }
59 
60 /* { dg-final { scan-assembler-times "vpackuswb\[^\n\r\]*ymm\[0-9\]" 1 } } */
61 
62 __m256i
f8(__m256i a,__m256i b)63 f8 (__m256i a, __m256i b)
64 {
65   return _mm256_packus_epi32 (a, b);
66 }
67 
68 /* { dg-final { scan-assembler-times "vpackusdw\[^\n\r\]*ymm\[0-9\]" 1 } } */
69