@@ -433,3 +433,107 @@ define <16 x i16> @pr31515(<16 x i1> %a, <16 x i1> %b, <16 x i16> %c) nounwind {
433
433
ret <16 x i16 > %res
434
434
}
435
435
436
+ define <32 x i16 > @pr42355_v32i16 (i1 %c , <32 x i16 > %x , <32 x i16 > %y ) {
437
+ ; X86-AVX512F-LABEL: pr42355_v32i16:
438
+ ; X86-AVX512F: # %bb.0:
439
+ ; X86-AVX512F-NEXT: pushl %ebp
440
+ ; X86-AVX512F-NEXT: .cfi_def_cfa_offset 8
441
+ ; X86-AVX512F-NEXT: .cfi_offset %ebp, -8
442
+ ; X86-AVX512F-NEXT: movl %esp, %ebp
443
+ ; X86-AVX512F-NEXT: .cfi_def_cfa_register %ebp
444
+ ; X86-AVX512F-NEXT: andl $-32, %esp
445
+ ; X86-AVX512F-NEXT: subl $32, %esp
446
+ ; X86-AVX512F-NEXT: testb $1, 8(%ebp)
447
+ ; X86-AVX512F-NEXT: jne .LBB14_2
448
+ ; X86-AVX512F-NEXT: # %bb.1:
449
+ ; X86-AVX512F-NEXT: vmovaps 40(%ebp), %ymm1
450
+ ; X86-AVX512F-NEXT: vmovaps %ymm2, %ymm0
451
+ ; X86-AVX512F-NEXT: .LBB14_2:
452
+ ; X86-AVX512F-NEXT: movl %ebp, %esp
453
+ ; X86-AVX512F-NEXT: popl %ebp
454
+ ; X86-AVX512F-NEXT: .cfi_def_cfa %esp, 4
455
+ ; X86-AVX512F-NEXT: retl
456
+ ;
457
+ ; X64-AVX512F-LABEL: pr42355_v32i16:
458
+ ; X64-AVX512F: # %bb.0:
459
+ ; X64-AVX512F-NEXT: testb $1, %dil
460
+ ; X64-AVX512F-NEXT: jne .LBB14_2
461
+ ; X64-AVX512F-NEXT: # %bb.1:
462
+ ; X64-AVX512F-NEXT: vmovaps %ymm2, %ymm0
463
+ ; X64-AVX512F-NEXT: vmovaps %ymm3, %ymm1
464
+ ; X64-AVX512F-NEXT: .LBB14_2:
465
+ ; X64-AVX512F-NEXT: retq
466
+ ;
467
+ ; X86-AVX512BW-LABEL: pr42355_v32i16:
468
+ ; X86-AVX512BW: # %bb.0:
469
+ ; X86-AVX512BW-NEXT: testb $1, {{[0-9]+}}(%esp)
470
+ ; X86-AVX512BW-NEXT: jne .LBB14_2
471
+ ; X86-AVX512BW-NEXT: # %bb.1:
472
+ ; X86-AVX512BW-NEXT: vmovaps %zmm1, %zmm0
473
+ ; X86-AVX512BW-NEXT: .LBB14_2:
474
+ ; X86-AVX512BW-NEXT: retl
475
+ ;
476
+ ; X64-AVX512BW-LABEL: pr42355_v32i16:
477
+ ; X64-AVX512BW: # %bb.0:
478
+ ; X64-AVX512BW-NEXT: testb $1, %dil
479
+ ; X64-AVX512BW-NEXT: jne .LBB14_2
480
+ ; X64-AVX512BW-NEXT: # %bb.1:
481
+ ; X64-AVX512BW-NEXT: vmovaps %zmm1, %zmm0
482
+ ; X64-AVX512BW-NEXT: .LBB14_2:
483
+ ; X64-AVX512BW-NEXT: retq
484
+ %a = select i1 %c , <32 x i16 > %x , <32 x i16 > %y
485
+ ret <32 x i16 > %a
486
+ }
487
+
488
+ define <64 x i8 > @pr42355_v64i8 (i1 %c , <64 x i8 > %x , <64 x i8 > %y ) {
489
+ ; X86-AVX512F-LABEL: pr42355_v64i8:
490
+ ; X86-AVX512F: # %bb.0:
491
+ ; X86-AVX512F-NEXT: pushl %ebp
492
+ ; X86-AVX512F-NEXT: .cfi_def_cfa_offset 8
493
+ ; X86-AVX512F-NEXT: .cfi_offset %ebp, -8
494
+ ; X86-AVX512F-NEXT: movl %esp, %ebp
495
+ ; X86-AVX512F-NEXT: .cfi_def_cfa_register %ebp
496
+ ; X86-AVX512F-NEXT: andl $-32, %esp
497
+ ; X86-AVX512F-NEXT: subl $32, %esp
498
+ ; X86-AVX512F-NEXT: testb $1, 8(%ebp)
499
+ ; X86-AVX512F-NEXT: jne .LBB15_2
500
+ ; X86-AVX512F-NEXT: # %bb.1:
501
+ ; X86-AVX512F-NEXT: vmovaps 40(%ebp), %ymm1
502
+ ; X86-AVX512F-NEXT: vmovaps %ymm2, %ymm0
503
+ ; X86-AVX512F-NEXT: .LBB15_2:
504
+ ; X86-AVX512F-NEXT: movl %ebp, %esp
505
+ ; X86-AVX512F-NEXT: popl %ebp
506
+ ; X86-AVX512F-NEXT: .cfi_def_cfa %esp, 4
507
+ ; X86-AVX512F-NEXT: retl
508
+ ;
509
+ ; X64-AVX512F-LABEL: pr42355_v64i8:
510
+ ; X64-AVX512F: # %bb.0:
511
+ ; X64-AVX512F-NEXT: testb $1, %dil
512
+ ; X64-AVX512F-NEXT: jne .LBB15_2
513
+ ; X64-AVX512F-NEXT: # %bb.1:
514
+ ; X64-AVX512F-NEXT: vmovaps %ymm2, %ymm0
515
+ ; X64-AVX512F-NEXT: vmovaps %ymm3, %ymm1
516
+ ; X64-AVX512F-NEXT: .LBB15_2:
517
+ ; X64-AVX512F-NEXT: retq
518
+ ;
519
+ ; X86-AVX512BW-LABEL: pr42355_v64i8:
520
+ ; X86-AVX512BW: # %bb.0:
521
+ ; X86-AVX512BW-NEXT: testb $1, {{[0-9]+}}(%esp)
522
+ ; X86-AVX512BW-NEXT: jne .LBB15_2
523
+ ; X86-AVX512BW-NEXT: # %bb.1:
524
+ ; X86-AVX512BW-NEXT: vmovaps %zmm1, %zmm0
525
+ ; X86-AVX512BW-NEXT: .LBB15_2:
526
+ ; X86-AVX512BW-NEXT: retl
527
+ ;
528
+ ; X64-AVX512BW-LABEL: pr42355_v64i8:
529
+ ; X64-AVX512BW: # %bb.0:
530
+ ; X64-AVX512BW-NEXT: testb $1, %dil
531
+ ; X64-AVX512BW-NEXT: jne .LBB15_2
532
+ ; X64-AVX512BW-NEXT: # %bb.1:
533
+ ; X64-AVX512BW-NEXT: vmovaps %zmm1, %zmm0
534
+ ; X64-AVX512BW-NEXT: .LBB15_2:
535
+ ; X64-AVX512BW-NEXT: retq
536
+ %a = select i1 %c , <64 x i8 > %x , <64 x i8 > %y
537
+ ret <64 x i8 > %a
538
+ }
539
+
0 commit comments