File tree Expand file tree Collapse file tree 3 files changed +42
-0
lines changed
llvm/test/Transforms/InstSimplify Expand file tree Collapse file tree 3 files changed +42
-0
lines changed Original file line number Diff line number Diff line change @@ -231,3 +231,17 @@ define i1 @nonnull17_unknown(i8 %x) {
231
231
%q = icmp ne i8 %x , 0
232
232
ret i1 %q
233
233
}
234
+
235
+ define i1 @nonnull_trunc_true (i8 %x ) {
236
+ ; CHECK-LABEL: @nonnull_trunc_true(
237
+ ; CHECK-NEXT: [[A:%.*]] = trunc i8 [[X:%.*]] to i1
238
+ ; CHECK-NEXT: call void @llvm.assume(i1 [[A]])
239
+ ; CHECK-NEXT: [[Q:%.*]] = icmp ne i8 [[X]], 0
240
+ ; CHECK-NEXT: ret i1 [[Q]]
241
+ ;
242
+ %a = trunc i8 %x to i1
243
+ call void @llvm.assume (i1 %a )
244
+ %q = icmp ne i8 %x , 0
245
+ ret i1 %q
246
+ }
247
+
Original file line number Diff line number Diff line change @@ -3450,6 +3450,21 @@ define i1 @icmp_ult_vscale_false(i8 %x, i8 %y) {
3450
3450
ret i1 %cmp
3451
3451
}
3452
3452
3453
+ define i1 @icmp_eq_false_by_trunc (i8 %x ) {
3454
+ ; CHECK-LABEL: @icmp_eq_false_by_trunc(
3455
+ ; CHECK-NEXT: [[TRUNC:%.*]] = trunc i8 [[X:%.*]] to i1
3456
+ ; CHECK-NEXT: [[NOT:%.*]] = xor i1 [[TRUNC]], true
3457
+ ; CHECK-NEXT: call void @llvm.assume(i1 [[NOT]])
3458
+ ; CHECK-NEXT: [[CMP:%.*]] = icmp eq i8 [[X]], 1
3459
+ ; CHECK-NEXT: ret i1 [[CMP]]
3460
+ ;
3461
+ %trunc = trunc i8 %x to i1
3462
+ %not = xor i1 %trunc , true
3463
+ call void @llvm.assume (i1 %not )
3464
+ %cmp = icmp eq i8 %x , 1
3465
+ ret i1 %cmp
3466
+ }
3467
+
3453
3468
declare i64 @llvm.vscale.i64 ()
3454
3469
3455
3470
; TODO: Add coverage for global aliases, link once, etc..
Original file line number Diff line number Diff line change @@ -381,6 +381,19 @@ define i32 @exact_lshr_lowbit(i32 %shiftval) {
381
381
ret i32 %shr
382
382
}
383
383
384
+ define i8 @exact_lshr_lowbit_set_assume_trunc (i8 %x ) {
385
+ ; CHECK-LABEL: @exact_lshr_lowbit_set_assume_trunc(
386
+ ; CHECK-NEXT: [[COND:%.*]] = trunc i8 [[X:%.*]] to i1
387
+ ; CHECK-NEXT: call void @llvm.assume(i1 [[COND]])
388
+ ; CHECK-NEXT: [[SHR:%.*]] = lshr exact i8 [[X]], 1
389
+ ; CHECK-NEXT: ret i8 [[SHR]]
390
+ ;
391
+ %cond = trunc i8 %x to i1
392
+ call void @llvm.assume (i1 %cond )
393
+ %shr = lshr exact i8 %x , 1
394
+ ret i8 %shr
395
+ }
396
+
384
397
define i32 @exact_ashr_lowbit (i32 %shiftval ) {
385
398
; CHECK-LABEL: @exact_ashr_lowbit(
386
399
; CHECK-NEXT: ret i32 7
You can’t perform that action at this time.
0 commit comments