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