1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64 -target-feature +avx10.2-512 -emit-llvm -o - | FileCheck %s
2 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i686 -target-feature +avx10.2-512 -emit-llvm -o - | FileCheck %s
7 __m512
test_mm512_dpph_ps(__m512 __W
, __m512h __A
, __m512h __B
) {
8 // CHECK-LABEL: @test_mm512_dpph_ps(
9 // CHECK: call <16 x float> @llvm.x86.avx10.vdpphps.512
10 return _mm512_dpph_ps(__W
, __A
, __B
);
13 __m512
test_mm512_mask_dpph_ps(__m512 __W
, __mmask16 __U
, __m512h __A
, __m512h __B
) {
14 // CHECK-LABEL: @test_mm512_mask_dpph_ps(
15 // CHECK: call <16 x float> @llvm.x86.avx10.vdpphps.512
16 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
17 return _mm512_mask_dpph_ps(__W
, __U
, __A
, __B
);
20 __m512
test_mm512_maskz_dpph_ps(__mmask16 __U
, __m512 __W
, __m512h __A
, __m512h __B
) {
21 // CHECK-LABEL: @test_mm512_maskz_dpph_ps(
22 // CHECK: call <16 x float> @llvm.x86.avx10.vdpphps.512
23 // CHECK: zeroinitializer
24 // CHECK: select <16 x i1> %{{.*}}, <16 x float> %{{.*}}, <16 x float> %{{.*}}
25 return _mm512_maskz_dpph_ps(__U
, __W
, __A
, __B
);
29 __m512i
test_mm512_mpsadbw_epu8(__m512i __A
, __m512i __B
) {
30 // CHECK-LABEL: @test_mm512_mpsadbw_epu8
31 // CHECK: @llvm.x86.avx10.vmpsadbw.512
32 return _mm512_mpsadbw_epu8(__A
, __B
, 17);
35 __m512i
test_mm512_mask_mpsadbw_epu8(__m512i __W
, __mmask32 __U
, __m512i __A
, __m512i __B
) {
36 // CHECK-LABEL: @test_mm512_mask_mpsadbw_epu8
37 // CHECK: @llvm.x86.avx10.vmpsadbw.512
38 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
39 return _mm512_mask_mpsadbw_epu8(__W
, __U
, __A
, __B
, 17);
42 __m512i
test_mm512_maskz_mpsadbw_epu8(__mmask32 __U
, __m512i __A
, __m512i __B
) {
43 // CHECK-LABEL: @test_mm512_maskz_mpsadbw_epu8
44 // CHECK: @llvm.x86.avx10.vmpsadbw.512
45 // CHECK: select <32 x i1> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}}
46 return _mm512_maskz_mpsadbw_epu8(__U
, __A
, __B
, 17);
50 __m512i
test_mm512_dpbssd_epi32(__m512i __W
, __m512i __A
, __m512i __B
) {
51 // CHECK-LABEL: @test_mm512_dpbssd_epi32(
52 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssd.512
53 return _mm512_dpbssd_epi32(__W
, __A
, __B
);
56 __m512i
test_mm512_mask_dpbssd_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
57 // CHECK-LABEL: @test_mm512_mask_dpbssd_epi32(
58 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssd.512
59 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
60 return _mm512_mask_dpbssd_epi32(__W
, __U
, __A
, __B
);
63 __m512i
test_mm512_maskz_dpbssd_epi32(__mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
64 // CHECK-LABEL: @test_mm512_maskz_dpbssd_epi32(
65 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssd.512
66 // CHECK: zeroinitializer
67 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
68 return _mm512_maskz_dpbssd_epi32(__U
, __W
, __A
, __B
);
71 __m512i
test_mm512_dpbssds_epi32(__m512i __W
, __m512i __A
, __m512i __B
) {
72 // CHECK-LABEL: @test_mm512_dpbssds_epi32(
73 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssds.512
74 return _mm512_dpbssds_epi32(__W
, __A
, __B
);
77 __m512i
test_mm512_mask_dpbssds_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
78 // CHECK-LABEL: @test_mm512_mask_dpbssds_epi32(
79 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssds.512
80 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
81 return _mm512_mask_dpbssds_epi32(__W
, __U
, __A
, __B
);
84 __m512i
test_mm512_maskz_dpbssds_epi32(__mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
85 // CHECK-LABEL: @test_mm512_maskz_dpbssds_epi32(
86 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbssds.512
87 // CHECK: zeroinitializer
88 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
89 return _mm512_maskz_dpbssds_epi32(__U
, __W
, __A
, __B
);
92 __m512i
test_mm512_dpbsud_epi32(__m512i __W
, __m512i __A
, __m512i __B
) {
93 // CHECK-LABEL: @test_mm512_dpbsud_epi32(
94 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsud.512
95 return _mm512_dpbsud_epi32(__W
, __A
, __B
);
98 __m512i
test_mm512_mask_dpbsud_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
99 // CHECK-LABEL: @test_mm512_mask_dpbsud_epi32(
100 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsud.512
101 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
102 return _mm512_mask_dpbsud_epi32(__W
, __U
, __A
, __B
);
105 __m512i
test_mm512_maskz_dpbsud_epi32(__mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
106 // CHECK-LABEL: @test_mm512_maskz_dpbsud_epi32(
107 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsud.512
108 // CHECK: zeroinitializer
109 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
110 return _mm512_maskz_dpbsud_epi32(__U
, __W
, __A
, __B
);
113 __m512i
test_mm512_dpbsuds_epi32(__m512i __W
, __m512i __A
, __m512i __B
) {
114 // CHECK-LABEL: @test_mm512_dpbsuds_epi32(
115 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsuds.512
116 return _mm512_dpbsuds_epi32(__W
, __A
, __B
);
119 __m512i
test_mm512_mask_dpbsuds_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
120 // CHECK-LABEL: @test_mm512_mask_dpbsuds_epi32(
121 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsuds.512
122 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
123 return _mm512_mask_dpbsuds_epi32(__W
, __U
, __A
, __B
);
126 __m512i
test_mm512_maskz_dpbsuds_epi32(__mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
127 // CHECK-LABEL: @test_mm512_maskz_dpbsuds_epi32(
128 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbsuds.512
129 // CHECK: zeroinitializer
130 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
131 return _mm512_maskz_dpbsuds_epi32(__U
, __W
, __A
, __B
);
134 __m512i
test_mm512_dpbuud_epi32(__m512i __W
, __m512i __A
, __m512i __B
) {
135 // CHECK-LABEL: @test_mm512_dpbuud_epi32(
136 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuud.512
137 return _mm512_dpbuud_epi32(__W
, __A
, __B
);
140 __m512i
test_mm512_mask_dpbuud_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
141 // CHECK-LABEL: @test_mm512_mask_dpbuud_epi32(
142 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuud.512
143 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
144 return _mm512_mask_dpbuud_epi32(__W
, __U
, __A
, __B
);
147 __m512i
test_mm512_maskz_dpbuud_epi32(__mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
148 // CHECK-LABEL: @test_mm512_maskz_dpbuud_epi32(
149 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuud.512
150 // CHECK: zeroinitializer
151 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
152 return _mm512_maskz_dpbuud_epi32(__U
, __W
, __A
, __B
);
155 __m512i
test_mm512_dpbuuds_epi32(__m512i __W
, __m512i __A
, __m512i __B
) {
156 // CHECK-LABEL: @test_mm512_dpbuuds_epi32(
157 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuuds.512
158 return _mm512_dpbuuds_epi32(__W
, __A
, __B
);
161 __m512i
test_mm512_mask_dpbuuds_epi32(__m512i __W
, __mmask16 __U
, __m512i __A
, __m512i __B
) {
162 // CHECK-LABEL: @test_mm512_mask_dpbuuds_epi32(
163 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuuds.512
164 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
165 return _mm512_mask_dpbuuds_epi32(__W
, __U
, __A
, __B
);
168 __m512i
test_mm512_maskz_dpbuuds_epi32(__mmask16 __U
, __m512i __W
, __m512i __A
, __m512i __B
) {
169 // CHECK-LABEL: @test_mm512_maskz_dpbuuds_epi32(
170 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpbuuds.512
171 // CHECK: zeroinitializer
172 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
173 return _mm512_maskz_dpbuuds_epi32(__U
, __W
, __A
, __B
);
177 __m512i
test_mm512_dpwsud_epi32(__m512i __A
, __m512i __B
, __m512i __C
) {
178 // CHECK-LABEL: @test_mm512_dpwsud_epi32(
179 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
180 return _mm512_dpwsud_epi32(__A
, __B
, __C
);
183 __m512i
test_mm512_mask_dpwsud_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
184 // CHECK-LABEL: @test_mm512_mask_dpwsud_epi32(
185 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
186 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
187 return _mm512_mask_dpwsud_epi32(__A
, __B
, __C
, __D
);
190 __m512i
test_mm512_maskz_dpwsud_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
191 // CHECK-LABEL: @test_mm512_maskz_dpwsud_epi32(
192 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
193 // CHECK: zeroinitializer
194 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
195 return _mm512_maskz_dpwsud_epi32(__A
, __B
, __C
, __D
);
198 __m512i
test_mm512_dpwsuds_epi32(__m512i __A
, __m512i __B
, __m512i __C
) {
199 // CHECK-LABEL: @test_mm512_dpwsuds_epi32(
200 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
201 return _mm512_dpwsuds_epi32(__A
, __B
, __C
);
204 __m512i
test_mm512_mask_dpwsuds_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
205 // CHECK-LABEL: @test_mm512_mask_dpwsuds_epi32(
206 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
207 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
208 return _mm512_mask_dpwsuds_epi32(__A
, __B
, __C
, __D
);
211 __m512i
test_mm512_maskz_dpwsuds_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
212 // CHECK-LABEL: @test_mm512_maskz_dpwsuds_epi32(
213 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwsuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
214 // CHECK: zeroinitializer
215 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
216 return _mm512_maskz_dpwsuds_epi32(__A
, __B
, __C
, __D
);
219 __m512i
test_mm512_dpwusd_epi32(__m512i __A
, __m512i __B
, __m512i __C
) {
220 // CHECK-LABEL: @test_mm512_dpwusd_epi32(
221 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusd.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
222 return _mm512_dpwusd_epi32(__A
, __B
, __C
);
225 __m512i
test_mm512_mask_dpwusd_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
226 // CHECK-LABEL: @test_mm512_mask_dpwusd_epi32(
227 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusd.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
228 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
229 return _mm512_mask_dpwusd_epi32(__A
, __B
, __C
, __D
);
232 __m512i
test_mm512_maskz_dpwusd_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
233 // CHECK-LABEL: @test_mm512_maskz_dpwusd_epi32(
234 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusd.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
235 // CHECK: zeroinitializer
236 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
237 return _mm512_maskz_dpwusd_epi32(__A
, __B
, __C
, __D
);
240 __m512i
test_mm512_dpwusds_epi32(__m512i __A
, __m512i __B
, __m512i __C
) {
241 // CHECK-LABEL: @test_mm512_dpwusds_epi32(
242 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
243 return _mm512_dpwusds_epi32(__A
, __B
, __C
);
246 __m512i
test_mm512_mask_dpwusds_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
247 // CHECK-LABEL: @test_mm512_mask_dpwusds_epi32(
248 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
249 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
250 return _mm512_mask_dpwusds_epi32(__A
, __B
, __C
, __D
);
253 __m512i
test_mm512_maskz_dpwusds_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
254 // CHECK-LABEL: @test_mm512_maskz_dpwusds_epi32(
255 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwusds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
256 // CHECK: zeroinitializer
257 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
258 return _mm512_maskz_dpwusds_epi32(__A
, __B
, __C
, __D
);
261 __m512i
test_mm512_dpwuud_epi32(__m512i __A
, __m512i __B
, __m512i __C
) {
262 // CHECK-LABEL: @test_mm512_dpwuud_epi32(
263 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
264 return _mm512_dpwuud_epi32(__A
, __B
, __C
);
267 __m512i
test_mm512_mask_dpwuud_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
268 // CHECK-LABEL: @test_mm512_mask_dpwuud_epi32(
269 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
270 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
271 return _mm512_mask_dpwuud_epi32(__A
, __B
, __C
, __D
);
274 __m512i
test_mm512_maskz_dpwuud_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
275 // CHECK-LABEL: @test_mm512_maskz_dpwuud_epi32(
276 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuud.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
277 // CHECK: zeroinitializer
278 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
279 return _mm512_maskz_dpwuud_epi32(__A
, __B
, __C
, __D
);
282 __m512i
test_mm512_dpwuuds_epi32(__m512i __A
, __m512i __B
, __m512i __C
) {
283 // CHECK-LABEL: @test_mm512_dpwuuds_epi32(
284 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
285 return _mm512_dpwuuds_epi32(__A
, __B
, __C
);
288 __m512i
test_mm512_mask_dpwuuds_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
289 // CHECK-LABEL: @test_mm512_mask_dpwuuds_epi32(
290 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
291 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
292 return _mm512_mask_dpwuuds_epi32(__A
, __B
, __C
, __D
);
295 __m512i
test_mm512_maskz_dpwuuds_epi32(__m512i __A
, __mmask16 __B
, __m512i __C
, __m512i __D
) {
296 // CHECK-LABEL: @test_mm512_maskz_dpwuuds_epi32(
297 // CHECK: call <16 x i32> @llvm.x86.avx10.vpdpwuuds.512(<16 x i32> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}})
298 // CHECK: zeroinitializer
299 // CHECK: select <16 x i1> %{{.*}}, <16 x i32> %{{.*}}, <16 x i32> %{{.*}}
300 return _mm512_maskz_dpwuuds_epi32(__A
, __B
, __C
, __D
);