Skip to content

Commit a9aa14e

Browse files
committed
[InstCombine] add tests for shift-of-add with constants; NFC
1 parent ab99a41 commit a9aa14e

File tree

1 file changed

+46
-0
lines changed

1 file changed

+46
-0
lines changed

llvm/test/Transforms/InstCombine/shift-add.ll

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,3 +120,49 @@ define <4 x i32> @lshr_C1_add_A_C2_v4i32_splat(i16 %I) {
120120
%E = lshr <4 x i32> <i32 6, i32 2, i32 1, i32 -7>, %D
121121
ret <4 x i32> %E
122122
}
123+
124+
define i32 @shl_add_nuw(i32 %x) {
125+
; CHECK-LABEL: @shl_add_nuw(
126+
; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 5
127+
; CHECK-NEXT: [[R:%.*]] = shl i32 6, [[A]]
128+
; CHECK-NEXT: ret i32 [[R]]
129+
;
130+
%a = add nuw i32 %x, 5
131+
%r = shl i32 6, %a
132+
ret i32 %r
133+
}
134+
135+
define <2 x i12> @lshr_add_nuw(<2 x i12> %x) {
136+
; CHECK-LABEL: @lshr_add_nuw(
137+
; CHECK-NEXT: [[A:%.*]] = add nuw <2 x i12> [[X:%.*]], <i12 5, i12 1>
138+
; CHECK-NEXT: [[R:%.*]] = lshr <2 x i12> <i12 6, i12 42>, [[A]]
139+
; CHECK-NEXT: ret <2 x i12> [[R]]
140+
;
141+
%a = add nuw <2 x i12> %x, <i12 5, i12 1>
142+
%r = lshr <2 x i12> <i12 6, i12 42>, %a
143+
ret <2 x i12> %r
144+
}
145+
146+
define i32 @ashr_add_nuw(i32 %x, i32* %p) {
147+
; CHECK-LABEL: @ashr_add_nuw(
148+
; CHECK-NEXT: [[A:%.*]] = add nuw i32 [[X:%.*]], 5
149+
; CHECK-NEXT: store i32 [[A]], i32* [[P:%.*]], align 4
150+
; CHECK-NEXT: [[R:%.*]] = ashr i32 -6, [[A]]
151+
; CHECK-NEXT: ret i32 [[R]]
152+
;
153+
%a = add nuw i32 %x, 5
154+
store i32 %a, i32* %p
155+
%r = ashr i32 -6, %a
156+
ret i32 %r
157+
}
158+
159+
define i32 @shl_add_nsw(i32 %x) {
160+
; CHECK-LABEL: @shl_add_nsw(
161+
; CHECK-NEXT: [[A:%.*]] = add nsw i32 [[X:%.*]], 5
162+
; CHECK-NEXT: [[R:%.*]] = shl i32 6, [[A]]
163+
; CHECK-NEXT: ret i32 [[R]]
164+
;
165+
%a = add nsw i32 %x, 5
166+
%r = shl i32 6, %a
167+
ret i32 %r
168+
}

0 commit comments

Comments
 (0)