Skip to content

Commit 4d71124

Browse files
committed
[InstCombine] Add zext nneg test variant for gep of sext add fold (NFC)
1 parent 8fdfd34 commit 4d71124

File tree

1 file changed

+36
-0
lines changed
  • llvm/test/Transforms/InstCombine

1 file changed

+36
-0
lines changed

llvm/test/Transforms/InstCombine/array.ll

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,39 @@ entry:
7272
store i32 %b, ptr %gep
7373
ret void
7474
}
75+
76+
define void @test_zext_nneg(ptr %ptr, i32 %a, i32 %b) {
77+
; CHECK-LABEL: define void @test_zext_nneg(
78+
; CHECK-SAME: ptr [[PTR:%.*]], i32 [[A:%.*]], i32 [[B:%.*]]) {
79+
; CHECK-NEXT: entry:
80+
; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[A]], 10
81+
; CHECK-NEXT: [[IDX:%.*]] = zext nneg i32 [[ADD]] to i64
82+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i32, ptr [[PTR]], i64 [[IDX]]
83+
; CHECK-NEXT: store i32 [[B]], ptr [[GEP]], align 4
84+
; CHECK-NEXT: ret void
85+
;
86+
entry:
87+
%add = add nsw i32 %a, 10
88+
%idx = zext nneg i32 %add to i64
89+
%gep = getelementptr inbounds i32, ptr %ptr, i64 %idx
90+
store i32 %b, ptr %gep
91+
ret void
92+
}
93+
94+
define void @test_zext_missing_nneg(ptr %ptr, i32 %a, i32 %b) {
95+
; CHECK-LABEL: define void @test_zext_missing_nneg(
96+
; CHECK-SAME: ptr [[PTR:%.*]], i32 [[A:%.*]], i32 [[B:%.*]]) {
97+
; CHECK-NEXT: entry:
98+
; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 [[A]], 10
99+
; CHECK-NEXT: [[IDX:%.*]] = zext i32 [[ADD]] to i64
100+
; CHECK-NEXT: [[GEP:%.*]] = getelementptr inbounds i32, ptr [[PTR]], i64 [[IDX]]
101+
; CHECK-NEXT: store i32 [[B]], ptr [[GEP]], align 4
102+
; CHECK-NEXT: ret void
103+
;
104+
entry:
105+
%add = add nsw i32 %a, 10
106+
%idx = zext i32 %add to i64
107+
%gep = getelementptr inbounds i32, ptr %ptr, i64 %idx
108+
store i32 %b, ptr %gep
109+
ret void
110+
}

0 commit comments

Comments
 (0)