@@ -393,9 +393,8 @@ define <16 x i16> @test_masked_z_32xi16_to_16xi16_perm_mask2(<32 x i16> %vec, <1
393
393
define <16 x i16 > @test_32xi16_to_16xi16_perm_mask3 (<32 x i16 > %vec ) {
394
394
; CHECK-LABEL: test_32xi16_to_16xi16_perm_mask3:
395
395
; CHECK: # %bb.0:
396
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm1
397
- ; CHECK-NEXT: vpmovsxbw {{.*#+}} ymm2 = [1,0,30,5,3,6,25,29,0,13,3,8,7,20,11,5]
398
- ; CHECK-NEXT: vpermt2w %ymm1, %ymm2, %ymm0
396
+ ; CHECK-NEXT: vpmovsxbw {{.*#+}} ymm1 = [1,0,30,5,3,6,25,29,0,13,3,8,7,20,11,5]
397
+ ; CHECK-NEXT: vpermw %zmm0, %zmm1, %zmm0
399
398
; CHECK-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
400
399
; CHECK-NEXT: retq
401
400
%res = shufflevector <32 x i16 > %vec , <32 x i16 > undef , <16 x i32 > <i32 1 , i32 0 , i32 30 , i32 5 , i32 3 , i32 6 , i32 25 , i32 29 , i32 0 , i32 13 , i32 3 , i32 8 , i32 7 , i32 20 , i32 11 , i32 5 >
@@ -404,11 +403,10 @@ define <16 x i16> @test_32xi16_to_16xi16_perm_mask3(<32 x i16> %vec) {
404
403
define <16 x i16 > @test_masked_32xi16_to_16xi16_perm_mask3 (<32 x i16 > %vec , <16 x i16 > %vec2 , <16 x i16 > %mask ) {
405
404
; CHECK-LABEL: test_masked_32xi16_to_16xi16_perm_mask3:
406
405
; CHECK: # %bb.0:
407
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm3
408
- ; CHECK-NEXT: vpmovsxbw {{.*#+}} ymm4 = [1,0,30,5,3,6,25,29,0,13,3,8,7,20,11,5]
409
- ; CHECK-NEXT: vpermi2w %ymm3, %ymm0, %ymm4
406
+ ; CHECK-NEXT: vpmovsxbw {{.*#+}} ymm3 = [1,0,30,5,3,6,25,29,0,13,3,8,7,20,11,5]
407
+ ; CHECK-NEXT: vpermw %zmm0, %zmm3, %zmm0
410
408
; CHECK-NEXT: vptestnmw %ymm2, %ymm2, %k1
411
- ; CHECK-NEXT: vpblendmw %ymm4 , %ymm1, %ymm0 {%k1}
409
+ ; CHECK-NEXT: vpblendmw %ymm0 , %ymm1, %ymm0 {%k1}
412
410
; CHECK-NEXT: retq
413
411
%shuf = shufflevector <32 x i16 > %vec , <32 x i16 > undef , <16 x i32 > <i32 1 , i32 0 , i32 30 , i32 5 , i32 3 , i32 6 , i32 25 , i32 29 , i32 0 , i32 13 , i32 3 , i32 8 , i32 7 , i32 20 , i32 11 , i32 5 >
414
412
%cmp = icmp eq <16 x i16 > %mask , zeroinitializer
@@ -419,10 +417,9 @@ define <16 x i16> @test_masked_32xi16_to_16xi16_perm_mask3(<32 x i16> %vec, <16
419
417
define <16 x i16 > @test_masked_z_32xi16_to_16xi16_perm_mask3 (<32 x i16 > %vec , <16 x i16 > %mask ) {
420
418
; CHECK-LABEL: test_masked_z_32xi16_to_16xi16_perm_mask3:
421
419
; CHECK: # %bb.0:
422
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm2
423
- ; CHECK-NEXT: vpmovsxbw {{.*#+}} ymm3 = [1,0,30,5,3,6,25,29,0,13,3,8,7,20,11,5]
420
+ ; CHECK-NEXT: vpmovsxbw {{.*#+}} ymm2 = [1,0,30,5,3,6,25,29,0,13,3,8,7,20,11,5]
424
421
; CHECK-NEXT: vptestnmw %ymm1, %ymm1, %k1
425
- ; CHECK-NEXT: vpermt2w %ymm2 , %ymm3 , %ymm0 {%k1} {z}
422
+ ; CHECK-NEXT: vpermw %zmm0 , %zmm2 , %zmm0 {%k1} {z}
426
423
; CHECK-NEXT: # kill: def $ymm0 killed $ymm0 killed $zmm0
427
424
; CHECK-NEXT: retq
428
425
%shuf = shufflevector <32 x i16 > %vec , <32 x i16 > undef , <16 x i32 > <i32 1 , i32 0 , i32 30 , i32 5 , i32 3 , i32 6 , i32 25 , i32 29 , i32 0 , i32 13 , i32 3 , i32 8 , i32 7 , i32 20 , i32 11 , i32 5 >
@@ -477,8 +474,7 @@ define <8 x i16> @test_masked_32xi16_to_8xi16_perm_mask1(<32 x i16> %vec, <8 x i
477
474
; CHECK-LABEL: test_masked_32xi16_to_8xi16_perm_mask1:
478
475
; CHECK: # %bb.0:
479
476
; CHECK-NEXT: vpmovsxbw {{.*#+}} xmm3 = [1,21,27,10,8,19,14,5]
480
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm4
481
- ; CHECK-NEXT: vpermt2w %ymm4, %ymm3, %ymm0
477
+ ; CHECK-NEXT: vpermw %zmm0, %zmm3, %zmm0
482
478
; CHECK-NEXT: vptestnmw %xmm2, %xmm2, %k1
483
479
; CHECK-NEXT: vpblendmw %xmm0, %xmm1, %xmm0 {%k1}
484
480
; CHECK-NEXT: vzeroupper
@@ -493,9 +489,8 @@ define <8 x i16> @test_masked_z_32xi16_to_8xi16_perm_mask1(<32 x i16> %vec, <8 x
493
489
; CHECK-LABEL: test_masked_z_32xi16_to_8xi16_perm_mask1:
494
490
; CHECK: # %bb.0:
495
491
; CHECK-NEXT: vpmovsxbw {{.*#+}} xmm2 = [1,21,27,10,8,19,14,5]
496
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm3
497
492
; CHECK-NEXT: vptestnmw %xmm1, %xmm1, %k1
498
- ; CHECK-NEXT: vpermt2w %ymm3 , %ymm2 , %ymm0 {%k1} {z}
493
+ ; CHECK-NEXT: vpermw %zmm0 , %zmm2 , %zmm0 {%k1} {z}
499
494
; CHECK-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0
500
495
; CHECK-NEXT: vzeroupper
501
496
; CHECK-NEXT: retq
@@ -508,8 +503,7 @@ define <8 x i16> @test_masked_32xi16_to_8xi16_perm_mask2(<32 x i16> %vec, <8 x i
508
503
; CHECK-LABEL: test_masked_32xi16_to_8xi16_perm_mask2:
509
504
; CHECK: # %bb.0:
510
505
; CHECK-NEXT: vpmovsxbw {{.*#+}} xmm3 = [15,13,18,16,9,11,26,8]
511
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm4
512
- ; CHECK-NEXT: vpermt2w %ymm4, %ymm3, %ymm0
506
+ ; CHECK-NEXT: vpermw %zmm0, %zmm3, %zmm0
513
507
; CHECK-NEXT: vptestnmw %xmm2, %xmm2, %k1
514
508
; CHECK-NEXT: vpblendmw %xmm0, %xmm1, %xmm0 {%k1}
515
509
; CHECK-NEXT: vzeroupper
@@ -524,9 +518,8 @@ define <8 x i16> @test_masked_z_32xi16_to_8xi16_perm_mask2(<32 x i16> %vec, <8 x
524
518
; CHECK-LABEL: test_masked_z_32xi16_to_8xi16_perm_mask2:
525
519
; CHECK: # %bb.0:
526
520
; CHECK-NEXT: vpmovsxbw {{.*#+}} xmm2 = [15,13,18,16,9,11,26,8]
527
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm3
528
521
; CHECK-NEXT: vptestnmw %xmm1, %xmm1, %k1
529
- ; CHECK-NEXT: vpermt2w %ymm3 , %ymm2 , %ymm0 {%k1} {z}
522
+ ; CHECK-NEXT: vpermw %zmm0 , %zmm2 , %zmm0 {%k1} {z}
530
523
; CHECK-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0
531
524
; CHECK-NEXT: vzeroupper
532
525
; CHECK-NEXT: retq
@@ -539,8 +532,7 @@ define <8 x i16> @test_32xi16_to_8xi16_perm_mask3(<32 x i16> %vec) {
539
532
; CHECK-LABEL: test_32xi16_to_8xi16_perm_mask3:
540
533
; CHECK: # %bb.0:
541
534
; CHECK-NEXT: vpmovsxbw {{.*#+}} xmm1 = [17,0,23,10,1,8,7,30]
542
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm2
543
- ; CHECK-NEXT: vpermt2w %ymm2, %ymm1, %ymm0
535
+ ; CHECK-NEXT: vpermw %zmm0, %zmm1, %zmm0
544
536
; CHECK-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0
545
537
; CHECK-NEXT: vzeroupper
546
538
; CHECK-NEXT: retq
@@ -551,8 +543,7 @@ define <8 x i16> @test_masked_32xi16_to_8xi16_perm_mask3(<32 x i16> %vec, <8 x i
551
543
; CHECK-LABEL: test_masked_32xi16_to_8xi16_perm_mask3:
552
544
; CHECK: # %bb.0:
553
545
; CHECK-NEXT: vpmovsxbw {{.*#+}} xmm3 = [17,0,23,10,1,8,7,30]
554
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm4
555
- ; CHECK-NEXT: vpermt2w %ymm4, %ymm3, %ymm0
546
+ ; CHECK-NEXT: vpermw %zmm0, %zmm3, %zmm0
556
547
; CHECK-NEXT: vptestnmw %xmm2, %xmm2, %k1
557
548
; CHECK-NEXT: vpblendmw %xmm0, %xmm1, %xmm0 {%k1}
558
549
; CHECK-NEXT: vzeroupper
@@ -567,9 +558,8 @@ define <8 x i16> @test_masked_z_32xi16_to_8xi16_perm_mask3(<32 x i16> %vec, <8 x
567
558
; CHECK-LABEL: test_masked_z_32xi16_to_8xi16_perm_mask3:
568
559
; CHECK: # %bb.0:
569
560
; CHECK-NEXT: vpmovsxbw {{.*#+}} xmm2 = [17,0,23,10,1,8,7,30]
570
- ; CHECK-NEXT: vextracti64x4 $1, %zmm0, %ymm3
571
561
; CHECK-NEXT: vptestnmw %xmm1, %xmm1, %k1
572
- ; CHECK-NEXT: vpermt2w %ymm3 , %ymm2 , %ymm0 {%k1} {z}
562
+ ; CHECK-NEXT: vpermw %zmm0 , %zmm2 , %zmm0 {%k1} {z}
573
563
; CHECK-NEXT: # kill: def $xmm0 killed $xmm0 killed $zmm0
574
564
; CHECK-NEXT: vzeroupper
575
565
; CHECK-NEXT: retq
0 commit comments