1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s --mtriple=x86_64-unknown-unknown -mattr=avx10.2-512 | FileCheck %s
4 define <8 x bfloat> @fma_123_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z) {
5 ; CHECK-LABEL: fma_123_v8bf16:
7 ; CHECK-NEXT: vfmadd213nepbf16 %xmm2, %xmm1, %xmm0
9 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z)
13 define <8 x bfloat> @fma_213_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z) {
14 ; CHECK-LABEL: fma_213_v8bf16:
16 ; CHECK-NEXT: vfmadd213nepbf16 %xmm2, %xmm1, %xmm0
18 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %x, <8 x bfloat> %z)
22 define <8 x bfloat> @fma_231_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z) {
23 ; CHECK-LABEL: fma_231_v8bf16:
25 ; CHECK-NEXT: vfmadd231nepbf16 %xmm1, %xmm2, %xmm0
27 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %z, <8 x bfloat> %x)
31 define <8 x bfloat> @fma_321_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z) {
32 ; CHECK-LABEL: fma_321_v8bf16:
34 ; CHECK-NEXT: vfmadd231nepbf16 %xmm1, %xmm2, %xmm0
36 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %y, <8 x bfloat> %x)
40 define <8 x bfloat> @fma_132_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z) {
41 ; CHECK-LABEL: fma_132_v8bf16:
43 ; CHECK-NEXT: vfmadd213nepbf16 %xmm1, %xmm2, %xmm0
45 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %z, <8 x bfloat> %y)
49 define <8 x bfloat> @fma_312_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z) {
50 ; CHECK-LABEL: fma_312_v8bf16:
52 ; CHECK-NEXT: vfmadd213nepbf16 %xmm1, %xmm2, %xmm0
54 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %x, <8 x bfloat> %y)
58 define <8 x bfloat> @fma_load_123_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp) {
59 ; CHECK-LABEL: fma_load_123_v8bf16:
61 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %xmm1, %xmm0
63 %z = load <8 x bfloat>, ptr %zp
64 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z)
68 define <8 x bfloat> @fma_load_213_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp) {
69 ; CHECK-LABEL: fma_load_213_v8bf16:
71 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %xmm1, %xmm0
73 %z = load <8 x bfloat>, ptr %zp
74 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %x, <8 x bfloat> %z)
78 define <8 x bfloat> @fma_load_231_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp) {
79 ; CHECK-LABEL: fma_load_231_v8bf16:
81 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %xmm1, %xmm0
83 %z = load <8 x bfloat>, ptr %zp
84 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %z, <8 x bfloat> %x)
88 define <8 x bfloat> @fma_load_321_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp) {
89 ; CHECK-LABEL: fma_load_321_v8bf16:
91 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %xmm1, %xmm0
93 %z = load <8 x bfloat>, ptr %zp
94 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %y, <8 x bfloat> %x)
98 define <8 x bfloat> @fma_load_132_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp) {
99 ; CHECK-LABEL: fma_load_132_v8bf16:
101 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %xmm1, %xmm0
103 %z = load <8 x bfloat>, ptr %zp
104 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %z, <8 x bfloat> %y)
108 define <8 x bfloat> @fma_load_312_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp) {
109 ; CHECK-LABEL: fma_load_312_v8bf16:
111 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %xmm1, %xmm0
113 %z = load <8 x bfloat>, ptr %zp
114 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %x, <8 x bfloat> %y)
118 define <8 x bfloat> @fma_mask_123_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
119 ; CHECK-LABEL: fma_mask_123_v8bf16:
121 ; CHECK-NEXT: kmovd %edi, %k1
122 ; CHECK-NEXT: vfmadd132nepbf16 %xmm1, %xmm2, %xmm0 {%k1}
124 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z)
125 %b = bitcast i8 %mask to <8 x i1>
126 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
130 define <8 x bfloat> @fma_mask_213_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
131 ; CHECK-LABEL: fma_mask_213_v8bf16:
133 ; CHECK-NEXT: kmovd %edi, %k1
134 ; CHECK-NEXT: vfmadd213nepbf16 %xmm2, %xmm1, %xmm0 {%k1}
136 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %x, <8 x bfloat> %z)
137 %b = bitcast i8 %mask to <8 x i1>
138 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
142 define <8 x bfloat> @fma_mask_231_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
143 ; CHECK-LABEL: fma_mask_231_v8bf16:
145 ; CHECK-NEXT: kmovd %edi, %k1
146 ; CHECK-NEXT: vfmadd231nepbf16 %xmm2, %xmm1, %xmm0 {%k1}
148 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %z, <8 x bfloat> %x)
149 %b = bitcast i8 %mask to <8 x i1>
150 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
154 define <8 x bfloat> @fma_mask_321_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
155 ; CHECK-LABEL: fma_mask_321_v8bf16:
157 ; CHECK-NEXT: kmovd %edi, %k1
158 ; CHECK-NEXT: vfmadd231nepbf16 %xmm1, %xmm2, %xmm0 {%k1}
160 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %y, <8 x bfloat> %x)
161 %b = bitcast i8 %mask to <8 x i1>
162 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
166 define <8 x bfloat> @fma_mask_132_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
167 ; CHECK-LABEL: fma_mask_132_v8bf16:
169 ; CHECK-NEXT: kmovd %edi, %k1
170 ; CHECK-NEXT: vfmadd132nepbf16 %xmm2, %xmm1, %xmm0 {%k1}
172 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %z, <8 x bfloat> %y)
173 %b = bitcast i8 %mask to <8 x i1>
174 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
178 define <8 x bfloat> @fma_mask_312_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
179 ; CHECK-LABEL: fma_mask_312_v8bf16:
181 ; CHECK-NEXT: kmovd %edi, %k1
182 ; CHECK-NEXT: vfmadd213nepbf16 %xmm1, %xmm2, %xmm0 {%k1}
184 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %x, <8 x bfloat> %y)
185 %b = bitcast i8 %mask to <8 x i1>
186 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
190 define <8 x bfloat> @fma_maskz_123_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
191 ; CHECK-LABEL: fma_maskz_123_v8bf16:
193 ; CHECK-NEXT: kmovd %edi, %k1
194 ; CHECK-NEXT: vfmadd213nepbf16 %xmm2, %xmm1, %xmm0 {%k1} {z}
196 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z)
197 %b = bitcast i8 %mask to <8 x i1>
198 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
202 define <8 x bfloat> @fma_maskz_213_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
203 ; CHECK-LABEL: fma_maskz_213_v8bf16:
205 ; CHECK-NEXT: kmovd %edi, %k1
206 ; CHECK-NEXT: vfmadd213nepbf16 %xmm2, %xmm1, %xmm0 {%k1} {z}
208 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %x, <8 x bfloat> %z)
209 %b = bitcast i8 %mask to <8 x i1>
210 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
214 define <8 x bfloat> @fma_maskz_231_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
215 ; CHECK-LABEL: fma_maskz_231_v8bf16:
217 ; CHECK-NEXT: kmovd %edi, %k1
218 ; CHECK-NEXT: vfmadd231nepbf16 %xmm1, %xmm2, %xmm0 {%k1} {z}
220 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %z, <8 x bfloat> %x)
221 %b = bitcast i8 %mask to <8 x i1>
222 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
226 define <8 x bfloat> @fma_maskz_321_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
227 ; CHECK-LABEL: fma_maskz_321_v8bf16:
229 ; CHECK-NEXT: kmovd %edi, %k1
230 ; CHECK-NEXT: vfmadd231nepbf16 %xmm1, %xmm2, %xmm0 {%k1} {z}
232 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %y, <8 x bfloat> %x)
233 %b = bitcast i8 %mask to <8 x i1>
234 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
238 define <8 x bfloat> @fma_maskz_132_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
239 ; CHECK-LABEL: fma_maskz_132_v8bf16:
241 ; CHECK-NEXT: kmovd %edi, %k1
242 ; CHECK-NEXT: vfmadd213nepbf16 %xmm1, %xmm2, %xmm0 {%k1} {z}
244 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %z, <8 x bfloat> %y)
245 %b = bitcast i8 %mask to <8 x i1>
246 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
250 define <8 x bfloat> @fma_maskz_312_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z, i8 %mask) {
251 ; CHECK-LABEL: fma_maskz_312_v8bf16:
253 ; CHECK-NEXT: kmovd %edi, %k1
254 ; CHECK-NEXT: vfmadd213nepbf16 %xmm1, %xmm2, %xmm0 {%k1} {z}
256 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %x, <8 x bfloat> %y)
257 %b = bitcast i8 %mask to <8 x i1>
258 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
262 define <8 x bfloat> @fma_mask_load_123_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
263 ; CHECK-LABEL: fma_mask_load_123_v8bf16:
265 ; CHECK-NEXT: kmovd %esi, %k1
266 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %xmm1, %xmm0 {%k1}
268 %z = load <8 x bfloat>, ptr %zp
269 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z)
270 %b = bitcast i8 %mask to <8 x i1>
271 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
275 define <8 x bfloat> @fma_mask_load_213_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
276 ; CHECK-LABEL: fma_mask_load_213_v8bf16:
278 ; CHECK-NEXT: kmovd %esi, %k1
279 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %xmm1, %xmm0 {%k1}
281 %z = load <8 x bfloat>, ptr %zp
282 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %x, <8 x bfloat> %z)
283 %b = bitcast i8 %mask to <8 x i1>
284 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
288 define <8 x bfloat> @fma_mask_load_231_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
289 ; CHECK-LABEL: fma_mask_load_231_v8bf16:
291 ; CHECK-NEXT: kmovd %esi, %k1
292 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %xmm1, %xmm0 {%k1}
294 %z = load <8 x bfloat>, ptr %zp
295 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %z, <8 x bfloat> %x)
296 %b = bitcast i8 %mask to <8 x i1>
297 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
301 define <8 x bfloat> @fma_mask_load_321_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
302 ; CHECK-LABEL: fma_mask_load_321_v8bf16:
304 ; CHECK-NEXT: kmovd %esi, %k1
305 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %xmm1, %xmm0 {%k1}
307 %z = load <8 x bfloat>, ptr %zp
308 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %y, <8 x bfloat> %x)
309 %b = bitcast i8 %mask to <8 x i1>
310 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
314 define <8 x bfloat> @fma_mask_load_132_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
315 ; CHECK-LABEL: fma_mask_load_132_v8bf16:
317 ; CHECK-NEXT: kmovd %esi, %k1
318 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %xmm1, %xmm0 {%k1}
320 %z = load <8 x bfloat>, ptr %zp
321 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %z, <8 x bfloat> %y)
322 %b = bitcast i8 %mask to <8 x i1>
323 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
327 define <8 x bfloat> @fma_mask_load_312_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
328 ; CHECK-LABEL: fma_mask_load_312_v8bf16:
330 ; CHECK-NEXT: kmovd %esi, %k1
331 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %xmm1, %xmm0 {%k1}
333 %z = load <8 x bfloat>, ptr %zp
334 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %x, <8 x bfloat> %y)
335 %b = bitcast i8 %mask to <8 x i1>
336 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> %x
340 define <8 x bfloat> @fma_maskz_load_123_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
341 ; CHECK-LABEL: fma_maskz_load_123_v8bf16:
343 ; CHECK-NEXT: kmovd %esi, %k1
344 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %xmm1, %xmm0 {%k1} {z}
346 %z = load <8 x bfloat>, ptr %zp
347 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, <8 x bfloat> %z)
348 %b = bitcast i8 %mask to <8 x i1>
349 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
353 define <8 x bfloat> @fma_maskz_load_213_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
354 ; CHECK-LABEL: fma_maskz_load_213_v8bf16:
356 ; CHECK-NEXT: kmovd %esi, %k1
357 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %xmm1, %xmm0 {%k1} {z}
359 %z = load <8 x bfloat>, ptr %zp
360 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %x, <8 x bfloat> %z)
361 %b = bitcast i8 %mask to <8 x i1>
362 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
366 define <8 x bfloat> @fma_maskz_load_231_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
367 ; CHECK-LABEL: fma_maskz_load_231_v8bf16:
369 ; CHECK-NEXT: kmovd %esi, %k1
370 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %xmm1, %xmm0 {%k1} {z}
372 %z = load <8 x bfloat>, ptr %zp
373 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %y, <8 x bfloat> %z, <8 x bfloat> %x)
374 %b = bitcast i8 %mask to <8 x i1>
375 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
379 define <8 x bfloat> @fma_maskz_load_321_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
380 ; CHECK-LABEL: fma_maskz_load_321_v8bf16:
382 ; CHECK-NEXT: kmovd %esi, %k1
383 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %xmm1, %xmm0 {%k1} {z}
385 %z = load <8 x bfloat>, ptr %zp
386 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %y, <8 x bfloat> %x)
387 %b = bitcast i8 %mask to <8 x i1>
388 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
392 define <8 x bfloat> @fma_maskz_load_132_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
393 ; CHECK-LABEL: fma_maskz_load_132_v8bf16:
395 ; CHECK-NEXT: kmovd %esi, %k1
396 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %xmm1, %xmm0 {%k1} {z}
398 %z = load <8 x bfloat>, ptr %zp
399 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %x, <8 x bfloat> %z, <8 x bfloat> %y)
400 %b = bitcast i8 %mask to <8 x i1>
401 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
405 define <8 x bfloat> @fma_maskz_load_312_v8bf16(<8 x bfloat> %x, <8 x bfloat> %y, ptr %zp, i8 %mask) {
406 ; CHECK-LABEL: fma_maskz_load_312_v8bf16:
408 ; CHECK-NEXT: kmovd %esi, %k1
409 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %xmm1, %xmm0 {%k1} {z}
411 %z = load <8 x bfloat>, ptr %zp
412 %a = call <8 x bfloat> @llvm.fma.v8bf16(<8 x bfloat> %z, <8 x bfloat> %x, <8 x bfloat> %y)
413 %b = bitcast i8 %mask to <8 x i1>
414 %c = select <8 x i1> %b, <8 x bfloat> %a, <8 x bfloat> zeroinitializer
418 define <16 x bfloat> @fma_123_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z) {
419 ; CHECK-LABEL: fma_123_v16bf16:
421 ; CHECK-NEXT: vfmadd213nepbf16 %ymm2, %ymm1, %ymm0
423 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z)
427 define <16 x bfloat> @fma_213_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z) {
428 ; CHECK-LABEL: fma_213_v16bf16:
430 ; CHECK-NEXT: vfmadd213nepbf16 %ymm2, %ymm1, %ymm0
432 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %x, <16 x bfloat> %z)
436 define <16 x bfloat> @fma_231_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z) {
437 ; CHECK-LABEL: fma_231_v16bf16:
439 ; CHECK-NEXT: vfmadd231nepbf16 %ymm1, %ymm2, %ymm0
441 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %z, <16 x bfloat> %x)
445 define <16 x bfloat> @fma_321_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z) {
446 ; CHECK-LABEL: fma_321_v16bf16:
448 ; CHECK-NEXT: vfmadd231nepbf16 %ymm1, %ymm2, %ymm0
450 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %y, <16 x bfloat> %x)
454 define <16 x bfloat> @fma_132_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z) {
455 ; CHECK-LABEL: fma_132_v16bf16:
457 ; CHECK-NEXT: vfmadd213nepbf16 %ymm1, %ymm2, %ymm0
459 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %z, <16 x bfloat> %y)
463 define <16 x bfloat> @fma_312_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z) {
464 ; CHECK-LABEL: fma_312_v16bf16:
466 ; CHECK-NEXT: vfmadd213nepbf16 %ymm1, %ymm2, %ymm0
468 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %x, <16 x bfloat> %y)
472 define <16 x bfloat> @fma_load_123_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp) {
473 ; CHECK-LABEL: fma_load_123_v16bf16:
475 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %ymm1, %ymm0
477 %z = load <16 x bfloat>, ptr %zp
478 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z)
482 define <16 x bfloat> @fma_load_213_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp) {
483 ; CHECK-LABEL: fma_load_213_v16bf16:
485 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %ymm1, %ymm0
487 %z = load <16 x bfloat>, ptr %zp
488 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %x, <16 x bfloat> %z)
492 define <16 x bfloat> @fma_load_231_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp) {
493 ; CHECK-LABEL: fma_load_231_v16bf16:
495 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %ymm1, %ymm0
497 %z = load <16 x bfloat>, ptr %zp
498 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %z, <16 x bfloat> %x)
502 define <16 x bfloat> @fma_load_321_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp) {
503 ; CHECK-LABEL: fma_load_321_v16bf16:
505 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %ymm1, %ymm0
507 %z = load <16 x bfloat>, ptr %zp
508 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %y, <16 x bfloat> %x)
512 define <16 x bfloat> @fma_load_132_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp) {
513 ; CHECK-LABEL: fma_load_132_v16bf16:
515 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %ymm1, %ymm0
517 %z = load <16 x bfloat>, ptr %zp
518 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %z, <16 x bfloat> %y)
522 define <16 x bfloat> @fma_load_312_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp) {
523 ; CHECK-LABEL: fma_load_312_v16bf16:
525 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %ymm1, %ymm0
527 %z = load <16 x bfloat>, ptr %zp
528 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %x, <16 x bfloat> %y)
532 define <16 x bfloat> @fma_mask_123_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
533 ; CHECK-LABEL: fma_mask_123_v16bf16:
535 ; CHECK-NEXT: kmovd %edi, %k1
536 ; CHECK-NEXT: vfmadd132nepbf16 %ymm1, %ymm2, %ymm0 {%k1}
538 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z)
539 %b = bitcast i16 %mask to <16 x i1>
540 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
544 define <16 x bfloat> @fma_mask_213_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
545 ; CHECK-LABEL: fma_mask_213_v16bf16:
547 ; CHECK-NEXT: kmovd %edi, %k1
548 ; CHECK-NEXT: vfmadd213nepbf16 %ymm2, %ymm1, %ymm0 {%k1}
550 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %x, <16 x bfloat> %z)
551 %b = bitcast i16 %mask to <16 x i1>
552 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
556 define <16 x bfloat> @fma_mask_231_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
557 ; CHECK-LABEL: fma_mask_231_v16bf16:
559 ; CHECK-NEXT: kmovd %edi, %k1
560 ; CHECK-NEXT: vfmadd231nepbf16 %ymm2, %ymm1, %ymm0 {%k1}
562 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %z, <16 x bfloat> %x)
563 %b = bitcast i16 %mask to <16 x i1>
564 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
568 define <16 x bfloat> @fma_mask_321_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
569 ; CHECK-LABEL: fma_mask_321_v16bf16:
571 ; CHECK-NEXT: kmovd %edi, %k1
572 ; CHECK-NEXT: vfmadd231nepbf16 %ymm1, %ymm2, %ymm0 {%k1}
574 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %y, <16 x bfloat> %x)
575 %b = bitcast i16 %mask to <16 x i1>
576 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
580 define <16 x bfloat> @fma_mask_132_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
581 ; CHECK-LABEL: fma_mask_132_v16bf16:
583 ; CHECK-NEXT: kmovd %edi, %k1
584 ; CHECK-NEXT: vfmadd132nepbf16 %ymm2, %ymm1, %ymm0 {%k1}
586 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %z, <16 x bfloat> %y)
587 %b = bitcast i16 %mask to <16 x i1>
588 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
592 define <16 x bfloat> @fma_mask_312_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
593 ; CHECK-LABEL: fma_mask_312_v16bf16:
595 ; CHECK-NEXT: kmovd %edi, %k1
596 ; CHECK-NEXT: vfmadd213nepbf16 %ymm1, %ymm2, %ymm0 {%k1}
598 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %x, <16 x bfloat> %y)
599 %b = bitcast i16 %mask to <16 x i1>
600 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
604 define <16 x bfloat> @fma_maskz_123_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
605 ; CHECK-LABEL: fma_maskz_123_v16bf16:
607 ; CHECK-NEXT: kmovd %edi, %k1
608 ; CHECK-NEXT: vfmadd213nepbf16 %ymm2, %ymm1, %ymm0 {%k1} {z}
610 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z)
611 %b = bitcast i16 %mask to <16 x i1>
612 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
616 define <16 x bfloat> @fma_maskz_213_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
617 ; CHECK-LABEL: fma_maskz_213_v16bf16:
619 ; CHECK-NEXT: kmovd %edi, %k1
620 ; CHECK-NEXT: vfmadd213nepbf16 %ymm2, %ymm1, %ymm0 {%k1} {z}
622 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %x, <16 x bfloat> %z)
623 %b = bitcast i16 %mask to <16 x i1>
624 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
628 define <16 x bfloat> @fma_maskz_231_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
629 ; CHECK-LABEL: fma_maskz_231_v16bf16:
631 ; CHECK-NEXT: kmovd %edi, %k1
632 ; CHECK-NEXT: vfmadd231nepbf16 %ymm1, %ymm2, %ymm0 {%k1} {z}
634 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %z, <16 x bfloat> %x)
635 %b = bitcast i16 %mask to <16 x i1>
636 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
640 define <16 x bfloat> @fma_maskz_321_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
641 ; CHECK-LABEL: fma_maskz_321_v16bf16:
643 ; CHECK-NEXT: kmovd %edi, %k1
644 ; CHECK-NEXT: vfmadd231nepbf16 %ymm1, %ymm2, %ymm0 {%k1} {z}
646 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %y, <16 x bfloat> %x)
647 %b = bitcast i16 %mask to <16 x i1>
648 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
652 define <16 x bfloat> @fma_maskz_132_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
653 ; CHECK-LABEL: fma_maskz_132_v16bf16:
655 ; CHECK-NEXT: kmovd %edi, %k1
656 ; CHECK-NEXT: vfmadd213nepbf16 %ymm1, %ymm2, %ymm0 {%k1} {z}
658 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %z, <16 x bfloat> %y)
659 %b = bitcast i16 %mask to <16 x i1>
660 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
664 define <16 x bfloat> @fma_maskz_312_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z, i16 %mask) {
665 ; CHECK-LABEL: fma_maskz_312_v16bf16:
667 ; CHECK-NEXT: kmovd %edi, %k1
668 ; CHECK-NEXT: vfmadd213nepbf16 %ymm1, %ymm2, %ymm0 {%k1} {z}
670 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %x, <16 x bfloat> %y)
671 %b = bitcast i16 %mask to <16 x i1>
672 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
676 define <16 x bfloat> @fma_mask_load_123_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
677 ; CHECK-LABEL: fma_mask_load_123_v16bf16:
679 ; CHECK-NEXT: kmovd %esi, %k1
680 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %ymm1, %ymm0 {%k1}
682 %z = load <16 x bfloat>, ptr %zp
683 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z)
684 %b = bitcast i16 %mask to <16 x i1>
685 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
689 define <16 x bfloat> @fma_mask_load_213_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
690 ; CHECK-LABEL: fma_mask_load_213_v16bf16:
692 ; CHECK-NEXT: kmovd %esi, %k1
693 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %ymm1, %ymm0 {%k1}
695 %z = load <16 x bfloat>, ptr %zp
696 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %x, <16 x bfloat> %z)
697 %b = bitcast i16 %mask to <16 x i1>
698 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
702 define <16 x bfloat> @fma_mask_load_231_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
703 ; CHECK-LABEL: fma_mask_load_231_v16bf16:
705 ; CHECK-NEXT: kmovd %esi, %k1
706 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %ymm1, %ymm0 {%k1}
708 %z = load <16 x bfloat>, ptr %zp
709 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %z, <16 x bfloat> %x)
710 %b = bitcast i16 %mask to <16 x i1>
711 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
715 define <16 x bfloat> @fma_mask_load_321_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
716 ; CHECK-LABEL: fma_mask_load_321_v16bf16:
718 ; CHECK-NEXT: kmovd %esi, %k1
719 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %ymm1, %ymm0 {%k1}
721 %z = load <16 x bfloat>, ptr %zp
722 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %y, <16 x bfloat> %x)
723 %b = bitcast i16 %mask to <16 x i1>
724 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
728 define <16 x bfloat> @fma_mask_load_132_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
729 ; CHECK-LABEL: fma_mask_load_132_v16bf16:
731 ; CHECK-NEXT: kmovd %esi, %k1
732 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %ymm1, %ymm0 {%k1}
734 %z = load <16 x bfloat>, ptr %zp
735 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %z, <16 x bfloat> %y)
736 %b = bitcast i16 %mask to <16 x i1>
737 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
741 define <16 x bfloat> @fma_mask_load_312_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
742 ; CHECK-LABEL: fma_mask_load_312_v16bf16:
744 ; CHECK-NEXT: kmovd %esi, %k1
745 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %ymm1, %ymm0 {%k1}
747 %z = load <16 x bfloat>, ptr %zp
748 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %x, <16 x bfloat> %y)
749 %b = bitcast i16 %mask to <16 x i1>
750 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> %x
754 define <16 x bfloat> @fma_maskz_load_123_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
755 ; CHECK-LABEL: fma_maskz_load_123_v16bf16:
757 ; CHECK-NEXT: kmovd %esi, %k1
758 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %ymm1, %ymm0 {%k1} {z}
760 %z = load <16 x bfloat>, ptr %zp
761 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, <16 x bfloat> %z)
762 %b = bitcast i16 %mask to <16 x i1>
763 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
767 define <16 x bfloat> @fma_maskz_load_213_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
768 ; CHECK-LABEL: fma_maskz_load_213_v16bf16:
770 ; CHECK-NEXT: kmovd %esi, %k1
771 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %ymm1, %ymm0 {%k1} {z}
773 %z = load <16 x bfloat>, ptr %zp
774 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %x, <16 x bfloat> %z)
775 %b = bitcast i16 %mask to <16 x i1>
776 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
780 define <16 x bfloat> @fma_maskz_load_231_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
781 ; CHECK-LABEL: fma_maskz_load_231_v16bf16:
783 ; CHECK-NEXT: kmovd %esi, %k1
784 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %ymm1, %ymm0 {%k1} {z}
786 %z = load <16 x bfloat>, ptr %zp
787 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %y, <16 x bfloat> %z, <16 x bfloat> %x)
788 %b = bitcast i16 %mask to <16 x i1>
789 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
793 define <16 x bfloat> @fma_maskz_load_321_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
794 ; CHECK-LABEL: fma_maskz_load_321_v16bf16:
796 ; CHECK-NEXT: kmovd %esi, %k1
797 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %ymm1, %ymm0 {%k1} {z}
799 %z = load <16 x bfloat>, ptr %zp
800 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %y, <16 x bfloat> %x)
801 %b = bitcast i16 %mask to <16 x i1>
802 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
806 define <16 x bfloat> @fma_maskz_load_132_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
807 ; CHECK-LABEL: fma_maskz_load_132_v16bf16:
809 ; CHECK-NEXT: kmovd %esi, %k1
810 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %ymm1, %ymm0 {%k1} {z}
812 %z = load <16 x bfloat>, ptr %zp
813 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %x, <16 x bfloat> %z, <16 x bfloat> %y)
814 %b = bitcast i16 %mask to <16 x i1>
815 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
819 define <16 x bfloat> @fma_maskz_load_312_v16bf16(<16 x bfloat> %x, <16 x bfloat> %y, ptr %zp, i16 %mask) {
820 ; CHECK-LABEL: fma_maskz_load_312_v16bf16:
822 ; CHECK-NEXT: kmovd %esi, %k1
823 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %ymm1, %ymm0 {%k1} {z}
825 %z = load <16 x bfloat>, ptr %zp
826 %a = call <16 x bfloat> @llvm.fma.v16bf16(<16 x bfloat> %z, <16 x bfloat> %x, <16 x bfloat> %y)
827 %b = bitcast i16 %mask to <16 x i1>
828 %c = select <16 x i1> %b, <16 x bfloat> %a, <16 x bfloat> zeroinitializer
832 define <32 x bfloat> @fma_123_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z) {
833 ; CHECK-LABEL: fma_123_v32bf16:
835 ; CHECK-NEXT: vfmadd213nepbf16 %zmm2, %zmm1, %zmm0
837 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z)
841 define <32 x bfloat> @fma_213_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z) {
842 ; CHECK-LABEL: fma_213_v32bf16:
844 ; CHECK-NEXT: vfmadd213nepbf16 %zmm2, %zmm1, %zmm0
846 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %x, <32 x bfloat> %z)
850 define <32 x bfloat> @fma_231_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z) {
851 ; CHECK-LABEL: fma_231_v32bf16:
853 ; CHECK-NEXT: vfmadd231nepbf16 %zmm1, %zmm2, %zmm0
855 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %z, <32 x bfloat> %x)
859 define <32 x bfloat> @fma_321_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z) {
860 ; CHECK-LABEL: fma_321_v32bf16:
862 ; CHECK-NEXT: vfmadd231nepbf16 %zmm1, %zmm2, %zmm0
864 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %y, <32 x bfloat> %x)
868 define <32 x bfloat> @fma_132_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z) {
869 ; CHECK-LABEL: fma_132_v32bf16:
871 ; CHECK-NEXT: vfmadd213nepbf16 %zmm1, %zmm2, %zmm0
873 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %z, <32 x bfloat> %y)
877 define <32 x bfloat> @fma_312_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z) {
878 ; CHECK-LABEL: fma_312_v32bf16:
880 ; CHECK-NEXT: vfmadd213nepbf16 %zmm1, %zmm2, %zmm0
882 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %x, <32 x bfloat> %y)
886 define <32 x bfloat> @fma_load_123_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp) {
887 ; CHECK-LABEL: fma_load_123_v32bf16:
889 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %zmm1, %zmm0
891 %z = load <32 x bfloat>, ptr %zp
892 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z)
896 define <32 x bfloat> @fma_load_213_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp) {
897 ; CHECK-LABEL: fma_load_213_v32bf16:
899 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %zmm1, %zmm0
901 %z = load <32 x bfloat>, ptr %zp
902 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %x, <32 x bfloat> %z)
906 define <32 x bfloat> @fma_load_231_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp) {
907 ; CHECK-LABEL: fma_load_231_v32bf16:
909 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %zmm1, %zmm0
911 %z = load <32 x bfloat>, ptr %zp
912 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %z, <32 x bfloat> %x)
916 define <32 x bfloat> @fma_load_321_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp) {
917 ; CHECK-LABEL: fma_load_321_v32bf16:
919 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %zmm1, %zmm0
921 %z = load <32 x bfloat>, ptr %zp
922 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %y, <32 x bfloat> %x)
926 define <32 x bfloat> @fma_load_132_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp) {
927 ; CHECK-LABEL: fma_load_132_v32bf16:
929 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %zmm1, %zmm0
931 %z = load <32 x bfloat>, ptr %zp
932 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %z, <32 x bfloat> %y)
936 define <32 x bfloat> @fma_load_312_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp) {
937 ; CHECK-LABEL: fma_load_312_v32bf16:
939 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %zmm1, %zmm0
941 %z = load <32 x bfloat>, ptr %zp
942 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %x, <32 x bfloat> %y)
946 define <32 x bfloat> @fma_mask_123_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
947 ; CHECK-LABEL: fma_mask_123_v32bf16:
949 ; CHECK-NEXT: kmovd %edi, %k1
950 ; CHECK-NEXT: vfmadd132nepbf16 %zmm1, %zmm2, %zmm0 {%k1}
952 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z)
953 %b = bitcast i32 %mask to <32 x i1>
954 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
958 define <32 x bfloat> @fma_mask_213_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
959 ; CHECK-LABEL: fma_mask_213_v32bf16:
961 ; CHECK-NEXT: kmovd %edi, %k1
962 ; CHECK-NEXT: vfmadd213nepbf16 %zmm2, %zmm1, %zmm0 {%k1}
964 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %x, <32 x bfloat> %z)
965 %b = bitcast i32 %mask to <32 x i1>
966 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
970 define <32 x bfloat> @fma_mask_231_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
971 ; CHECK-LABEL: fma_mask_231_v32bf16:
973 ; CHECK-NEXT: kmovd %edi, %k1
974 ; CHECK-NEXT: vfmadd231nepbf16 %zmm2, %zmm1, %zmm0 {%k1}
976 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %z, <32 x bfloat> %x)
977 %b = bitcast i32 %mask to <32 x i1>
978 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
982 define <32 x bfloat> @fma_mask_321_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
983 ; CHECK-LABEL: fma_mask_321_v32bf16:
985 ; CHECK-NEXT: kmovd %edi, %k1
986 ; CHECK-NEXT: vfmadd231nepbf16 %zmm1, %zmm2, %zmm0 {%k1}
988 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %y, <32 x bfloat> %x)
989 %b = bitcast i32 %mask to <32 x i1>
990 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
994 define <32 x bfloat> @fma_mask_132_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
995 ; CHECK-LABEL: fma_mask_132_v32bf16:
997 ; CHECK-NEXT: kmovd %edi, %k1
998 ; CHECK-NEXT: vfmadd132nepbf16 %zmm2, %zmm1, %zmm0 {%k1}
1000 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %z, <32 x bfloat> %y)
1001 %b = bitcast i32 %mask to <32 x i1>
1002 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1003 ret <32 x bfloat> %c
1006 define <32 x bfloat> @fma_mask_312_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
1007 ; CHECK-LABEL: fma_mask_312_v32bf16:
1009 ; CHECK-NEXT: kmovd %edi, %k1
1010 ; CHECK-NEXT: vfmadd213nepbf16 %zmm1, %zmm2, %zmm0 {%k1}
1012 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %x, <32 x bfloat> %y)
1013 %b = bitcast i32 %mask to <32 x i1>
1014 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1015 ret <32 x bfloat> %c
1018 define <32 x bfloat> @fma_maskz_123_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
1019 ; CHECK-LABEL: fma_maskz_123_v32bf16:
1021 ; CHECK-NEXT: kmovd %edi, %k1
1022 ; CHECK-NEXT: vfmadd213nepbf16 %zmm2, %zmm1, %zmm0 {%k1} {z}
1024 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z)
1025 %b = bitcast i32 %mask to <32 x i1>
1026 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1027 ret <32 x bfloat> %c
1030 define <32 x bfloat> @fma_maskz_213_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
1031 ; CHECK-LABEL: fma_maskz_213_v32bf16:
1033 ; CHECK-NEXT: kmovd %edi, %k1
1034 ; CHECK-NEXT: vfmadd213nepbf16 %zmm2, %zmm1, %zmm0 {%k1} {z}
1036 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %x, <32 x bfloat> %z)
1037 %b = bitcast i32 %mask to <32 x i1>
1038 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1039 ret <32 x bfloat> %c
1042 define <32 x bfloat> @fma_maskz_231_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
1043 ; CHECK-LABEL: fma_maskz_231_v32bf16:
1045 ; CHECK-NEXT: kmovd %edi, %k1
1046 ; CHECK-NEXT: vfmadd231nepbf16 %zmm1, %zmm2, %zmm0 {%k1} {z}
1048 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %z, <32 x bfloat> %x)
1049 %b = bitcast i32 %mask to <32 x i1>
1050 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1051 ret <32 x bfloat> %c
1054 define <32 x bfloat> @fma_maskz_321_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
1055 ; CHECK-LABEL: fma_maskz_321_v32bf16:
1057 ; CHECK-NEXT: kmovd %edi, %k1
1058 ; CHECK-NEXT: vfmadd231nepbf16 %zmm1, %zmm2, %zmm0 {%k1} {z}
1060 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %y, <32 x bfloat> %x)
1061 %b = bitcast i32 %mask to <32 x i1>
1062 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1063 ret <32 x bfloat> %c
1066 define <32 x bfloat> @fma_maskz_132_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
1067 ; CHECK-LABEL: fma_maskz_132_v32bf16:
1069 ; CHECK-NEXT: kmovd %edi, %k1
1070 ; CHECK-NEXT: vfmadd213nepbf16 %zmm1, %zmm2, %zmm0 {%k1} {z}
1072 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %z, <32 x bfloat> %y)
1073 %b = bitcast i32 %mask to <32 x i1>
1074 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1075 ret <32 x bfloat> %c
1078 define <32 x bfloat> @fma_maskz_312_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z, i32 %mask) {
1079 ; CHECK-LABEL: fma_maskz_312_v32bf16:
1081 ; CHECK-NEXT: kmovd %edi, %k1
1082 ; CHECK-NEXT: vfmadd213nepbf16 %zmm1, %zmm2, %zmm0 {%k1} {z}
1084 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %x, <32 x bfloat> %y)
1085 %b = bitcast i32 %mask to <32 x i1>
1086 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1087 ret <32 x bfloat> %c
1090 define <32 x bfloat> @fma_mask_load_123_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1091 ; CHECK-LABEL: fma_mask_load_123_v32bf16:
1093 ; CHECK-NEXT: kmovd %esi, %k1
1094 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %zmm1, %zmm0 {%k1}
1096 %z = load <32 x bfloat>, ptr %zp
1097 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z)
1098 %b = bitcast i32 %mask to <32 x i1>
1099 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1100 ret <32 x bfloat> %c
1103 define <32 x bfloat> @fma_mask_load_213_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1104 ; CHECK-LABEL: fma_mask_load_213_v32bf16:
1106 ; CHECK-NEXT: kmovd %esi, %k1
1107 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %zmm1, %zmm0 {%k1}
1109 %z = load <32 x bfloat>, ptr %zp
1110 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %x, <32 x bfloat> %z)
1111 %b = bitcast i32 %mask to <32 x i1>
1112 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1113 ret <32 x bfloat> %c
1116 define <32 x bfloat> @fma_mask_load_231_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1117 ; CHECK-LABEL: fma_mask_load_231_v32bf16:
1119 ; CHECK-NEXT: kmovd %esi, %k1
1120 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %zmm1, %zmm0 {%k1}
1122 %z = load <32 x bfloat>, ptr %zp
1123 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %z, <32 x bfloat> %x)
1124 %b = bitcast i32 %mask to <32 x i1>
1125 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1126 ret <32 x bfloat> %c
1129 define <32 x bfloat> @fma_mask_load_321_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1130 ; CHECK-LABEL: fma_mask_load_321_v32bf16:
1132 ; CHECK-NEXT: kmovd %esi, %k1
1133 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %zmm1, %zmm0 {%k1}
1135 %z = load <32 x bfloat>, ptr %zp
1136 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %y, <32 x bfloat> %x)
1137 %b = bitcast i32 %mask to <32 x i1>
1138 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1139 ret <32 x bfloat> %c
1142 define <32 x bfloat> @fma_mask_load_132_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1143 ; CHECK-LABEL: fma_mask_load_132_v32bf16:
1145 ; CHECK-NEXT: kmovd %esi, %k1
1146 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %zmm1, %zmm0 {%k1}
1148 %z = load <32 x bfloat>, ptr %zp
1149 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %z, <32 x bfloat> %y)
1150 %b = bitcast i32 %mask to <32 x i1>
1151 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1152 ret <32 x bfloat> %c
1155 define <32 x bfloat> @fma_mask_load_312_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1156 ; CHECK-LABEL: fma_mask_load_312_v32bf16:
1158 ; CHECK-NEXT: kmovd %esi, %k1
1159 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %zmm1, %zmm0 {%k1}
1161 %z = load <32 x bfloat>, ptr %zp
1162 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %x, <32 x bfloat> %y)
1163 %b = bitcast i32 %mask to <32 x i1>
1164 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> %x
1165 ret <32 x bfloat> %c
1168 define <32 x bfloat> @fma_maskz_load_123_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1169 ; CHECK-LABEL: fma_maskz_load_123_v32bf16:
1171 ; CHECK-NEXT: kmovd %esi, %k1
1172 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %zmm1, %zmm0 {%k1} {z}
1174 %z = load <32 x bfloat>, ptr %zp
1175 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, <32 x bfloat> %z)
1176 %b = bitcast i32 %mask to <32 x i1>
1177 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1178 ret <32 x bfloat> %c
1181 define <32 x bfloat> @fma_maskz_load_213_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1182 ; CHECK-LABEL: fma_maskz_load_213_v32bf16:
1184 ; CHECK-NEXT: kmovd %esi, %k1
1185 ; CHECK-NEXT: vfmadd213nepbf16 (%rdi), %zmm1, %zmm0 {%k1} {z}
1187 %z = load <32 x bfloat>, ptr %zp
1188 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %x, <32 x bfloat> %z)
1189 %b = bitcast i32 %mask to <32 x i1>
1190 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1191 ret <32 x bfloat> %c
1194 define <32 x bfloat> @fma_maskz_load_231_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1195 ; CHECK-LABEL: fma_maskz_load_231_v32bf16:
1197 ; CHECK-NEXT: kmovd %esi, %k1
1198 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %zmm1, %zmm0 {%k1} {z}
1200 %z = load <32 x bfloat>, ptr %zp
1201 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %y, <32 x bfloat> %z, <32 x bfloat> %x)
1202 %b = bitcast i32 %mask to <32 x i1>
1203 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1204 ret <32 x bfloat> %c
1207 define <32 x bfloat> @fma_maskz_load_321_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1208 ; CHECK-LABEL: fma_maskz_load_321_v32bf16:
1210 ; CHECK-NEXT: kmovd %esi, %k1
1211 ; CHECK-NEXT: vfmadd231nepbf16 (%rdi), %zmm1, %zmm0 {%k1} {z}
1213 %z = load <32 x bfloat>, ptr %zp
1214 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %y, <32 x bfloat> %x)
1215 %b = bitcast i32 %mask to <32 x i1>
1216 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1217 ret <32 x bfloat> %c
1220 define <32 x bfloat> @fma_maskz_load_132_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1221 ; CHECK-LABEL: fma_maskz_load_132_v32bf16:
1223 ; CHECK-NEXT: kmovd %esi, %k1
1224 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %zmm1, %zmm0 {%k1} {z}
1226 %z = load <32 x bfloat>, ptr %zp
1227 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %x, <32 x bfloat> %z, <32 x bfloat> %y)
1228 %b = bitcast i32 %mask to <32 x i1>
1229 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1230 ret <32 x bfloat> %c
1233 define <32 x bfloat> @fma_maskz_load_312_v32bf16(<32 x bfloat> %x, <32 x bfloat> %y, ptr %zp, i32 %mask) {
1234 ; CHECK-LABEL: fma_maskz_load_312_v32bf16:
1236 ; CHECK-NEXT: kmovd %esi, %k1
1237 ; CHECK-NEXT: vfmadd132nepbf16 (%rdi), %zmm1, %zmm0 {%k1} {z}
1239 %z = load <32 x bfloat>, ptr %zp
1240 %a = call <32 x bfloat> @llvm.fma.v32bf16(<32 x bfloat> %z, <32 x bfloat> %x, <32 x bfloat> %y)
1241 %b = bitcast i32 %mask to <32 x i1>
1242 %c = select <32 x i1> %b, <32 x bfloat> %a, <32 x bfloat> zeroinitializer
1243 ret <32 x bfloat> %c