Skip to content

Commit 438afe2

Browse files
committed
[ValueTracking] Add tests for tracking (and/or cond0, cond1) on both sides of branch; NFC
1 parent 55bc048 commit 438afe2

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

llvm/test/Transforms/InstCombine/known-bits.ll

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,67 @@ exit:
124124
ret i8 %or2
125125
}
126126

127+
128+
define i8 @test_cond_and_bothways(i8 %x) {
129+
; CHECK-LABEL: @test_cond_and_bothways(
130+
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 91
131+
; CHECK-NEXT: [[CMP0:%.*]] = icmp ne i8 [[AND]], 24
132+
; CHECK-NEXT: [[CMP1:%.*]] = icmp ne i8 [[X]], 0
133+
; CHECK-NEXT: [[COND:%.*]] = and i1 [[CMP0]], [[CMP1]]
134+
; CHECK-NEXT: br i1 [[COND]], label [[IF:%.*]], label [[EXIT:%.*]]
135+
; CHECK: if:
136+
; CHECK-NEXT: [[OR1:%.*]] = or i8 [[X]], -4
137+
; CHECK-NEXT: ret i8 [[OR1]]
138+
; CHECK: exit:
139+
; CHECK-NEXT: [[OR2:%.*]] = or i8 [[X]], -4
140+
; CHECK-NEXT: ret i8 [[OR2]]
141+
;
142+
%and = and i8 %x, 91
143+
%cmp0 = icmp ne i8 %and, 24
144+
%cmp1 = icmp ne i8 %x, 0
145+
%cond = and i1 %cmp0, %cmp1
146+
br i1 %cond, label %if, label %exit
147+
148+
if:
149+
%or1 = or i8 %x, -4
150+
ret i8 %or1
151+
152+
exit:
153+
%or2 = or i8 %x, -4
154+
ret i8 %or2
155+
}
156+
157+
define i8 @test_cond_or_bothways(i8 %x) {
158+
; CHECK-LABEL: @test_cond_or_bothways(
159+
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 91
160+
; CHECK-NEXT: [[CMP0:%.*]] = icmp eq i8 [[AND]], 24
161+
; CHECK-NEXT: [[CMP1:%.*]] = icmp eq i8 [[X]], 0
162+
; CHECK-NEXT: [[COND:%.*]] = or i1 [[CMP0]], [[CMP1]]
163+
; CHECK-NEXT: br i1 [[COND]], label [[IF:%.*]], label [[EXIT:%.*]]
164+
; CHECK: if:
165+
; CHECK-NEXT: [[OR1:%.*]] = or i8 [[X]], -4
166+
; CHECK-NEXT: ret i8 [[OR1]]
167+
; CHECK: exit:
168+
; CHECK-NEXT: [[OR2:%.*]] = or i8 [[X]], -4
169+
; CHECK-NEXT: ret i8 [[OR2]]
170+
;
171+
%and = and i8 %x, 91
172+
%cmp0 = icmp eq i8 %and, 24
173+
%cmp1 = icmp eq i8 %x, 0
174+
%cond = or i1 %cmp0, %cmp1
175+
br i1 %cond, label %if, label %exit
176+
177+
if:
178+
%or1 = or i8 %x, -4
179+
ret i8 %or1
180+
181+
exit:
182+
%or2 = or i8 %x, -4
183+
ret i8 %or2
184+
}
185+
186+
187+
127188
define i8 @test_cond_and_commuted(i8 %x, i1 %c1, i1 %c2) {
128189
; CHECK-LABEL: @test_cond_and_commuted(
129190
; CHECK-NEXT: [[AND:%.*]] = and i8 [[X:%.*]], 3

0 commit comments

Comments
 (0)