Skip to content

Commit 66c069d

Browse files
committed
[InstCombine] add tests for shift-trunc-shift; NFC
1 parent e31899c commit 66c069d

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

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

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,56 @@ define i8 @shl_trunc_smaller_lshr(i32 %x) {
163163
ret i8 %lt
164164
}
165165

166+
define i24 @shl_trunc_bigger_ashr(i32 %x) {
167+
; CHECK-LABEL: @shl_trunc_bigger_ashr(
168+
; CHECK-NEXT: [[TMP1:%.*]] = ashr i32 [[X:%.*]], 9
169+
; CHECK-NEXT: [[TMP2:%.*]] = trunc i32 [[TMP1]] to i24
170+
; CHECK-NEXT: [[LT:%.*]] = and i24 [[TMP2]], -8
171+
; CHECK-NEXT: ret i24 [[LT]]
172+
;
173+
%rt = ashr i32 %x, 12
174+
%tr = trunc i32 %rt to i24
175+
%lt = shl i24 %tr, 3
176+
ret i24 %lt
177+
}
178+
179+
define i24 @shl_trunc_smaller_ashr(i32 %x) {
180+
; CHECK-LABEL: @shl_trunc_smaller_ashr(
181+
; CHECK-NEXT: [[X_TR:%.*]] = trunc i32 [[X:%.*]] to i24
182+
; CHECK-NEXT: [[TMP1:%.*]] = shl i24 [[X_TR]], 3
183+
; CHECK-NEXT: [[LT:%.*]] = and i24 [[TMP1]], -8192
184+
; CHECK-NEXT: ret i24 [[LT]]
185+
;
186+
%rt = ashr i32 %x, 10
187+
%tr = trunc i32 %rt to i24
188+
%lt = shl i24 %tr, 13
189+
ret i24 %lt
190+
}
191+
192+
define i8 @shl_trunc_bigger_shl(i32 %x) {
193+
; CHECK-LABEL: @shl_trunc_bigger_shl(
194+
; CHECK-NEXT: [[X_TR:%.*]] = trunc i32 [[X:%.*]] to i8
195+
; CHECK-NEXT: [[TR:%.*]] = shl i8 [[X_TR]], 6
196+
; CHECK-NEXT: ret i8 [[TR]]
197+
;
198+
%rt = shl i32 %x, 4
199+
%tr = trunc i32 %rt to i8
200+
%lt = shl i8 %tr, 2
201+
ret i8 %lt
202+
}
203+
204+
define i8 @shl_trunc_smaller_shl(i32 %x) {
205+
; CHECK-LABEL: @shl_trunc_smaller_shl(
206+
; CHECK-NEXT: [[X_TR:%.*]] = trunc i32 [[X:%.*]] to i8
207+
; CHECK-NEXT: [[TR:%.*]] = shl i8 [[X_TR]], 6
208+
; CHECK-NEXT: ret i8 [[TR]]
209+
;
210+
%rt = shl i32 %x, 2
211+
%tr = trunc i32 %rt to i8
212+
%lt = shl i8 %tr, 4
213+
ret i8 %lt
214+
}
215+
166216
define i8 @shl_trunc_bigger_lshr_use1(i32 %x) {
167217
; CHECK-LABEL: @shl_trunc_bigger_lshr_use1(
168218
; CHECK-NEXT: [[RT:%.*]] = lshr i32 [[X:%.*]], 5

0 commit comments

Comments
 (0)