@@ -253,6 +253,258 @@ define <16 x float> @fsub_v16f32_commute_swap(<16 x i1> %b, <16 x float> noundef
253
253
ret <16 x float > %r
254
254
}
255
255
256
+ define <4 x float > @fmul_v4f32 (<4 x i1 > %b , <4 x float > noundef %x , <4 x float > noundef %y ) {
257
+ ; AVX2-LABEL: fmul_v4f32:
258
+ ; AVX2: # %bb.0:
259
+ ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
260
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
261
+ ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm3, %xmm0
262
+ ; AVX2-NEXT: vmulps %xmm0, %xmm1, %xmm0
263
+ ; AVX2-NEXT: retq
264
+ ;
265
+ ; AVX512F-LABEL: fmul_v4f32:
266
+ ; AVX512F: # %bb.0:
267
+ ; AVX512F-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2
268
+ ; AVX512F-NEXT: vpslld $31, %xmm0, %xmm0
269
+ ; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k1
270
+ ; AVX512F-NEXT: vbroadcastss {{.*#+}} xmm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
271
+ ; AVX512F-NEXT: vmovaps %zmm2, %zmm0 {%k1}
272
+ ; AVX512F-NEXT: vmulps %xmm0, %xmm1, %xmm0
273
+ ; AVX512F-NEXT: vzeroupper
274
+ ; AVX512F-NEXT: retq
275
+ ;
276
+ ; AVX512VL-LABEL: fmul_v4f32:
277
+ ; AVX512VL: # %bb.0:
278
+ ; AVX512VL-NEXT: vpslld $31, %xmm0, %xmm0
279
+ ; AVX512VL-NEXT: vptestmd %xmm0, %xmm0, %k1
280
+ ; AVX512VL-NEXT: vbroadcastss {{.*#+}} xmm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
281
+ ; AVX512VL-NEXT: vmovaps %xmm2, %xmm0 {%k1}
282
+ ; AVX512VL-NEXT: vmulps %xmm0, %xmm1, %xmm0
283
+ ; AVX512VL-NEXT: retq
284
+ %s = select <4 x i1 > %b , <4 x float > %y , <4 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >
285
+ %r = fmul <4 x float > %x , %s
286
+ ret <4 x float > %r
287
+ }
288
+
289
+ define <8 x float > @fmul_v8f32_commute (<8 x i1 > %b , <8 x float > noundef %x , <8 x float > noundef %y ) {
290
+ ; AVX2-LABEL: fmul_v8f32_commute:
291
+ ; AVX2: # %bb.0:
292
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
293
+ ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
294
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
295
+ ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm3, %ymm0
296
+ ; AVX2-NEXT: vmulps %ymm1, %ymm0, %ymm0
297
+ ; AVX2-NEXT: retq
298
+ ;
299
+ ; AVX512F-LABEL: fmul_v8f32_commute:
300
+ ; AVX512F: # %bb.0:
301
+ ; AVX512F-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
302
+ ; AVX512F-NEXT: vpmovsxwq %xmm0, %zmm0
303
+ ; AVX512F-NEXT: vpsllq $63, %zmm0, %zmm0
304
+ ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k1
305
+ ; AVX512F-NEXT: vbroadcastss {{.*#+}} ymm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
306
+ ; AVX512F-NEXT: vmovaps %zmm2, %zmm0 {%k1}
307
+ ; AVX512F-NEXT: vmulps %ymm1, %ymm0, %ymm0
308
+ ; AVX512F-NEXT: retq
309
+ ;
310
+ ; AVX512VL-LABEL: fmul_v8f32_commute:
311
+ ; AVX512VL: # %bb.0:
312
+ ; AVX512VL-NEXT: vpmovsxwd %xmm0, %ymm0
313
+ ; AVX512VL-NEXT: vpslld $31, %ymm0, %ymm0
314
+ ; AVX512VL-NEXT: vptestmd %ymm0, %ymm0, %k1
315
+ ; AVX512VL-NEXT: vbroadcastss {{.*#+}} ymm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
316
+ ; AVX512VL-NEXT: vmovaps %ymm2, %ymm0 {%k1}
317
+ ; AVX512VL-NEXT: vmulps %ymm1, %ymm0, %ymm0
318
+ ; AVX512VL-NEXT: retq
319
+ %s = select <8 x i1 > %b , <8 x float > %y , <8 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >
320
+ %r = fmul <8 x float > %s , %x
321
+ ret <8 x float > %r
322
+ }
323
+
324
+ define <16 x float > @fmul_v16f32_swap (<16 x i1 > %b , <16 x float > noundef %x , <16 x float > noundef %y ) {
325
+ ; AVX2-LABEL: fmul_v16f32_swap:
326
+ ; AVX2: # %bb.0:
327
+ ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
328
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero
329
+ ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
330
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
331
+ ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
332
+ ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
333
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
334
+ ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
335
+ ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
336
+ ; AVX2-NEXT: vmulps %ymm3, %ymm1, %ymm0
337
+ ; AVX2-NEXT: vmulps %ymm4, %ymm2, %ymm1
338
+ ; AVX2-NEXT: retq
339
+ ;
340
+ ; AVX512-LABEL: fmul_v16f32_swap:
341
+ ; AVX512: # %bb.0:
342
+ ; AVX512-NEXT: vpmovsxbd %xmm0, %zmm0
343
+ ; AVX512-NEXT: vpslld $31, %zmm0, %zmm0
344
+ ; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k1
345
+ ; AVX512-NEXT: vbroadcastss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2 {%k1}
346
+ ; AVX512-NEXT: vmulps %zmm2, %zmm1, %zmm0
347
+ ; AVX512-NEXT: retq
348
+ %s = select <16 x i1 > %b , <16 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >, <16 x float > %y
349
+ %r = fmul <16 x float > %x , %s
350
+ ret <16 x float > %r
351
+ }
352
+
353
+ define <16 x float > @fmul_v16f32_commute_swap (<16 x i1 > %b , <16 x float > noundef %x , <16 x float > noundef %y ) {
354
+ ; AVX2-LABEL: fmul_v16f32_commute_swap:
355
+ ; AVX2: # %bb.0:
356
+ ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
357
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero
358
+ ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
359
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
360
+ ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
361
+ ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
362
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
363
+ ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
364
+ ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
365
+ ; AVX2-NEXT: vmulps %ymm1, %ymm3, %ymm0
366
+ ; AVX2-NEXT: vmulps %ymm2, %ymm4, %ymm1
367
+ ; AVX2-NEXT: retq
368
+ ;
369
+ ; AVX512-LABEL: fmul_v16f32_commute_swap:
370
+ ; AVX512: # %bb.0:
371
+ ; AVX512-NEXT: vpmovsxbd %xmm0, %zmm0
372
+ ; AVX512-NEXT: vpslld $31, %zmm0, %zmm0
373
+ ; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k1
374
+ ; AVX512-NEXT: vbroadcastss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2 {%k1}
375
+ ; AVX512-NEXT: vmulps %zmm1, %zmm2, %zmm0
376
+ ; AVX512-NEXT: retq
377
+ %s = select <16 x i1 > %b , <16 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >, <16 x float > %y
378
+ %r = fmul <16 x float > %s , %x
379
+ ret <16 x float > %r
380
+ }
381
+
382
+ define <4 x float > @fdiv_v4f32 (<4 x i1 > %b , <4 x float > noundef %x , <4 x float > noundef %y ) {
383
+ ; AVX2-LABEL: fdiv_v4f32:
384
+ ; AVX2: # %bb.0:
385
+ ; AVX2-NEXT: vpslld $31, %xmm0, %xmm0
386
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} xmm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
387
+ ; AVX2-NEXT: vblendvps %xmm0, %xmm2, %xmm3, %xmm0
388
+ ; AVX2-NEXT: vdivps %xmm0, %xmm1, %xmm0
389
+ ; AVX2-NEXT: retq
390
+ ;
391
+ ; AVX512F-LABEL: fdiv_v4f32:
392
+ ; AVX512F: # %bb.0:
393
+ ; AVX512F-NEXT: # kill: def $xmm2 killed $xmm2 def $zmm2
394
+ ; AVX512F-NEXT: vpslld $31, %xmm0, %xmm0
395
+ ; AVX512F-NEXT: vptestmd %zmm0, %zmm0, %k1
396
+ ; AVX512F-NEXT: vbroadcastss {{.*#+}} xmm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
397
+ ; AVX512F-NEXT: vmovaps %zmm2, %zmm0 {%k1}
398
+ ; AVX512F-NEXT: vdivps %xmm0, %xmm1, %xmm0
399
+ ; AVX512F-NEXT: vzeroupper
400
+ ; AVX512F-NEXT: retq
401
+ ;
402
+ ; AVX512VL-LABEL: fdiv_v4f32:
403
+ ; AVX512VL: # %bb.0:
404
+ ; AVX512VL-NEXT: vpslld $31, %xmm0, %xmm0
405
+ ; AVX512VL-NEXT: vptestmd %xmm0, %xmm0, %k1
406
+ ; AVX512VL-NEXT: vbroadcastss {{.*#+}} xmm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0]
407
+ ; AVX512VL-NEXT: vmovaps %xmm2, %xmm0 {%k1}
408
+ ; AVX512VL-NEXT: vdivps %xmm0, %xmm1, %xmm0
409
+ ; AVX512VL-NEXT: retq
410
+ %s = select <4 x i1 > %b , <4 x float > %y , <4 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >
411
+ %r = fdiv <4 x float > %x , %s
412
+ ret <4 x float > %r
413
+ }
414
+
415
+ define <8 x float > @fdiv_v8f32_commute (<8 x i1 > %b , <8 x float > noundef %x , <8 x float > noundef %y ) {
416
+ ; AVX2-LABEL: fdiv_v8f32_commute:
417
+ ; AVX2: # %bb.0:
418
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
419
+ ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
420
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm3 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
421
+ ; AVX2-NEXT: vblendvps %ymm0, %ymm2, %ymm3, %ymm0
422
+ ; AVX2-NEXT: vdivps %ymm1, %ymm0, %ymm0
423
+ ; AVX2-NEXT: retq
424
+ ;
425
+ ; AVX512F-LABEL: fdiv_v8f32_commute:
426
+ ; AVX512F: # %bb.0:
427
+ ; AVX512F-NEXT: # kill: def $ymm2 killed $ymm2 def $zmm2
428
+ ; AVX512F-NEXT: vpmovsxwq %xmm0, %zmm0
429
+ ; AVX512F-NEXT: vpsllq $63, %zmm0, %zmm0
430
+ ; AVX512F-NEXT: vptestmq %zmm0, %zmm0, %k1
431
+ ; AVX512F-NEXT: vbroadcastss {{.*#+}} ymm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
432
+ ; AVX512F-NEXT: vmovaps %zmm2, %zmm0 {%k1}
433
+ ; AVX512F-NEXT: vdivps %ymm1, %ymm0, %ymm0
434
+ ; AVX512F-NEXT: retq
435
+ ;
436
+ ; AVX512VL-LABEL: fdiv_v8f32_commute:
437
+ ; AVX512VL: # %bb.0:
438
+ ; AVX512VL-NEXT: vpmovsxwd %xmm0, %ymm0
439
+ ; AVX512VL-NEXT: vpslld $31, %ymm0, %ymm0
440
+ ; AVX512VL-NEXT: vptestmd %ymm0, %ymm0, %k1
441
+ ; AVX512VL-NEXT: vbroadcastss {{.*#+}} ymm0 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
442
+ ; AVX512VL-NEXT: vmovaps %ymm2, %ymm0 {%k1}
443
+ ; AVX512VL-NEXT: vdivps %ymm1, %ymm0, %ymm0
444
+ ; AVX512VL-NEXT: retq
445
+ %s = select <8 x i1 > %b , <8 x float > %y , <8 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >
446
+ %r = fdiv <8 x float > %s , %x
447
+ ret <8 x float > %r
448
+ }
449
+
450
+ define <16 x float > @fdiv_v16f32_swap (<16 x i1 > %b , <16 x float > noundef %x , <16 x float > noundef %y ) {
451
+ ; AVX2-LABEL: fdiv_v16f32_swap:
452
+ ; AVX2: # %bb.0:
453
+ ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
454
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero
455
+ ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
456
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
457
+ ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
458
+ ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
459
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
460
+ ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
461
+ ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
462
+ ; AVX2-NEXT: vdivps %ymm3, %ymm1, %ymm0
463
+ ; AVX2-NEXT: vdivps %ymm4, %ymm2, %ymm1
464
+ ; AVX2-NEXT: retq
465
+ ;
466
+ ; AVX512-LABEL: fdiv_v16f32_swap:
467
+ ; AVX512: # %bb.0:
468
+ ; AVX512-NEXT: vpmovsxbd %xmm0, %zmm0
469
+ ; AVX512-NEXT: vpslld $31, %zmm0, %zmm0
470
+ ; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k1
471
+ ; AVX512-NEXT: vbroadcastss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2 {%k1}
472
+ ; AVX512-NEXT: vdivps %zmm2, %zmm1, %zmm0
473
+ ; AVX512-NEXT: retq
474
+ %s = select <16 x i1 > %b , <16 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >, <16 x float > %y
475
+ %r = fdiv <16 x float > %x , %s
476
+ ret <16 x float > %r
477
+ }
478
+
479
+ define <16 x float > @fdiv_v16f32_commute_swap (<16 x i1 > %b , <16 x float > noundef %x , <16 x float > noundef %y ) {
480
+ ; AVX2-LABEL: fdiv_v16f32_commute_swap:
481
+ ; AVX2: # %bb.0:
482
+ ; AVX2-NEXT: vpmovzxbw {{.*#+}} xmm5 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
483
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm5 = xmm5[0],zero,xmm5[1],zero,xmm5[2],zero,xmm5[3],zero,xmm5[4],zero,xmm5[5],zero,xmm5[6],zero,xmm5[7],zero
484
+ ; AVX2-NEXT: vpslld $31, %ymm5, %ymm5
485
+ ; AVX2-NEXT: vbroadcastss {{.*#+}} ymm6 = [1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0,1.0E+0]
486
+ ; AVX2-NEXT: vblendvps %ymm5, %ymm6, %ymm3, %ymm3
487
+ ; AVX2-NEXT: vpunpckhbw {{.*#+}} xmm0 = xmm0[8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15]
488
+ ; AVX2-NEXT: vpmovzxwd {{.*#+}} ymm0 = xmm0[0],zero,xmm0[1],zero,xmm0[2],zero,xmm0[3],zero,xmm0[4],zero,xmm0[5],zero,xmm0[6],zero,xmm0[7],zero
489
+ ; AVX2-NEXT: vpslld $31, %ymm0, %ymm0
490
+ ; AVX2-NEXT: vblendvps %ymm0, %ymm6, %ymm4, %ymm4
491
+ ; AVX2-NEXT: vdivps %ymm1, %ymm3, %ymm0
492
+ ; AVX2-NEXT: vdivps %ymm2, %ymm4, %ymm1
493
+ ; AVX2-NEXT: retq
494
+ ;
495
+ ; AVX512-LABEL: fdiv_v16f32_commute_swap:
496
+ ; AVX512: # %bb.0:
497
+ ; AVX512-NEXT: vpmovsxbd %xmm0, %zmm0
498
+ ; AVX512-NEXT: vpslld $31, %zmm0, %zmm0
499
+ ; AVX512-NEXT: vptestmd %zmm0, %zmm0, %k1
500
+ ; AVX512-NEXT: vbroadcastss {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %zmm2 {%k1}
501
+ ; AVX512-NEXT: vdivps %zmm1, %zmm2, %zmm0
502
+ ; AVX512-NEXT: retq
503
+ %s = select <16 x i1 > %b , <16 x float > <float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 , float 1 .0 >, <16 x float > %y
504
+ %r = fdiv <16 x float > %s , %x
505
+ ret <16 x float > %r
506
+ }
507
+
256
508
define <8 x float > @fadd_v8f32_cast_cond (i8 noundef zeroext %pb , <8 x float > noundef %x , <8 x float > noundef %y ) {
257
509
; AVX2-LABEL: fadd_v8f32_cast_cond:
258
510
; AVX2: # %bb.0:
0 commit comments