1 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=x86_64 -target-feature +avx10.2-512 -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s
2 // RUN: %clang_cc1 -flax-vector-conversions=none -ffreestanding %s -triple=i386 -target-feature +avx10.2-512 -emit-llvm -o - -Wno-invalid-feature-combination -Wall -Werror | FileCheck %s
6 __m512bh
test_mm512_setzero_pbh() {
7 // CHECK-LABEL: @test_mm512_setzero_pbh
8 // CHECK: zeroinitializer
9 return _mm512_setzero_pbh();
12 __m512bh
test_mm512_undefined_pbh(void) {
13 // CHECK-LABEL: @test_mm512_undefined_pbh
14 // CHECK: ret <32 x bfloat> zeroinitializer
15 return _mm512_undefined_pbh();
18 __m512bh
test_mm512_set1_pbh(__bf16 h
) {
19 // CHECK-LABEL: @test_mm512_set1_pbh
20 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 0
21 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1
22 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2
23 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3
24 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 4
25 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 5
26 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 6
27 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 7
28 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 8
29 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 9
30 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 10
31 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 11
32 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 12
33 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 13
34 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 14
35 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 15
36 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 16
37 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 17
38 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 18
39 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 19
40 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 20
41 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 21
42 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 22
43 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 23
44 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 24
45 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 25
46 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 26
47 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 27
48 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 28
49 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 29
50 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 30
51 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 31
52 return _mm512_set1_pbh(h
);
55 __m512bh
test_mm512_set_pbh(__bf16 bf1
, __bf16 bf2
, __bf16 bf3
, __bf16 bf4
,
56 __bf16 bf5
, __bf16 bf6
, __bf16 bf7
, __bf16 bf8
,
57 __bf16 bf9
, __bf16 bf10
, __bf16 bf11
, __bf16 bf12
,
58 __bf16 bf13
, __bf16 bf14
, __bf16 bf15
, __bf16 bf16
,
59 __bf16 bf17
, __bf16 bf18
, __bf16 bf19
, __bf16 bf20
,
60 __bf16 bf21
, __bf16 bf22
, __bf16 bf23
, __bf16 bf24
,
61 __bf16 bf25
, __bf16 bf26
, __bf16 bf27
, __bf16 bf28
,
62 __bf16 bf29
, __bf16 bf30
, __bf16 bf31
, __bf16 bf32
) {
63 // CHECK-LABEL: @test_mm512_set_pbh
64 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 0
65 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1
66 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2
67 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3
68 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 4
69 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 5
70 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 6
71 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 7
72 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 8
73 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 9
74 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 10
75 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 11
76 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 12
77 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 13
78 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 14
79 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 15
80 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 16
81 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 17
82 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 18
83 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 19
84 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 20
85 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 21
86 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 22
87 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 23
88 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 24
89 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 25
90 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 26
91 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 27
92 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 28
93 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 29
94 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 30
95 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 31
96 return _mm512_set_pbh(bf1
, bf2
, bf3
, bf4
, bf5
, bf6
, bf7
, bf8
,
97 bf9
, bf10
, bf11
, bf12
, bf13
, bf14
, bf15
, bf16
,
98 bf17
, bf18
, bf19
, bf20
, bf21
, bf22
, bf23
, bf24
,
99 bf25
, bf26
, bf27
, bf28
, bf29
, bf30
, bf31
, bf32
);
102 __m512bh
test_mm512_setr_pbh(__bf16 bf1
, __bf16 bf2
, __bf16 bf3
, __bf16 bf4
,
103 __bf16 bf5
, __bf16 bf6
, __bf16 bf7
, __bf16 bf8
,
104 __bf16 bf9
, __bf16 bf10
, __bf16 bf11
, __bf16 bf12
,
105 __bf16 bf13
, __bf16 bf14
, __bf16 bf15
, __bf16 bf16
,
106 __bf16 bf17
, __bf16 bf18
, __bf16 bf19
, __bf16 bf20
,
107 __bf16 bf21
, __bf16 bf22
, __bf16 bf23
, __bf16 bf24
,
108 __bf16 bf25
, __bf16 bf26
, __bf16 bf27
, __bf16 bf28
,
109 __bf16 bf29
, __bf16 bf30
, __bf16 bf31
, __bf16 bf32
) {
110 // CHECK-LABEL: @test_mm512_setr_pbh
111 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 0
112 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 1
113 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 2
114 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 3
115 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 4
116 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 5
117 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 6
118 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 7
119 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 8
120 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 9
121 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 10
122 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 11
123 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 12
124 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 13
125 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 14
126 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 15
127 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 16
128 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 17
129 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 18
130 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 19
131 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 20
132 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 21
133 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 22
134 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 23
135 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 24
136 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 25
137 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 26
138 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 27
139 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 28
140 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 29
141 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 30
142 // CHECK: insertelement <32 x bfloat> {{.*}}, i32 31
143 return _mm512_setr_pbh(bf1
, bf2
, bf3
, bf4
, bf5
, bf6
, bf7
, bf8
,
144 bf9
, bf10
, bf11
, bf12
, bf13
, bf14
, bf15
, bf16
,
145 bf17
, bf18
, bf19
, bf20
, bf21
, bf22
, bf23
, bf24
,
146 bf25
, bf26
, bf27
, bf28
, bf29
, bf30
, bf31
, bf32
);
149 __m512
test_mm512_castpbf16_ps(__m512bh A
) {
150 // CHECK-LABEL: test_mm512_castpbf16_ps
151 // CHECK: bitcast <32 x bfloat> %{{.*}} to <16 x float>
152 return _mm512_castpbf16_ps(A
);
155 __m512d
test_mm512_castpbf16_pd(__m512bh A
) {
156 // CHECK-LABEL: test_mm512_castpbf16_pd
157 // CHECK: bitcast <32 x bfloat> %{{.*}} to <8 x double>
158 return _mm512_castpbf16_pd(A
);
161 __m512i
test_mm512_castpbf16_si512(__m512bh A
) {
162 // CHECK-LABEL: test_mm512_castpbf16_si512
163 // CHECK: bitcast <32 x bfloat> %{{.*}} to <8 x i64>
164 return _mm512_castpbf16_si512(A
);
167 __m512bh
test_mm512_castps_pbh(__m512 A
) {
168 // CHECK-LABEL: test_mm512_castps_pbh
169 // CHECK: bitcast <16 x float> %{{.*}} to <32 x bfloat>
170 return _mm512_castps_pbh(A
);
173 __m512bh
test_mm512_castpd_pbh(__m512d A
) {
174 // CHECK-LABEL: test_mm512_castpd_pbh
175 // CHECK: bitcast <8 x double> %{{.*}} to <32 x bfloat>
176 return _mm512_castpd_pbh(A
);
179 __m512bh
test_mm512_castsi512_pbh(__m512i A
) {
180 // CHECK-LABEL: test_mm512_castsi512_pbh
181 // CHECK: bitcast <8 x i64> %{{.*}} to <32 x bfloat>
182 return _mm512_castsi512_pbh(A
);
185 __m128bh
test_mm512_castpbf16512_pbh128(__m512bh __a
) {
186 // CHECK-LABEL: test_mm512_castpbf16512_pbh128
187 // CHECK: shufflevector <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <8 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7>
188 return _mm512_castpbf16512_pbh128(__a
);
191 __m256bh
test_mm512_castpbf16512_pbh256(__m512bh __a
) {
192 // CHECK-LABEL: test_mm512_castpbf16512_pbh256
193 // CHECK: shufflevector <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <16 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
194 return _mm512_castpbf16512_pbh256(__a
);
197 __m512bh
test_mm512_castpbf16128_pbh512(__m128bh __a
) {
198 // CHECK-LABEL: test_mm512_castpbf16128_pbh512
199 // CHECK: shufflevector <8 x bfloat> %{{.*}}, <8 x bfloat> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
200 return _mm512_castpbf16128_pbh512(__a
);
203 __m512bh
test_mm512_castpbf16256_pbh512(__m256bh __a
) {
204 // CHECK-LABEL: test_mm512_castpbf16256_pbh512
205 // CHECK: shufflevector <16 x bfloat> %{{.*}}, <16 x bfloat> %{{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison, i32 poison>
206 return _mm512_castpbf16256_pbh512(__a
);
209 __m512bh
test_mm512_zextpbf16128_pbh512(__m128bh __a
) {
210 // CHECK-LABEL: test_mm512_zextpbf16128_pbh512
211 // CHECK: shufflevector <8 x bfloat> %{{.*}}, <8 x bfloat> {{.*}}, <32 x i32> <i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15>
212 return _mm512_zextpbf16128_pbh512(__a
);
215 __m512bh
test_mm512_zextpbf16256_pbh512(__m256bh __a
) {
216 // CHECK-LABEL: test_mm512_zextpbf16256_pbh512
217 // CHECK: shufflevector <16 x bfloat> %{{.*}}, <16 x bfloat> {{.*}}, <32 x i32>
218 return _mm512_zextpbf16256_pbh512(__a
);
221 __m512bh
test_mm512_abs_pbh(__m512bh a
) {
222 // CHECK-LABEL: @test_mm512_abs_pbh
223 // CHECK: and <16 x i32>
224 return _mm512_abs_pbh(a
);
229 __m512bh
test_mm512_load_pbh(void *p
) {
230 // CHECK-LABEL: @test_mm512_load_pbh
231 // CHECK: load <32 x bfloat>, ptr %{{.*}}, align 64
232 return _mm512_load_pbh(p
);
235 __m512bh
test_mm512_loadu_pbh(void *p
) {
236 // CHECK-LABEL: @test_mm512_loadu_pbh
237 // CHECK: load <32 x bfloat>, ptr {{.*}}, align 1{{$}}
238 return _mm512_loadu_pbh(p
);
241 void test_mm512_store_pbh(void *p
, __m512bh a
) {
242 // CHECK-LABEL: @test_mm512_store_pbh
243 // CHECK: store <32 x bfloat> %{{.*}}, ptr %{{.*}}, align 64
244 _mm512_store_pbh(p
, a
);
247 void test_mm512_storeu_pbh(void *p
, __m512bh a
) {
248 // CHECK-LABEL: @test_mm512_storeu_pbh
249 // CHECK: store <32 x bfloat> %{{.*}}, ptr %{{.*}}, align 1{{$}}
250 // CHECK-NEXT: ret void
251 _mm512_storeu_pbh(p
, a
);
254 __m512bh
test_mm512_mask_blend_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __W
) {
255 // CHECK-LABEL: @test_mm512_mask_blend_pbh
256 // CHECK: %{{.*}} = bitcast i32 %{{.*}} to <32 x i1>
257 // CHECK: %{{.*}} = select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
258 return _mm512_mask_blend_pbh(__U
, __A
, __W
);
261 __m512bh
test_mm512_permutex2var_pbh(__m512bh __A
, __m512i __I
, __m512bh __B
) {
262 // CHECK-LABEL: @test_mm512_permutex2var_pbh
263 // CHECK: %{{.*}} = bitcast <32 x bfloat> %{{.*}} to <32 x i16>
264 // CHECK: %{{.*}} = bitcast <8 x i64> %{{.*}} to <32 x i16>
265 // CHECK: %{{.*}} = bitcast <32 x bfloat> %{{.*}} to <32 x i16>
266 // CHECK: %{{.*}} = call <32 x i16> @llvm.x86.avx512.vpermi2var.hi.512(<32 x i16> %{{.*}}, <32 x i16> %{{.*}}, <32 x i16> %{{.*}})
267 // CHECK: %{{.*}} = bitcast <32 x i16> %{{.*}} to <32 x bfloat>
268 return _mm512_permutex2var_pbh(__A
, __I
, __B
);
271 __m512bh
test_mm512_permutexvar_epi16(__m512i __A
, __m512bh __B
) {
272 // CHECK-LABEL: @test_mm512_permutexvar_epi16
273 // CHECK: %{{.*}} = bitcast <32 x bfloat> %{{.*}} to <32 x i16>
274 // CHECK: %{{.*}} = bitcast <8 x i64> %{{.*}} to <32 x i16>
275 // CHECK: %{{.*}} = call <32 x i16> @llvm.x86.avx512.permvar.hi.512(<32 x i16> %{{.*}}, <32 x i16> %{{.*}})
276 // CHECK: %{{.*}} = bitcast <32 x i16> %{{.*}} to <32 x bfloat>
277 return _mm512_permutexvar_pbh(__A
, __B
);
280 __m512bh
test_mm512_addne_pbh(__m512bh __A
, __m512bh __B
) {
281 // CHECK-LABEL: @test_mm512_addne_pbh
282 // CHECK: %{{.*}} = fadd <32 x bfloat> %{{.*}}, %{{.*}}
283 return _mm512_addne_pbh(__A
, __B
);
286 __m512bh
test_mm512_mask_addne_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
, __m512bh __B
) {
287 // CHECK: %{{.*}} = fadd <32 x bfloat> %{{.*}}, %{{.*}}
288 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
289 return _mm512_mask_addne_pbh(__W
, __U
, __A
, __B
);
292 __m512bh
test_mm512_maskz_addne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
) {
293 // CHECK: %{{.*}} = fadd <32 x bfloat> %{{.*}}, %{{.*}}
294 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
295 return _mm512_maskz_addne_pbh(__U
, __A
, __B
);
298 __m512bh
test_mm512_subne_pbh(__m512bh __A
, __m512bh __B
) {
299 // CHECK-LABEL: @test_mm512_subne_pbh
300 // CHECK: %{{.*}} = fsub <32 x bfloat> %{{.*}}, %{{.*}}
301 return _mm512_subne_pbh(__A
, __B
);
304 __m512bh
test_mm512_mask_subne_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
, __m512bh __B
) {
305 // CHECK: %{{.*}} = fsub <32 x bfloat> %{{.*}}, %{{.*}}
306 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
307 return _mm512_mask_subne_pbh(__W
, __U
, __A
, __B
);
310 __m512bh
test_mm512_maskz_subne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
) {
311 // CHECK: %{{.*}} = fsub <32 x bfloat> %{{.*}}, %{{.*}}
312 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
313 return _mm512_maskz_subne_pbh(__U
, __A
, __B
);
316 __m512bh
test_mm512_mulne_pbh(__m512bh __A
, __m512bh __B
) {
317 // CHECK-LABEL: @test_mm512_mulne_pbh
318 // CHECK: %{{.*}} = fmul <32 x bfloat> %{{.*}}, %{{.*}}
319 return _mm512_mulne_pbh(__A
, __B
);
322 __m512bh
test_mm512_mask_mulne_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
, __m512bh __B
) {
323 // CHECK: %{{.*}} = fmul <32 x bfloat> %{{.*}}, %{{.*}}
324 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
325 return _mm512_mask_mulne_pbh(__W
, __U
, __A
, __B
);
328 __m512bh
test_mm512_maskz_mulne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
) {
329 // CHECK: %{{.*}} = fmul <32 x bfloat> %{{.*}}, %{{.*}}
330 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
331 return _mm512_maskz_mulne_pbh(__U
, __A
, __B
);
334 __m512bh
test_mm512_divne_pbh(__m512bh __A
, __m512bh __B
) {
335 // CHECK-LABEL: @test_mm512_divne_pbh
336 // CHECK: %{{.*}} = fdiv <32 x bfloat> %{{.*}}, %{{.*}}
337 return _mm512_divne_pbh(__A
, __B
);
340 __m512bh
test_mm512_mask_divne_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
, __m512bh __B
) {
341 // CHECK: %{{.*}} = fdiv <32 x bfloat> %{{.*}}, %{{.*}}
342 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
343 return _mm512_mask_divne_pbh(__W
, __U
, __A
, __B
);
346 __m512bh
test_mm512_maskz_divne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
) {
347 // CHECK: %{{.*}} = fdiv <32 x bfloat> %{{.*}}, %{{.*}}
348 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
349 return _mm512_maskz_divne_pbh(__U
, __A
, __B
);
352 __m512bh
test_mm512_max_pbh(__m512bh __A
, __m512bh __B
) {
353 // CHECK-LABEL: @test_mm512_max_pbh
354 // CHECK: @llvm.x86.avx10.vmaxpbf16512(
355 return _mm512_max_pbh(__A
, __B
);
358 __m512bh
test_mm512_mask_max_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
, __m512bh __B
) {
359 // CHECK: @llvm.x86.avx10.vmaxpbf16512
360 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
361 return _mm512_mask_max_pbh(__W
, __U
, __A
, __B
);
364 __m512bh
test_mm512_maskz_max_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
) {
365 // CHECK: @llvm.x86.avx10.vmaxpbf16512
366 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
367 return _mm512_maskz_max_pbh(__U
, __A
, __B
);
370 __m512bh
test_mm512_min_pbh(__m512bh __A
, __m512bh __B
) {
371 // CHECK-LABEL: @test_mm512_min_pbh
372 // CHECK: @llvm.x86.avx10.vminpbf16512(
373 return _mm512_min_pbh(__A
, __B
);
376 __m512bh
test_mm512_mask_min_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
, __m512bh __B
) {
377 // CHECK: @llvm.x86.avx10.vminpbf16512
378 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
379 return _mm512_mask_min_pbh(__W
, __U
, __A
, __B
);
382 __m512bh
test_mm512_maskz_min_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
) {
383 // CHECK: @llvm.x86.avx10.vminpbf16512
384 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
385 return _mm512_maskz_min_pbh(__U
, __A
, __B
);
388 __mmask32
test_mm512_cmp_pbh_mask_eq_oq(__m512bh a
, __m512bh b
) {
389 // CHECK-LABEL: @test_mm512_cmp_pbh_mask_eq_oq
390 // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}
391 return _mm512_cmp_pbh_mask(a
, b
, _CMP_EQ_OQ
);
394 __mmask32
test_mm512_cmp_pbh_mask_lt_os(__m512bh a
, __m512bh b
) {
395 // CHECK-LABEL: test_mm512_cmp_pbh_mask_lt_os
396 // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}
397 return _mm512_cmp_pbh_mask(a
, b
, _CMP_LT_OS
);
400 __mmask32
test_mm512_cmp_pbh_mask_le_os(__m512bh a
, __m512bh b
) {
401 // CHECK-LABEL: test_mm512_cmp_pbh_mask_le_os
402 // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}
403 return _mm512_cmp_pbh_mask(a
, b
, _CMP_LE_OS
);
406 __mmask32
test_mm512_cmp_pbh_mask_unord_q(__m512bh a
, __m512bh b
) {
407 // CHECK-LABEL: test_mm512_cmp_pbh_mask_unord_q
408 // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}
409 return _mm512_cmp_pbh_mask(a
, b
, _CMP_UNORD_Q
);
412 __mmask32
test_mm512_cmp_pbh_mask_neq_uq(__m512bh a
, __m512bh b
) {
413 // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_uq
414 // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}
415 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NEQ_UQ
);
418 __mmask32
test_mm512_cmp_pbh_mask_nlt_us(__m512bh a
, __m512bh b
) {
419 // CHECK-LABEL: test_mm512_cmp_pbh_mask_nlt_us
420 // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}
421 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NLT_US
);
424 __mmask32
test_mm512_cmp_pbh_mask_nle_us(__m512bh a
, __m512bh b
) {
425 // CHECK-LABEL: test_mm512_cmp_pbh_mask_nle_us
426 // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}
427 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NLE_US
);
430 __mmask32
test_mm512_cmp_pbh_mask_ord_q(__m512bh a
, __m512bh b
) {
431 // CHECK-LABEL: test_mm512_cmp_pbh_mask_ord_q
432 // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}
433 return _mm512_cmp_pbh_mask(a
, b
, _CMP_ORD_Q
);
436 __mmask32
test_mm512_cmp_pbh_mask_eq_uq(__m512bh a
, __m512bh b
) {
437 // CHECK-LABEL: test_mm512_cmp_pbh_mask_eq_uq
438 // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}
439 return _mm512_cmp_pbh_mask(a
, b
, _CMP_EQ_UQ
);
442 __mmask32
test_mm512_cmp_pbh_mask_nge_us(__m512bh a
, __m512bh b
) {
443 // CHECK-LABEL: test_mm512_cmp_pbh_mask_nge_us
444 // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}
445 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NGE_US
);
448 __mmask32
test_mm512_cmp_pbh_mask_ngt_us(__m512bh a
, __m512bh b
) {
449 // CHECK-LABEL: test_mm512_cmp_pbh_mask_ngt_us
450 // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}
451 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NGT_US
);
454 __mmask32
test_mm512_cmp_pbh_mask_false_oq(__m512bh a
, __m512bh b
) {
455 // CHECK-LABEL: test_mm512_cmp_pbh_mask_false_oq
456 // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}
457 return _mm512_cmp_pbh_mask(a
, b
, _CMP_FALSE_OQ
);
460 __mmask32
test_mm512_cmp_pbh_mask_neq_oq(__m512bh a
, __m512bh b
) {
461 // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_oq
462 // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}
463 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NEQ_OQ
);
466 __mmask32
test_mm512_cmp_pbh_mask_ge_os(__m512bh a
, __m512bh b
) {
467 // CHECK-LABEL: test_mm512_cmp_pbh_mask_ge_os
468 // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}
469 return _mm512_cmp_pbh_mask(a
, b
, _CMP_GE_OS
);
472 __mmask32
test_mm512_cmp_pbh_mask_gt_os(__m512bh a
, __m512bh b
) {
473 // CHECK-LABEL: test_mm512_cmp_pbh_mask_gt_os
474 // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}
475 return _mm512_cmp_pbh_mask(a
, b
, _CMP_GT_OS
);
478 __mmask32
test_mm512_cmp_pbh_mask_true_uq(__m512bh a
, __m512bh b
) {
479 // CHECK-LABEL: test_mm512_cmp_pbh_mask_true_uq
480 // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}
481 return _mm512_cmp_pbh_mask(a
, b
, _CMP_TRUE_UQ
);
484 __mmask32
test_mm512_cmp_pbh_mask_eq_os(__m512bh a
, __m512bh b
) {
485 // CHECK-LABEL: test_mm512_cmp_pbh_mask_eq_os
486 // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}
487 return _mm512_cmp_pbh_mask(a
, b
, _CMP_EQ_OS
);
490 __mmask32
test_mm512_cmp_pbh_mask_lt_oq(__m512bh a
, __m512bh b
) {
491 // CHECK-LABEL: test_mm512_cmp_pbh_mask_lt_oq
492 // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}
493 return _mm512_cmp_pbh_mask(a
, b
, _CMP_LT_OQ
);
496 __mmask32
test_mm512_cmp_pbh_mask_le_oq(__m512bh a
, __m512bh b
) {
497 // CHECK-LABEL: test_mm512_cmp_pbh_mask_le_oq
498 // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}
499 return _mm512_cmp_pbh_mask(a
, b
, _CMP_LE_OQ
);
502 __mmask32
test_mm512_cmp_pbh_mask_unord_s(__m512bh a
, __m512bh b
) {
503 // CHECK-LABEL: test_mm512_cmp_pbh_mask_unord_s
504 // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}
505 return _mm512_cmp_pbh_mask(a
, b
, _CMP_UNORD_S
);
508 __mmask32
test_mm512_cmp_pbh_mask_neq_us(__m512bh a
, __m512bh b
) {
509 // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_us
510 // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}
511 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NEQ_US
);
514 __mmask32
test_mm512_cmp_pbh_mask_nlt_uq(__m512bh a
, __m512bh b
) {
515 // CHECK-LABEL: test_mm512_cmp_pbh_mask_nlt_uq
516 // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}
517 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NLT_UQ
);
520 __mmask32
test_mm512_cmp_pbh_mask_nle_uq(__m512bh a
, __m512bh b
) {
521 // CHECK-LABEL: test_mm512_cmp_pbh_mask_nle_uq
522 // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}
523 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NLE_UQ
);
526 __mmask32
test_mm512_cmp_pbh_mask_ord_s(__m512bh a
, __m512bh b
) {
527 // CHECK-LABEL: test_mm512_cmp_pbh_mask_ord_s
528 // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}
529 return _mm512_cmp_pbh_mask(a
, b
, _CMP_ORD_S
);
532 __mmask32
test_mm512_cmp_pbh_mask_eq_us(__m512bh a
, __m512bh b
) {
533 // CHECK-LABEL: test_mm512_cmp_pbh_mask_eq_us
534 // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}
535 return _mm512_cmp_pbh_mask(a
, b
, _CMP_EQ_US
);
538 __mmask32
test_mm512_cmp_pbh_mask_nge_uq(__m512bh a
, __m512bh b
) {
539 // CHECK-LABEL: test_mm512_cmp_pbh_mask_nge_uq
540 // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}
541 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NGE_UQ
);
544 __mmask32
test_mm512_cmp_pbh_mask_ngt_uq(__m512bh a
, __m512bh b
) {
545 // CHECK-LABEL: test_mm512_cmp_pbh_mask_ngt_uq
546 // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}
547 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NGT_UQ
);
550 __mmask32
test_mm512_cmp_pbh_mask_false_os(__m512bh a
, __m512bh b
) {
551 // CHECK-LABEL: test_mm512_cmp_pbh_mask_false_os
552 // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}
553 return _mm512_cmp_pbh_mask(a
, b
, _CMP_FALSE_OS
);
556 __mmask32
test_mm512_cmp_pbh_mask_neq_os(__m512bh a
, __m512bh b
) {
557 // CHECK-LABEL: test_mm512_cmp_pbh_mask_neq_os
558 // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}
559 return _mm512_cmp_pbh_mask(a
, b
, _CMP_NEQ_OS
);
562 __mmask32
test_mm512_cmp_pbh_mask_ge_oq(__m512bh a
, __m512bh b
) {
563 // CHECK-LABEL: test_mm512_cmp_pbh_mask_ge_oq
564 // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}
565 return _mm512_cmp_pbh_mask(a
, b
, _CMP_GE_OQ
);
568 __mmask32
test_mm512_cmp_pbh_mask_gt_oq(__m512bh a
, __m512bh b
) {
569 // CHECK-LABEL: test_mm512_cmp_pbh_mask_gt_oq
570 // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}
571 return _mm512_cmp_pbh_mask(a
, b
, _CMP_GT_OQ
);
574 __mmask32
test_mm512_cmp_pbh_mask_true_us(__m512bh a
, __m512bh b
) {
575 // CHECK-LABEL: test_mm512_cmp_pbh_mask_true_us
576 // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}
577 return _mm512_cmp_pbh_mask(a
, b
, _CMP_TRUE_US
);
580 __mmask32
test_mm512_mask_cmp_pbh_mask_eq_oq(__mmask32 m
, __m512bh a
, __m512bh b
) {
581 // CHECK-LABEL: @test_mm512_mask_cmp_pbh_mask_eq_oq
582 // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}
583 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
584 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_EQ_OQ
);
587 __mmask32
test_mm512_mask_cmp_pbh_mask_lt_os(__mmask32 m
, __m512bh a
, __m512bh b
) {
588 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_lt_os
589 // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}
590 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
591 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_LT_OS
);
594 __mmask32
test_mm512_mask_cmp_pbh_mask_le_os(__mmask32 m
, __m512bh a
, __m512bh b
) {
595 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_le_os
596 // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}
597 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
598 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_LE_OS
);
601 __mmask32
test_mm512_mask_cmp_pbh_mask_unord_q(__mmask32 m
, __m512bh a
, __m512bh b
) {
602 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_unord_q
603 // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}
604 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_UNORD_Q
);
607 __mmask32
test_mm512_mask_cmp_pbh_mask_neq_uq(__mmask32 m
, __m512bh a
, __m512bh b
) {
608 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_uq
609 // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}
610 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
611 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NEQ_UQ
);
614 __mmask32
test_mm512_mask_cmp_pbh_mask_nlt_us(__mmask32 m
, __m512bh a
, __m512bh b
) {
615 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nlt_us
616 // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}
617 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
618 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NLT_US
);
621 __mmask32
test_mm512_mask_cmp_pbh_mask_nle_us(__mmask32 m
, __m512bh a
, __m512bh b
) {
622 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nle_us
623 // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}
624 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
625 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NLE_US
);
628 __mmask32
test_mm512_mask_cmp_pbh_mask_ord_q(__mmask32 m
, __m512bh a
, __m512bh b
) {
629 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ord_q
630 // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}
631 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
632 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_ORD_Q
);
635 __mmask32
test_mm512_mask_cmp_pbh_mask_eq_uq(__mmask32 m
, __m512bh a
, __m512bh b
) {
636 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_eq_uq
637 // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}
638 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
639 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_EQ_UQ
);
642 __mmask32
test_mm512_mask_cmp_pbh_mask_nge_us(__mmask32 m
, __m512bh a
, __m512bh b
) {
643 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nge_us
644 // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}
645 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
646 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NGE_US
);
649 __mmask32
test_mm512_mask_cmp_pbh_mask_ngt_us(__mmask32 m
, __m512bh a
, __m512bh b
) {
650 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ngt_us
651 // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}
652 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
653 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NGT_US
);
656 __mmask32
test_mm512_mask_cmp_pbh_mask_false_oq(__mmask32 m
, __m512bh a
, __m512bh b
) {
657 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_false_oq
658 // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}
659 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
660 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_FALSE_OQ
);
663 __mmask32
test_mm512_mask_cmp_pbh_mask_neq_oq(__mmask32 m
, __m512bh a
, __m512bh b
) {
664 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_oq
665 // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}
666 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
667 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NEQ_OQ
);
670 __mmask32
test_mm512_mask_cmp_pbh_mask_ge_os(__mmask32 m
, __m512bh a
, __m512bh b
) {
671 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ge_os
672 // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}
673 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
674 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_GE_OS
);
677 __mmask32
test_mm512_mask_cmp_pbh_mask_gt_os(__mmask32 m
, __m512bh a
, __m512bh b
) {
678 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_gt_os
679 // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}
680 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
681 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_GT_OS
);
684 __mmask32
test_mm512_mask_cmp_pbh_mask_true_uq(__mmask32 m
, __m512bh a
, __m512bh b
) {
685 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_true_uq
686 // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}
687 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
688 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_TRUE_UQ
);
691 __mmask32
test_mm512_mask_cmp_pbh_mask_eq_os(__mmask32 m
, __m512bh a
, __m512bh b
) {
692 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_eq_os
693 // CHECK: fcmp oeq <32 x bfloat> %{{.*}}, %{{.*}}
694 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
695 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_EQ_OS
);
698 __mmask32
test_mm512_mask_cmp_pbh_mask_lt_oq(__mmask32 m
, __m512bh a
, __m512bh b
) {
699 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_lt_oq
700 // CHECK: fcmp olt <32 x bfloat> %{{.*}}, %{{.*}}
701 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
702 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_LT_OQ
);
705 __mmask32
test_mm512_mask_cmp_pbh_mask_le_oq(__mmask32 m
, __m512bh a
, __m512bh b
) {
706 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_le_oq
707 // CHECK: fcmp ole <32 x bfloat> %{{.*}}, %{{.*}}
708 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
709 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_LE_OQ
);
712 __mmask32
test_mm512_mask_cmp_pbh_mask_unord_s(__mmask32 m
, __m512bh a
, __m512bh b
) {
713 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_unord_s
714 // CHECK: fcmp uno <32 x bfloat> %{{.*}}, %{{.*}}
715 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
716 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_UNORD_S
);
719 __mmask32
test_mm512_mask_cmp_pbh_mask_neq_us(__mmask32 m
, __m512bh a
, __m512bh b
) {
720 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_us
721 // CHECK: fcmp une <32 x bfloat> %{{.*}}, %{{.*}}
722 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
723 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NEQ_US
);
726 __mmask32
test_mm512_mask_cmp_pbh_mask_nlt_uq(__mmask32 m
, __m512bh a
, __m512bh b
) {
727 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nlt_uq
728 // CHECK: fcmp uge <32 x bfloat> %{{.*}}, %{{.*}}
729 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
730 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NLT_UQ
);
733 __mmask32
test_mm512_mask_cmp_pbh_mask_nle_uq(__mmask32 m
, __m512bh a
, __m512bh b
) {
734 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nle_uq
735 // CHECK: fcmp ugt <32 x bfloat> %{{.*}}, %{{.*}}
736 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
737 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NLE_UQ
);
740 __mmask32
test_mm512_mask_cmp_pbh_mask_ord_s(__mmask32 m
, __m512bh a
, __m512bh b
) {
741 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ord_s
742 // CHECK: fcmp ord <32 x bfloat> %{{.*}}, %{{.*}}
743 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
744 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_ORD_S
);
747 __mmask32
test_mm512_mask_cmp_pbh_mask_eq_us(__mmask32 m
, __m512bh a
, __m512bh b
) {
748 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_eq_us
749 // CHECK: fcmp ueq <32 x bfloat> %{{.*}}, %{{.*}}
750 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
751 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_EQ_US
);
754 __mmask32
test_mm512_mask_cmp_pbh_mask_nge_uq(__mmask32 m
, __m512bh a
, __m512bh b
) {
755 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_nge_uq
756 // CHECK: fcmp ult <32 x bfloat> %{{.*}}, %{{.*}}
757 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
758 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NGE_UQ
);
761 __mmask32
test_mm512_mask_cmp_pbh_mask_ngt_uq(__mmask32 m
, __m512bh a
, __m512bh b
) {
762 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ngt_uq
763 // CHECK: fcmp ule <32 x bfloat> %{{.*}}, %{{.*}}
764 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
765 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NGT_UQ
);
768 __mmask32
test_mm512_mask_cmp_pbh_mask_false_os(__mmask32 m
, __m512bh a
, __m512bh b
) {
769 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_false_os
770 // CHECK: fcmp false <32 x bfloat> %{{.*}}, %{{.*}}
771 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
772 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_FALSE_OS
);
775 __mmask32
test_mm512_mask_cmp_pbh_mask_neq_os(__mmask32 m
, __m512bh a
, __m512bh b
) {
776 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_neq_os
777 // CHECK: fcmp one <32 x bfloat> %{{.*}}, %{{.*}}
778 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
779 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_NEQ_OS
);
782 __mmask32
test_mm512_mask_cmp_pbh_mask_ge_oq(__mmask32 m
, __m512bh a
, __m512bh b
) {
783 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_ge_oq
784 // CHECK: fcmp oge <32 x bfloat> %{{.*}}, %{{.*}}
785 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
786 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_GE_OQ
);
789 __mmask32
test_mm512_mask_cmp_pbh_mask_gt_oq(__mmask32 m
, __m512bh a
, __m512bh b
) {
790 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_gt_oq
791 // CHECK: fcmp ogt <32 x bfloat> %{{.*}}, %{{.*}}
792 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
793 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_GT_OQ
);
796 __mmask32
test_mm512_mask_cmp_pbh_mask_true_us(__mmask32 m
, __m512bh a
, __m512bh b
) {
797 // CHECK-LABEL: test_mm512_mask_cmp_pbh_mask_true_us
798 // CHECK: fcmp true <32 x bfloat> %{{.*}}, %{{.*}}
799 // CHECK: and <32 x i1> %{{.*}}, %{{.*}}
800 return _mm512_mask_cmp_pbh_mask(m
, a
, b
, _CMP_TRUE_US
);
803 __mmask32
test_mm512_mask_fpclass_pbh_mask(__mmask32 __U
, __m512bh __A
) {
804 // CHECK-LABEL: @test_mm512_mask_fpclass_pbh_mask
805 // CHECK: @llvm.x86.avx10.fpclass.nepbf16.512
806 return _mm512_mask_fpclass_pbh_mask(__U
, __A
, 4);
809 __mmask32
test_mm512_fpclass_pbh_mask(__m512bh __A
) {
810 // CHECK-LABEL: @test_mm512_fpclass_pbh_mask
811 // CHECK: @llvm.x86.avx10.fpclass.nepbf16.512
812 return _mm512_fpclass_pbh_mask(__A
, 4);
815 __m512bh
test_mm512_scalef_pbh(__m512bh __A
, __m512bh __B
) {
816 // CHECK-LABEL: @test_mm512_scalef_pbh
817 // CHECK: @llvm.x86.avx10.mask.scalef.nepbf16.512
818 return _mm512_scalef_pbh(__A
, __B
);
821 __m512bh
test_mm512_mask_scalef_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
, __m512bh __B
) {
822 // CHECK-LABEL: @test_mm512_mask_scalef_pbh
823 // CHECK: @llvm.x86.avx10.mask.scalef.nepbf16.512
824 return _mm512_mask_scalef_pbh(__W
, __U
, __A
, __B
);
827 __m512bh
test_mm512_maskz_scalef_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
) {
828 // CHECK-LABEL: @test_mm512_maskz_scalef_pbh
829 // CHECK: @llvm.x86.avx10.mask.scalef.nepbf16.512
830 return _mm512_maskz_scalef_pbh(__U
, __A
, __B
);
833 __m512bh
test_mm512_rcp_pbh(__m512bh __A
) {
834 // CHECK-LABEL: @test_mm512_rcp_pbh
835 // CHECK: @llvm.x86.avx10.mask.rcp.nepbf16.512
836 return _mm512_rcp_pbh(__A
);
839 __m512bh
test_mm512_mask_rcp_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
) {
840 // CHECK-LABEL: @test_mm512_mask_rcp_pbh
841 // CHECK: @llvm.x86.avx10.mask.rcp.nepbf16.512
842 return (__m512bh
)_mm512_mask_rcp_pbh(__W
, __U
, __A
);
845 __m512bh
test_mm512_maskz_rcp_pbh(__mmask32 __U
, __m512bh __A
) {
846 // CHECK-LABEL: @test_mm512_maskz_rcp_pbh
847 // CHECK: @llvm.x86.avx10.mask.rcp.nepbf16.512
848 return _mm512_maskz_rcp_pbh(__U
, __A
);
851 __m512bh
test_mm512_getexp_pbh(__m512bh __A
) {
852 // CHECK-LABEL: @test_mm512_getexp_pbh
853 // CHECK: @llvm.x86.avx10.mask.getexp.nepbf16.512
854 return _mm512_getexp_pbh(__A
);
857 __m512bh
test_mm512_mask_getexp_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
) {
858 // CHECK-LABEL: @test_mm512_mask_getexp_pbh
859 // CHECK: @llvm.x86.avx10.mask.getexp.nepbf16.512
860 return _mm512_mask_getexp_pbh(__W
, __U
, __A
);
863 __m512bh
test_mm512_maskz_getexp_pbh(__mmask32 __U
, __m512bh __A
) {
864 // CHECK-LABEL: @test_mm512_maskz_getexp_pbh
865 // CHECK: @llvm.x86.avx10.mask.getexp.nepbf16.512
866 return _mm512_maskz_getexp_pbh(__U
, __A
);
869 __m512bh
test_mm512_rsqrt_pbh(__m512bh __A
) {
870 // CHECK-LABEL: @test_mm512_rsqrt_pbh
871 // CHECK: @llvm.x86.avx10.mask.rsqrt.nepbf16.512
872 return _mm512_rsqrt_pbh(__A
);
875 __m512bh
test_mm512_mask_rsqrt_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
) {
876 // CHECK-LABEL: @test_mm512_mask_rsqrt_pbh
877 // CHECK: @llvm.x86.avx10.mask.rsqrt.nepbf16.512
878 return (__m512bh
)_mm512_mask_rsqrt_pbh(__W
, __U
, __A
);
881 __m512bh
test_mm512_maskz_rsqrt_pbh(__mmask32 __U
, __m512bh __A
) {
882 // CHECK-LABEL: @test_mm512_maskz_rsqrt_pbh
883 // CHECK: @llvm.x86.avx10.mask.rsqrt.nepbf16.512
884 return _mm512_maskz_rsqrt_pbh(__U
, __A
);
887 __m512bh
test_mm512_reducene_pbh(__m512bh __A
) {
888 // CHECK-LABEL: @test_mm512_reducene_pbh
889 // CHECK: @llvm.x86.avx10.mask.reduce.nepbf16.512
890 return _mm512_reducene_pbh(__A
, 3);
893 __m512bh
test_mm512_mask_reducene_pbh(__m512bh __W
, __mmask16 __U
, __m512bh __A
) {
894 // CHECK-LABEL: @test_mm512_mask_reducene_pbh
895 // CHECK: @llvm.x86.avx10.mask.reduce.nepbf16.512
896 return _mm512_mask_reducene_pbh(__W
, __U
, __A
, 1);
899 __m512bh
test_mm512_maskz_reducene_pbh(__mmask16 __U
, __m512bh __A
) {
900 // CHECK-LABEL: @test_mm512_maskz_reducene_pbh
901 // CHECK: @llvm.x86.avx10.mask.reduce.nepbf16.512
902 return _mm512_maskz_reducene_pbh(__U
, __A
, 1);
905 __m512bh
test_mm512_roundscalene_pbh(__m512bh __A
) {
906 // CHECK-LABEL: @test_mm512_roundscalene_pbh
907 // CHECK: @llvm.x86.avx10.mask.rndscale.nepbf16.512
908 return _mm512_roundscalene_pbh(__A
, 3);
911 __m512bh
test_mm512_mask_roundscalene_pbh(__m512bh __W
, __mmask16 __U
, __m512bh __A
) {
912 // CHECK-LABEL: @test_mm512_mask_roundscalene_pbh
913 // CHECK: @llvm.x86.avx10.mask.rndscale.nepbf16.512
914 return _mm512_mask_roundscalene_pbh(__W
, __U
, __A
, 1);
917 __m512bh
test_mm512_maskz_roundscalene_pbh(__mmask16 __U
, __m512bh __A
) {
918 // CHECK-LABEL: @test_mm512_maskz_roundscalene_pbh
919 // CHECK: @llvm.x86.avx10.mask.rndscale.nepbf16.512
920 return _mm512_maskz_roundscalene_pbh(__U
, __A
, 1 );
923 __m512bh
test_mm512_getmant_pbh(__m512bh __A
) {
924 // CHECK-LABEL: @test_mm512_getmant_pbh
925 // CHECK: @llvm.x86.avx10.mask.getmant.nepbf16.512
926 return _mm512_getmant_pbh(__A
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
929 __m512bh
test_mm512_mask_getmant_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
) {
930 // CHECK-LABEL: @test_mm512_mask_getmant_pbh
931 // CHECK: @llvm.x86.avx10.mask.getmant.nepbf16.512
932 return _mm512_mask_getmant_pbh(__W
, __U
, __A
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
935 __m512bh
test_mm512_maskz_getmant_pbh(__mmask32 __U
, __m512bh __A
) {
936 // CHECK-LABEL: @test_mm512_maskz_getmant_pbh
937 // CHECK: @llvm.x86.avx10.mask.getmant.nepbf16.512
938 return _mm512_maskz_getmant_pbh(__U
, __A
, _MM_MANT_NORM_p5_2
, _MM_MANT_SIGN_nan
);
941 __m512bh
test_mm512_sqrt_pbh(__m512bh __A
) {
942 // CHECK-LABEL: @test_mm512_sqrt_pbh
943 // CHECK: %{{.*}} = call <32 x bfloat> @llvm.sqrt.v32bf16(<32 x bfloat> %{{.*}})
944 return _mm512_sqrt_pbh(__A
);
947 __m512bh
test_mm512_mask_sqrt_pbh(__m512bh __W
, __mmask32 __U
, __m512bh __A
) {
948 // CHECK-LABEL: @test_mm512_mask_sqrt_pbh
949 // CHECK: %{{.*}} = call <32 x bfloat> @llvm.sqrt.v32bf16(<32 x bfloat> %{{.*}})
950 // CHECK: bitcast i32 %{{.*}} to <32 x i1>
951 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
952 return (__m512bh
)_mm512_mask_sqrt_pbh(__W
, __U
, __A
);
955 __m512bh
test_mm512_maskz_sqrt_pbh(__mmask32 __U
, __m512bh __A
) {
956 // CHECK-LABEL: @test_mm512_maskz_sqrt_pbh
957 // CHECK: %{{.*}} = call <32 x bfloat> @llvm.sqrt.v32bf16(<32 x bfloat> %{{.*}})
958 // CHECK: bitcast i32 %{{.*}} to <32 x i1>
959 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
960 return _mm512_maskz_sqrt_pbh(__U
, __A
);
963 __m512bh
test_mm512_fmaddne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
) {
964 // CHECK-LABEL: @test_mm512_fmaddne_pbh
965 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
966 return _mm512_fmaddne_pbh(__A
, __B
, __C
);
969 __m512bh
test_mm512_mask_fmaddne_pbh(__m512bh __A
, __mmask32 __U
, __m512bh __B
, __m512bh __C
) {
970 // CHECK-LABEL: @test_mm512_mask_fmaddne_pbh
971 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
972 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
973 return _mm512_mask_fmaddne_pbh(__A
, __U
, __B
, __C
);
976 __m512bh
test_mm512_mask3_fmaddne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
, __mmask32 __U
) {
977 // CHECK-LABEL: @test_mm512_mask3_fmaddne_pbh
978 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
979 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
980 return _mm512_mask3_fmaddne_pbh(__A
, __B
, __C
, __U
);
983 __m512bh
test_mm512_maskz_fmaddne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
, __m512bh __C
) {
984 // CHECK-LABEL: @test_mm512_maskz_fmaddne_pbh
985 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
986 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
987 return _mm512_maskz_fmaddne_pbh(__U
, __A
, __B
, __C
);
990 __m512bh
test_mm512_fmsubne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
) {
991 // CHECK-LABEL: @test_mm512_fmsubne_pbh
993 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
994 return _mm512_fmsubne_pbh(__A
, __B
, __C
);
997 __m512bh
test_mm512_mask_fmsubne_pbh(__m512bh __A
, __mmask32 __U
, __m512bh __B
, __m512bh __C
) {
998 // CHECK-LABEL: @test_mm512_mask_fmsubne_pbh
1000 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1001 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1002 return _mm512_mask_fmsubne_pbh(__A
, __U
, __B
, __C
);
1005 __m512bh
test_mm512_mask3_fmsubne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
, __mmask32 __U
) {
1006 // CHECK-LABEL: @test_mm512_mask3_fmsubne_pbh
1008 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1009 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1010 return _mm512_mask3_fmsubne_pbh(__A
, __B
, __C
, __U
);
1013 __m512bh
test_mm512_maskz_fmsubne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
, __m512bh __C
) {
1014 // CHECK-LABEL: @test_mm512_maskz_fmsubne_pbh
1016 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1017 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1018 return _mm512_maskz_fmsubne_pbh(__U
, __A
, __B
, __C
);
1021 __m512bh
test_mm512_fnmaddne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
) {
1022 // CHECK-LABEL: @test_mm512_fnmaddne_pbh
1024 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1025 return _mm512_fnmaddne_pbh(__A
, __B
, __C
);
1028 __m512bh
test_mm512_mask_fnmaddne_pbh(__m512bh __A
, __mmask32 __U
, __m512bh __B
, __m512bh __C
) {
1029 // CHECK-LABEL: @test_mm512_mask_fnmaddne_pbh
1031 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1032 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1033 return _mm512_mask_fnmaddne_pbh(__A
, __U
, __B
, __C
);
1036 __m512bh
test_mm512_mask3_fnmaddne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
, __mmask32 __U
) {
1037 // CHECK-LABEL: @test_mm512_mask3_fnmaddne_pbh
1039 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1040 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1041 return _mm512_mask3_fnmaddne_pbh(__A
, __B
, __C
, __U
);
1044 __m512bh
test_mm512_maskz_fnmaddne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
, __m512bh __C
) {
1045 // CHECK-LABEL: @test_mm512_maskz_fnmaddne_pbh
1047 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1048 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1049 return _mm512_maskz_fnmaddne_pbh(__U
, __A
, __B
, __C
);
1052 __m512bh
test_mm512_fnmsubne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
) {
1053 // CHECK-LABEL: @test_mm512_fnmsubne_pbh
1056 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1057 return _mm512_fnmsubne_pbh(__A
, __B
, __C
);
1060 __m512bh
test_mm512_mask_fnmsubne_pbh(__m512bh __A
, __mmask32 __U
, __m512bh __B
, __m512bh __C
) {
1061 // CHECK-LABEL: @test_mm512_mask_fnmsubne_pbh
1064 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1065 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1066 return _mm512_mask_fnmsubne_pbh(__A
, __U
, __B
, __C
);
1069 __m512bh
test_mm512_mask3_fnmsubne_pbh(__m512bh __A
, __m512bh __B
, __m512bh __C
, __mmask32 __U
) {
1070 // CHECK-LABEL: @test_mm512_mask3_fnmsubne_pbh
1073 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1074 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1075 return _mm512_mask3_fnmsubne_pbh(__A
, __B
, __C
, __U
);
1078 __m512bh
test_mm512_maskz_fnmsubne_pbh(__mmask32 __U
, __m512bh __A
, __m512bh __B
, __m512bh __C
) {
1079 // CHECK-LABEL: @test_mm512_maskz_fnmsubne_pbh
1082 // CHECK: call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}})
1083 // CHECK: select <32 x i1> %{{.*}}, <32 x bfloat> %{{.*}}, <32 x bfloat> %{{.*}}
1084 return _mm512_maskz_fnmsubne_pbh(__U
, __A
, __B
, __C
);