Skip to content

Commit 5d5fe9b

Browse files
committed
!fixup address comments, thanks
1 parent eb5c8a6 commit 5d5fe9b

File tree

2 files changed

+10
-22
lines changed

2 files changed

+10
-22
lines changed

llvm/lib/Transforms/Vectorize/VectorCombine.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2795,7 +2795,7 @@ bool VectorCombine::foldShuffleExtExtracts(Instruction &I) {
27952795
!isa<LoadInst>(L))
27962796
return false;
27972797
auto *InnerExt = cast<Instruction>(I.getOperand(0));
2798-
auto *OuterExt = dyn_cast<Instruction>(*I.user_begin());
2798+
auto *OuterExt = cast<Instruction>(*I.user_begin());
27992799
if (!isa<SExtInst, ZExtInst>(OuterExt))
28002800
return false;
28012801

@@ -2819,8 +2819,8 @@ bool VectorCombine::foldShuffleExtExtracts(Instruction &I) {
28192819
Builder.SetInsertPoint(*L->getInsertionPointAfterDef());
28202820
auto *NewLoad = cast<LoadInst>(
28212821
Builder.CreateLoad(SrcTy, L->getOperand(0), L->getName() + ".vec"));
2822-
auto *NewExt = isa<ZExtInst>(InnerExt) ? Builder.CreateZExt(NewLoad, DstTy)
2823-
: Builder.CreateSExt(NewLoad, DstTy);
2822+
auto *NewExt = isa<ZExtInst>(InnerExt) ? Builder.CreateZExt(NewLoad, DstTy, "vec.ext", InnerExt->hasNonNeg())
2823+
: Builder.CreateSExt(NewLoad, DstTy, "vec.ext");
28242824
OuterExt->replaceAllUsesWith(NewExt);
28252825
replaceValue(*OuterExt, *NewExt);
28262826
Worklist.pushValue(NewLoad);

llvm/test/Transforms/VectorCombine/AArch64/combine-shuffle-ext.ll

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ define <4 x i32> @load_i32_zext_to_v4i32_both_nneg(ptr %di) {
3030
; CHECK-SAME: ptr [[DI:%.*]]) {
3131
; CHECK-NEXT: [[ENTRY:.*:]]
3232
; CHECK-NEXT: [[L_VEC:%.*]] = load <4 x i8>, ptr [[DI]], align 4
33-
; CHECK-NEXT: [[EXT_2:%.*]] = zext <4 x i8> [[L_VEC]] to <4 x i32>
33+
; CHECK-NEXT: [[EXT_2:%.*]] = zext nneg <4 x i8> [[L_VEC]] to <4 x i32>
3434
; CHECK-NEXT: ret <4 x i32> [[EXT_2]]
3535
;
3636
entry:
@@ -47,12 +47,8 @@ define <4 x i32> @load_i32_zext_to_v4i32_inner_nneg(ptr %di) {
4747
; CHECK-LABEL: define <4 x i32> @load_i32_zext_to_v4i32_inner_nneg(
4848
; CHECK-SAME: ptr [[DI:%.*]]) {
4949
; CHECK-NEXT: [[ENTRY:.*:]]
50-
; CHECK-NEXT: [[L:%.*]] = load i32, ptr [[DI]], align 4
51-
; CHECK-NEXT: [[VEC_INS:%.*]] = insertelement <2 x i32> <i32 poison, i32 0>, i32 [[L]], i64 0
52-
; CHECK-NEXT: [[VEC_BC:%.*]] = bitcast <2 x i32> [[VEC_INS]] to <8 x i8>
53-
; CHECK-NEXT: [[E_1:%.*]] = zext nneg <8 x i8> [[VEC_BC]] to <8 x i16>
54-
; CHECK-NEXT: [[VEC_SHUFFLE:%.*]] = shufflevector <8 x i16> [[E_1]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
55-
; CHECK-NEXT: [[EXT_2:%.*]] = zext <4 x i16> [[VEC_SHUFFLE]] to <4 x i32>
50+
; CHECK-NEXT: [[L_VEC:%.*]] = load <4 x i8>, ptr [[DI]], align 4
51+
; CHECK-NEXT: [[EXT_2:%.*]] = zext nneg <4 x i8> [[L_VEC]] to <4 x i32>
5652
; CHECK-NEXT: ret <4 x i32> [[EXT_2]]
5753
;
5854
entry:
@@ -69,12 +65,8 @@ define <4 x i32> @load_i32_zext_to_v4i32_outer_nneg(ptr %di) {
6965
; CHECK-LABEL: define <4 x i32> @load_i32_zext_to_v4i32_outer_nneg(
7066
; CHECK-SAME: ptr [[DI:%.*]]) {
7167
; CHECK-NEXT: [[ENTRY:.*:]]
72-
; CHECK-NEXT: [[L:%.*]] = load i32, ptr [[DI]], align 4
73-
; CHECK-NEXT: [[VEC_INS:%.*]] = insertelement <2 x i32> <i32 poison, i32 0>, i32 [[L]], i64 0
74-
; CHECK-NEXT: [[VEC_BC:%.*]] = bitcast <2 x i32> [[VEC_INS]] to <8 x i8>
75-
; CHECK-NEXT: [[E_1:%.*]] = zext <8 x i8> [[VEC_BC]] to <8 x i16>
76-
; CHECK-NEXT: [[VEC_SHUFFLE:%.*]] = shufflevector <8 x i16> [[E_1]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
77-
; CHECK-NEXT: [[EXT_2:%.*]] = zext nneg <4 x i16> [[VEC_SHUFFLE]] to <4 x i32>
68+
; CHECK-NEXT: [[L_VEC:%.*]] = load <4 x i8>, ptr [[DI]], align 4
69+
; CHECK-NEXT: [[EXT_2:%.*]] = zext <4 x i8> [[L_VEC]] to <4 x i32>
7870
; CHECK-NEXT: ret <4 x i32> [[EXT_2]]
7971
;
8072
entry:
@@ -91,12 +83,8 @@ define <4 x i32> @load_i32_zext_to_v4i32_inner_nneg_outer_sext(ptr %di) {
9183
; CHECK-LABEL: define <4 x i32> @load_i32_zext_to_v4i32_inner_nneg_outer_sext(
9284
; CHECK-SAME: ptr [[DI:%.*]]) {
9385
; CHECK-NEXT: [[ENTRY:.*:]]
94-
; CHECK-NEXT: [[L:%.*]] = load i32, ptr [[DI]], align 4
95-
; CHECK-NEXT: [[VEC_INS:%.*]] = insertelement <2 x i32> <i32 poison, i32 0>, i32 [[L]], i64 0
96-
; CHECK-NEXT: [[VEC_BC:%.*]] = bitcast <2 x i32> [[VEC_INS]] to <8 x i8>
97-
; CHECK-NEXT: [[E_1:%.*]] = zext nneg <8 x i8> [[VEC_BC]] to <8 x i16>
98-
; CHECK-NEXT: [[VEC_SHUFFLE:%.*]] = shufflevector <8 x i16> [[E_1]], <8 x i16> poison, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
99-
; CHECK-NEXT: [[EXT_2:%.*]] = sext <4 x i16> [[VEC_SHUFFLE]] to <4 x i32>
86+
; CHECK-NEXT: [[L_VEC:%.*]] = load <4 x i8>, ptr [[DI]], align 4
87+
; CHECK-NEXT: [[EXT_2:%.*]] = zext nneg <4 x i8> [[L_VEC]] to <4 x i32>
10088
; CHECK-NEXT: ret <4 x i32> [[EXT_2]]
10189
;
10290
entry:

0 commit comments

Comments
 (0)