@@ -15,9 +15,7 @@ define <8 x i8> @trivial(<8 x i8> %a) {
15
15
16
16
define <4 x i32 > @add_same_operands (<4 x i32 > %x ) {
17
17
; CHECK-LABEL: @add_same_operands(
18
- ; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
19
- ; CHECK-NEXT: [[ADD:%.*]] = add <4 x i32> [[SHUF]], [[SHUF]]
20
- ; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i32> [[ADD]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
18
+ ; CHECK-NEXT: [[REVSHUF:%.*]] = add <4 x i32> [[X:%.*]], [[X]]
21
19
; CHECK-NEXT: ret <4 x i32> [[REVSHUF]]
22
20
;
23
21
%shuf = shufflevector <4 x i32 > %x , <4 x i32 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
@@ -364,8 +362,7 @@ define <8 x i8> @inner_shuffle(<8 x i8> %a, <8 x i8> %b, <8 x i8> %c) {
364
362
define <4 x i32 > @extrause_add_same_operands (<4 x i32 > %x ) {
365
363
; CHECK-LABEL: @extrause_add_same_operands(
366
364
; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
367
- ; CHECK-NEXT: [[ADD:%.*]] = add <4 x i32> [[SHUF]], [[SHUF]]
368
- ; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i32> [[ADD]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
365
+ ; CHECK-NEXT: [[REVSHUF:%.*]] = add <4 x i32> [[X]], [[X]]
369
366
; CHECK-NEXT: [[ADD2:%.*]] = add <4 x i32> [[SHUF]], [[REVSHUF]]
370
367
; CHECK-NEXT: ret <4 x i32> [[ADD2]]
371
368
;
@@ -513,9 +510,7 @@ define <8 x half> @fma(<8 x half> %a, <8 x half> %b, <8 x half> %c) {
513
510
514
511
define <4 x i64 > @single_zext (<4 x i32 > %x ) {
515
512
; CHECK-LABEL: @single_zext(
516
- ; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i32> [[X:%.*]], <4 x i32> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
517
- ; CHECK-NEXT: [[ZEXT:%.*]] = zext <4 x i32> [[SHUF]] to <4 x i64>
518
- ; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i64> [[ZEXT]], <4 x i64> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
513
+ ; CHECK-NEXT: [[REVSHUF:%.*]] = zext <4 x i32> [[X:%.*]] to <4 x i64>
519
514
; CHECK-NEXT: ret <4 x i64> [[REVSHUF]]
520
515
;
521
516
%shuf = shufflevector <4 x i32 > %x , <4 x i32 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
@@ -695,10 +690,8 @@ define void @trunc(<8 x i64> %a, <8 x i64> %b, ptr %p) {
695
690
696
691
define <4 x i64 > @zext_chain (<4 x i16 > %x ) {
697
692
; CHECK-LABEL: @zext_chain(
698
- ; CHECK-NEXT: [[SHUF:%.*]] = shufflevector <4 x i16> [[X:%.*]], <4 x i16> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
699
- ; CHECK-NEXT: [[ZEXT:%.*]] = zext <4 x i16> [[SHUF]] to <4 x i32>
700
- ; CHECK-NEXT: [[SEXT:%.*]] = sext <4 x i32> [[ZEXT]] to <4 x i64>
701
- ; CHECK-NEXT: [[REVSHUF:%.*]] = shufflevector <4 x i64> [[SEXT]], <4 x i64> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
693
+ ; CHECK-NEXT: [[TMP1:%.*]] = zext <4 x i16> [[X:%.*]] to <4 x i32>
694
+ ; CHECK-NEXT: [[REVSHUF:%.*]] = sext <4 x i32> [[TMP1]] to <4 x i64>
702
695
; CHECK-NEXT: ret <4 x i64> [[REVSHUF]]
703
696
;
704
697
%shuf = shufflevector <4 x i16 > %x , <4 x i16 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
@@ -899,13 +892,11 @@ entry:
899
892
900
893
define <4 x i8 > @singleop (<4 x i8 > %a , <4 x i8 > %b ) {
901
894
; CHECK-LABEL: @singleop(
902
- ; CHECK-NEXT: [[A1:%.*]] = shufflevector <4 x i8> [[A:%.*]], <4 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
903
- ; CHECK-NEXT: [[B1:%.*]] = shufflevector <4 x i8> [[B:%.*]], <4 x i8> poison, <4 x i32> zeroinitializer
904
- ; CHECK-NEXT: [[A2:%.*]] = zext <4 x i8> [[A1]] to <4 x i16>
905
- ; CHECK-NEXT: [[B2:%.*]] = zext <4 x i8> [[B1]] to <4 x i16>
906
- ; CHECK-NEXT: [[AB:%.*]] = add <4 x i16> [[A2]], [[B2]]
907
- ; CHECK-NEXT: [[T:%.*]] = trunc <4 x i16> [[AB]] to <4 x i8>
908
- ; CHECK-NEXT: [[R:%.*]] = shufflevector <4 x i8> [[T]], <4 x i8> poison, <4 x i32> <i32 3, i32 2, i32 1, i32 0>
895
+ ; CHECK-NEXT: [[TMP1:%.*]] = shufflevector <4 x i8> [[B:%.*]], <4 x i8> poison, <4 x i32> zeroinitializer
896
+ ; CHECK-NEXT: [[TMP2:%.*]] = zext <4 x i8> [[A:%.*]] to <4 x i16>
897
+ ; CHECK-NEXT: [[TMP3:%.*]] = zext <4 x i8> [[TMP1]] to <4 x i16>
898
+ ; CHECK-NEXT: [[TMP4:%.*]] = add <4 x i16> [[TMP2]], [[TMP3]]
899
+ ; CHECK-NEXT: [[R:%.*]] = trunc <4 x i16> [[TMP4]] to <4 x i8>
909
900
; CHECK-NEXT: ret <4 x i8> [[R]]
910
901
;
911
902
%a1 = shufflevector <4 x i8 > %a , <4 x i8 > poison, <4 x i32 > <i32 3 , i32 2 , i32 1 , i32 0 >
0 commit comments