Skip to content

Commit bce6c53

Browse files
committed
[InstSimplify] Add pre-commit tests for PR65910. NFC.
1 parent a59870a commit bce6c53

File tree

1 file changed

+120
-0
lines changed

1 file changed

+120
-0
lines changed

llvm/test/Transforms/InstSimplify/and-or-implied-cond.ll

Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,3 +126,123 @@ define i1 @and_not_implied(i8 %x, i1 %c) {
126126
%and = and i1 %or, %cmp2
127127
ret i1 %and
128128
}
129+
130+
define i1 @uaddo_and(i64 %a, i64 %b){
131+
; CHECK-LABEL: @uaddo_and(
132+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
133+
; CHECK-NEXT: [[COND_A:%.*]] = icmp uge i64 [[S]], [[A]]
134+
; CHECK-NEXT: [[COND_B:%.*]] = icmp uge i64 [[S]], [[B]]
135+
; CHECK-NEXT: [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
136+
; CHECK-NEXT: ret i1 [[COND]]
137+
;
138+
%s = add i64 %a, %b
139+
%cond_a = icmp uge i64 %s, %a
140+
%cond_b = icmp uge i64 %s, %b
141+
%cond = and i1 %cond_a, %cond_b
142+
ret i1 %cond
143+
}
144+
145+
define i1 @uaddo_and_commuted1(i64 %a, i64 %b){
146+
; CHECK-LABEL: @uaddo_and_commuted1(
147+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
148+
; CHECK-NEXT: [[COND_A:%.*]] = icmp ule i64 [[A]], [[S]]
149+
; CHECK-NEXT: [[COND_B:%.*]] = icmp uge i64 [[S]], [[B]]
150+
; CHECK-NEXT: [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
151+
; CHECK-NEXT: ret i1 [[COND]]
152+
;
153+
%s = add i64 %a, %b
154+
%cond_a = icmp ule i64 %a, %s
155+
%cond_b = icmp uge i64 %s, %b
156+
%cond = and i1 %cond_a, %cond_b
157+
ret i1 %cond
158+
}
159+
160+
define i1 @uaddo_and_commuted2(i64 %a, i64 %b){
161+
; CHECK-LABEL: @uaddo_and_commuted2(
162+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
163+
; CHECK-NEXT: [[COND_A:%.*]] = icmp uge i64 [[S]], [[A]]
164+
; CHECK-NEXT: [[COND_B:%.*]] = icmp ule i64 [[B]], [[S]]
165+
; CHECK-NEXT: [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
166+
; CHECK-NEXT: ret i1 [[COND]]
167+
;
168+
%s = add i64 %a, %b
169+
%cond_a = icmp uge i64 %s, %a
170+
%cond_b = icmp ule i64 %b, %s
171+
%cond = and i1 %cond_a, %cond_b
172+
ret i1 %cond
173+
}
174+
175+
define i1 @uaddo_and_commuted3(i64 %a, i64 %b){
176+
; CHECK-LABEL: @uaddo_and_commuted3(
177+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
178+
; CHECK-NEXT: [[COND_A:%.*]] = icmp ule i64 [[A]], [[S]]
179+
; CHECK-NEXT: [[COND_B:%.*]] = icmp ule i64 [[B]], [[S]]
180+
; CHECK-NEXT: [[COND:%.*]] = and i1 [[COND_A]], [[COND_B]]
181+
; CHECK-NEXT: ret i1 [[COND]]
182+
;
183+
%s = add i64 %a, %b
184+
%cond_a = icmp ule i64 %a, %s
185+
%cond_b = icmp ule i64 %b, %s
186+
%cond = and i1 %cond_a, %cond_b
187+
ret i1 %cond
188+
}
189+
190+
define i1 @uaddo_or(i64 %a, i64 %b){
191+
; CHECK-LABEL: @uaddo_or(
192+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
193+
; CHECK-NEXT: [[COND_A:%.*]] = icmp ult i64 [[S]], [[A]]
194+
; CHECK-NEXT: [[COND_B:%.*]] = icmp ult i64 [[S]], [[B]]
195+
; CHECK-NEXT: [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
196+
; CHECK-NEXT: ret i1 [[COND]]
197+
;
198+
%s = add i64 %a, %b
199+
%cond_a = icmp ult i64 %s, %a
200+
%cond_b = icmp ult i64 %s, %b
201+
%cond = or i1 %cond_a, %cond_b
202+
ret i1 %cond
203+
}
204+
205+
define i1 @uaddo_or_commuted1(i64 %a, i64 %b){
206+
; CHECK-LABEL: @uaddo_or_commuted1(
207+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
208+
; CHECK-NEXT: [[COND_A:%.*]] = icmp ugt i64 [[A]], [[S]]
209+
; CHECK-NEXT: [[COND_B:%.*]] = icmp ult i64 [[S]], [[B]]
210+
; CHECK-NEXT: [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
211+
; CHECK-NEXT: ret i1 [[COND]]
212+
;
213+
%s = add i64 %a, %b
214+
%cond_a = icmp ugt i64 %a, %s
215+
%cond_b = icmp ult i64 %s, %b
216+
%cond = or i1 %cond_a, %cond_b
217+
ret i1 %cond
218+
}
219+
220+
define i1 @uaddo_or_commuted2(i64 %a, i64 %b){
221+
; CHECK-LABEL: @uaddo_or_commuted2(
222+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
223+
; CHECK-NEXT: [[COND_A:%.*]] = icmp ult i64 [[S]], [[A]]
224+
; CHECK-NEXT: [[COND_B:%.*]] = icmp ugt i64 [[B]], [[S]]
225+
; CHECK-NEXT: [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
226+
; CHECK-NEXT: ret i1 [[COND]]
227+
;
228+
%s = add i64 %a, %b
229+
%cond_a = icmp ult i64 %s, %a
230+
%cond_b = icmp ugt i64 %b, %s
231+
%cond = or i1 %cond_a, %cond_b
232+
ret i1 %cond
233+
}
234+
235+
define i1 @uaddo_or_commuted3(i64 %a, i64 %b){
236+
; CHECK-LABEL: @uaddo_or_commuted3(
237+
; CHECK-NEXT: [[S:%.*]] = add i64 [[A:%.*]], [[B:%.*]]
238+
; CHECK-NEXT: [[COND_A:%.*]] = icmp ugt i64 [[A]], [[S]]
239+
; CHECK-NEXT: [[COND_B:%.*]] = icmp ugt i64 [[B]], [[S]]
240+
; CHECK-NEXT: [[COND:%.*]] = or i1 [[COND_A]], [[COND_B]]
241+
; CHECK-NEXT: ret i1 [[COND]]
242+
;
243+
%s = add i64 %a, %b
244+
%cond_a = icmp ugt i64 %a, %s
245+
%cond_b = icmp ugt i64 %b, %s
246+
%cond = or i1 %cond_a, %cond_b
247+
ret i1 %cond
248+
}

0 commit comments

Comments
 (0)