1 //  RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64-apple-darwin -target-feature +avx512vnni -target-feature +avx512vl -emit-llvm -o - -Wall -Werror | FileCheck %s
2 
3 #include <immintrin.h>
4 
test_mm256_mask_dpbusd_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)5 __m256i test_mm256_mask_dpbusd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
6   // CHECK-LABEL: @test_mm256_mask_dpbusd_epi32
7   // CHECK: @llvm.x86.avx512.vpdpbusd.256
8   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
9   return _mm256_mask_dpbusd_epi32(__S, __U, __A, __B);
10 }
11 
test_mm256_maskz_dpbusd_epi32(__mmask8 __U,__m256i __S,__m256i __A,__m256i __B)12 __m256i test_mm256_maskz_dpbusd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
13   // CHECK-LABEL: @test_mm256_maskz_dpbusd_epi32
14   // CHECK: @llvm.x86.avx512.vpdpbusd.256
15   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
16   return _mm256_maskz_dpbusd_epi32(__U, __S, __A, __B);
17 }
18 
test_mm256_dpbusd_epi32(__m256i __S,__m256i __A,__m256i __B)19 __m256i test_mm256_dpbusd_epi32(__m256i __S, __m256i __A, __m256i __B) {
20   // CHECK-LABEL: @test_mm256_dpbusd_epi32
21   // CHECK: @llvm.x86.avx512.vpdpbusd.256
22   return _mm256_dpbusd_epi32(__S, __A, __B);
23 }
24 
test_mm256_mask_dpbusds_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)25 __m256i test_mm256_mask_dpbusds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
26   // CHECK-LABEL: @test_mm256_mask_dpbusds_epi32
27   // CHECK: @llvm.x86.avx512.vpdpbusds.256
28   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
29   return _mm256_mask_dpbusds_epi32(__S, __U, __A, __B);
30 }
31 
test_mm256_maskz_dpbusds_epi32(__mmask8 __U,__m256i __S,__m256i __A,__m256i __B)32 __m256i test_mm256_maskz_dpbusds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
33   // CHECK-LABEL: @test_mm256_maskz_dpbusds_epi32
34   // CHECK: @llvm.x86.avx512.vpdpbusds.256
35   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
36   return _mm256_maskz_dpbusds_epi32(__U, __S, __A, __B);
37 }
38 
test_mm256_dpbusds_epi32(__m256i __S,__m256i __A,__m256i __B)39 __m256i test_mm256_dpbusds_epi32(__m256i __S, __m256i __A, __m256i __B) {
40   // CHECK-LABEL: @test_mm256_dpbusds_epi32
41   // CHECK: @llvm.x86.avx512.vpdpbusds.256
42   return _mm256_dpbusds_epi32(__S, __A, __B);
43 }
44 
test_mm256_mask_dpwssd_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)45 __m256i test_mm256_mask_dpwssd_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
46   // CHECK-LABEL: @test_mm256_mask_dpwssd_epi32
47   // CHECK: @llvm.x86.avx512.vpdpwssd.256
48   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
49   return _mm256_mask_dpwssd_epi32(__S, __U, __A, __B);
50 }
51 
test_mm256_maskz_dpwssd_epi32(__mmask8 __U,__m256i __S,__m256i __A,__m256i __B)52 __m256i test_mm256_maskz_dpwssd_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
53   // CHECK-LABEL: @test_mm256_maskz_dpwssd_epi32
54   // CHECK: @llvm.x86.avx512.vpdpwssd.256
55   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
56   return _mm256_maskz_dpwssd_epi32(__U, __S, __A, __B);
57 }
58 
test_mm256_dpwssd_epi32(__m256i __S,__m256i __A,__m256i __B)59 __m256i test_mm256_dpwssd_epi32(__m256i __S, __m256i __A, __m256i __B) {
60   // CHECK-LABEL: @test_mm256_dpwssd_epi32
61   // CHECK: @llvm.x86.avx512.vpdpwssd.256
62   return _mm256_dpwssd_epi32(__S, __A, __B);
63 }
64 
test_mm256_mask_dpwssds_epi32(__m256i __S,__mmask8 __U,__m256i __A,__m256i __B)65 __m256i test_mm256_mask_dpwssds_epi32(__m256i __S, __mmask8 __U, __m256i __A, __m256i __B) {
66   // CHECK-LABEL: @test_mm256_mask_dpwssds_epi32
67   // CHECK: @llvm.x86.avx512.vpdpwssds.256
68   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
69   return _mm256_mask_dpwssds_epi32(__S, __U, __A, __B);
70 }
71 
test_mm256_maskz_dpwssds_epi32(__mmask8 __U,__m256i __S,__m256i __A,__m256i __B)72 __m256i test_mm256_maskz_dpwssds_epi32(__mmask8 __U, __m256i __S, __m256i __A, __m256i __B) {
73   // CHECK-LABEL: @test_mm256_maskz_dpwssds_epi32
74   // CHECK: @llvm.x86.avx512.vpdpwssds.256
75   // CHECK: select <8 x i1> %{{.*}}, <8 x i32> %{{.*}}, <8 x i32> %{{.*}}
76   return _mm256_maskz_dpwssds_epi32(__U, __S, __A, __B);
77 }
78 
test_mm256_dpwssds_epi32(__m256i __S,__m256i __A,__m256i __B)79 __m256i test_mm256_dpwssds_epi32(__m256i __S, __m256i __A, __m256i __B) {
80   // CHECK-LABEL: @test_mm256_dpwssds_epi32
81   // CHECK: @llvm.x86.avx512.vpdpwssds.256
82   return _mm256_dpwssds_epi32(__S, __A, __B);
83 }
84 
test_mm_mask_dpbusd_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)85 __m128i test_mm_mask_dpbusd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
86   // CHECK-LABEL: @test_mm_mask_dpbusd_epi32
87   // CHECK: @llvm.x86.avx512.vpdpbusd.128
88   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
89   return _mm_mask_dpbusd_epi32(__S, __U, __A, __B);
90 }
91 
test_mm_maskz_dpbusd_epi32(__mmask8 __U,__m128i __S,__m128i __A,__m128i __B)92 __m128i test_mm_maskz_dpbusd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
93   // CHECK-LABEL: @test_mm_maskz_dpbusd_epi32
94   // CHECK: @llvm.x86.avx512.vpdpbusd.128
95   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
96   return _mm_maskz_dpbusd_epi32(__U, __S, __A, __B);
97 }
98 
test_mm_dpbusd_epi32(__m128i __S,__m128i __A,__m128i __B)99 __m128i test_mm_dpbusd_epi32(__m128i __S, __m128i __A, __m128i __B) {
100   // CHECK-LABEL: @test_mm_dpbusd_epi32
101   // CHECK: @llvm.x86.avx512.vpdpbusd.128
102   return _mm_dpbusd_epi32(__S, __A, __B);
103 }
104 
test_mm_mask_dpbusds_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)105 __m128i test_mm_mask_dpbusds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
106   // CHECK-LABEL: @test_mm_mask_dpbusds_epi32
107   // CHECK: @llvm.x86.avx512.vpdpbusds.128
108   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
109   return _mm_mask_dpbusds_epi32(__S, __U, __A, __B);
110 }
111 
test_mm_maskz_dpbusds_epi32(__mmask8 __U,__m128i __S,__m128i __A,__m128i __B)112 __m128i test_mm_maskz_dpbusds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
113   // CHECK-LABEL: @test_mm_maskz_dpbusds_epi32
114   // CHECK: @llvm.x86.avx512.vpdpbusds.128
115   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
116   return _mm_maskz_dpbusds_epi32(__U, __S, __A, __B);
117 }
118 
test_mm_dpbusds_epi32(__m128i __S,__m128i __A,__m128i __B)119 __m128i test_mm_dpbusds_epi32(__m128i __S, __m128i __A, __m128i __B) {
120   // CHECK-LABEL: @test_mm_dpbusds_epi32
121   // CHECK: @llvm.x86.avx512.vpdpbusds.128
122   return _mm_dpbusds_epi32(__S, __A, __B);
123 }
124 
test_mm_mask_dpwssd_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)125 __m128i test_mm_mask_dpwssd_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
126   // CHECK-LABEL: @test_mm_mask_dpwssd_epi32
127   // CHECK: @llvm.x86.avx512.vpdpwssd.128
128   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
129   return _mm_mask_dpwssd_epi32(__S, __U, __A, __B);
130 }
131 
test_mm_maskz_dpwssd_epi32(__mmask8 __U,__m128i __S,__m128i __A,__m128i __B)132 __m128i test_mm_maskz_dpwssd_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
133   // CHECK-LABEL: @test_mm_maskz_dpwssd_epi32
134   // CHECK: @llvm.x86.avx512.vpdpwssd.128
135   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
136   return _mm_maskz_dpwssd_epi32(__U, __S, __A, __B);
137 }
138 
test_mm_dpwssd_epi32(__m128i __S,__m128i __A,__m128i __B)139 __m128i test_mm_dpwssd_epi32(__m128i __S, __m128i __A, __m128i __B) {
140   // CHECK-LABEL: @test_mm_dpwssd_epi32
141   // CHECK: @llvm.x86.avx512.vpdpwssd.128
142   return _mm_dpwssd_epi32(__S, __A, __B);
143 }
144 
test_mm_mask_dpwssds_epi32(__m128i __S,__mmask8 __U,__m128i __A,__m128i __B)145 __m128i test_mm_mask_dpwssds_epi32(__m128i __S, __mmask8 __U, __m128i __A, __m128i __B) {
146   // CHECK-LABEL: @test_mm_mask_dpwssds_epi32
147   // CHECK: @llvm.x86.avx512.vpdpwssds.128
148   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
149   return _mm_mask_dpwssds_epi32(__S, __U, __A, __B);
150 }
151 
test_mm_maskz_dpwssds_epi32(__mmask8 __U,__m128i __S,__m128i __A,__m128i __B)152 __m128i test_mm_maskz_dpwssds_epi32(__mmask8 __U, __m128i __S, __m128i __A, __m128i __B) {
153   // CHECK-LABEL: @test_mm_maskz_dpwssds_epi32
154   // CHECK: @llvm.x86.avx512.vpdpwssds.128
155   // CHECK: select <4 x i1> %{{.*}}, <4 x i32> %{{.*}}, <4 x i32> %{{.*}}
156   return _mm_maskz_dpwssds_epi32(__U, __S, __A, __B);
157 }
158 
test_mm_dpwssds_epi32(__m128i __S,__m128i __A,__m128i __B)159 __m128i test_mm_dpwssds_epi32(__m128i __S, __m128i __A, __m128i __B) {
160   // CHECK-LABEL: @test_mm_dpwssds_epi32
161   // CHECK: @llvm.x86.avx512.vpdpwssds.128
162   return _mm_dpwssds_epi32(__S, __A, __B);
163 }
164 
165