Skip to content

Commit 33a194b

Browse files
committed
[InstCombine] Add pre-commit tests for #67915. NFC.
1 parent 777a6e6 commit 33a194b

File tree

1 file changed

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

1 file changed

+36
-0
lines changed

llvm/test/Transforms/InstCombine/and.ll

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2546,3 +2546,39 @@ define i32 @and_zext_eq_zero(i32 %A, i32 %C) {
25462546
%5 = and i32 %2, %4
25472547
ret i32 %5
25482548
}
2549+
2550+
define i32 @canonicalize_and_add_power2_or_zero(i32 %x, i32 %y) {
2551+
; CHECK-LABEL: @canonicalize_and_add_power2_or_zero(
2552+
; CHECK-NEXT: [[NY:%.*]] = sub i32 0, [[Y:%.*]]
2553+
; CHECK-NEXT: [[P2:%.*]] = and i32 [[NY]], [[Y]]
2554+
; CHECK-NEXT: call void @use32(i32 [[P2]])
2555+
; CHECK-NEXT: [[VAL:%.*]] = add i32 [[P2]], [[X:%.*]]
2556+
; CHECK-NEXT: [[AND:%.*]] = and i32 [[VAL]], [[P2]]
2557+
; CHECK-NEXT: ret i32 [[AND]]
2558+
;
2559+
%ny = sub i32 0, %y
2560+
%p2 = and i32 %y, %ny
2561+
call void @use32(i32 %p2) ; keep p2
2562+
2563+
%val = add i32 %x, %p2
2564+
%and = and i32 %val, %p2
2565+
ret i32 %and
2566+
}
2567+
2568+
define i32 @canonicalize_and_sub_power2_or_zero(i32 %x, i32 %y) {
2569+
; CHECK-LABEL: @canonicalize_and_sub_power2_or_zero(
2570+
; CHECK-NEXT: [[NY:%.*]] = sub i32 0, [[Y:%.*]]
2571+
; CHECK-NEXT: [[P2:%.*]] = and i32 [[NY]], [[Y]]
2572+
; CHECK-NEXT: call void @use32(i32 [[P2]])
2573+
; CHECK-NEXT: [[VAL:%.*]] = sub i32 [[X:%.*]], [[P2]]
2574+
; CHECK-NEXT: [[AND:%.*]] = and i32 [[VAL]], [[P2]]
2575+
; CHECK-NEXT: ret i32 [[AND]]
2576+
;
2577+
%ny = sub i32 0, %y
2578+
%p2 = and i32 %y, %ny
2579+
call void @use32(i32 %p2) ; keep p2
2580+
2581+
%val = sub i32 %x, %p2
2582+
%and = and i32 %val, %p2
2583+
ret i32 %and
2584+
}

0 commit comments

Comments
 (0)