Skip to content

Commit ecde303

Browse files
committed
[RISCV] Pre-commit tests for D132614. NFC
1 parent 15dc516 commit ecde303

File tree

1 file changed

+192
-0
lines changed

1 file changed

+192
-0
lines changed

llvm/test/CodeGen/RISCV/setcc-logic.ll

Lines changed: 192 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,3 +118,195 @@ define i1 @and_icmps_const_not1bit_diff(i32 %x) nounwind {
118118
%r = and i1 %a, %b
119119
ret i1 %r
120120
}
121+
122+
define i1 @and_icmp_sge(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
123+
; RV32I-LABEL: and_icmp_sge:
124+
; RV32I: # %bb.0:
125+
; RV32I-NEXT: slt a0, a0, a1
126+
; RV32I-NEXT: not a0, a0
127+
; RV32I-NEXT: slt a1, a2, a3
128+
; RV32I-NEXT: xori a1, a1, 1
129+
; RV32I-NEXT: and a0, a0, a1
130+
; RV32I-NEXT: ret
131+
;
132+
; RV64I-LABEL: and_icmp_sge:
133+
; RV64I: # %bb.0:
134+
; RV64I-NEXT: slt a0, a0, a1
135+
; RV64I-NEXT: not a0, a0
136+
; RV64I-NEXT: slt a1, a2, a3
137+
; RV64I-NEXT: xori a1, a1, 1
138+
; RV64I-NEXT: and a0, a0, a1
139+
; RV64I-NEXT: ret
140+
%cmp1 = icmp sge i32 %a, %b
141+
%cmp2 = icmp sge i32 %c, %d
142+
%and = and i1 %cmp1, %cmp2
143+
ret i1 %and
144+
}
145+
146+
define i1 @and_icmp_sle(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
147+
; RV32I-LABEL: and_icmp_sle:
148+
; RV32I: # %bb.0:
149+
; RV32I-NEXT: slt a0, a1, a0
150+
; RV32I-NEXT: not a0, a0
151+
; RV32I-NEXT: slt a1, a3, a2
152+
; RV32I-NEXT: xori a1, a1, 1
153+
; RV32I-NEXT: and a0, a0, a1
154+
; RV32I-NEXT: ret
155+
;
156+
; RV64I-LABEL: and_icmp_sle:
157+
; RV64I: # %bb.0:
158+
; RV64I-NEXT: slt a0, a1, a0
159+
; RV64I-NEXT: not a0, a0
160+
; RV64I-NEXT: slt a1, a3, a2
161+
; RV64I-NEXT: xori a1, a1, 1
162+
; RV64I-NEXT: and a0, a0, a1
163+
; RV64I-NEXT: ret
164+
%cmp1 = icmp sle i32 %a, %b
165+
%cmp2 = icmp sle i32 %c, %d
166+
%and = and i1 %cmp1, %cmp2
167+
ret i1 %and
168+
}
169+
170+
define i1 @and_icmp_uge(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
171+
; RV32I-LABEL: and_icmp_uge:
172+
; RV32I: # %bb.0:
173+
; RV32I-NEXT: sltu a0, a0, a1
174+
; RV32I-NEXT: not a0, a0
175+
; RV32I-NEXT: sltu a1, a2, a3
176+
; RV32I-NEXT: xori a1, a1, 1
177+
; RV32I-NEXT: and a0, a0, a1
178+
; RV32I-NEXT: ret
179+
;
180+
; RV64I-LABEL: and_icmp_uge:
181+
; RV64I: # %bb.0:
182+
; RV64I-NEXT: sltu a0, a0, a1
183+
; RV64I-NEXT: not a0, a0
184+
; RV64I-NEXT: sltu a1, a2, a3
185+
; RV64I-NEXT: xori a1, a1, 1
186+
; RV64I-NEXT: and a0, a0, a1
187+
; RV64I-NEXT: ret
188+
%cmp1 = icmp uge i32 %a, %b
189+
%cmp2 = icmp uge i32 %c, %d
190+
%and = and i1 %cmp1, %cmp2
191+
ret i1 %and
192+
}
193+
194+
define i1 @and_icmp_ule(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
195+
; RV32I-LABEL: and_icmp_ule:
196+
; RV32I: # %bb.0:
197+
; RV32I-NEXT: sltu a0, a1, a0
198+
; RV32I-NEXT: not a0, a0
199+
; RV32I-NEXT: sltu a1, a3, a2
200+
; RV32I-NEXT: xori a1, a1, 1
201+
; RV32I-NEXT: and a0, a0, a1
202+
; RV32I-NEXT: ret
203+
;
204+
; RV64I-LABEL: and_icmp_ule:
205+
; RV64I: # %bb.0:
206+
; RV64I-NEXT: sltu a0, a1, a0
207+
; RV64I-NEXT: not a0, a0
208+
; RV64I-NEXT: sltu a1, a3, a2
209+
; RV64I-NEXT: xori a1, a1, 1
210+
; RV64I-NEXT: and a0, a0, a1
211+
; RV64I-NEXT: ret
212+
%cmp1 = icmp ule i32 %a, %b
213+
%cmp2 = icmp ule i32 %c, %d
214+
%and = and i1 %cmp1, %cmp2
215+
ret i1 %and
216+
}
217+
218+
define i1 @or_icmp_sge(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
219+
; RV32I-LABEL: or_icmp_sge:
220+
; RV32I: # %bb.0:
221+
; RV32I-NEXT: slt a0, a0, a1
222+
; RV32I-NEXT: xori a0, a0, 1
223+
; RV32I-NEXT: slt a1, a2, a3
224+
; RV32I-NEXT: xori a1, a1, 1
225+
; RV32I-NEXT: or a0, a0, a1
226+
; RV32I-NEXT: ret
227+
;
228+
; RV64I-LABEL: or_icmp_sge:
229+
; RV64I: # %bb.0:
230+
; RV64I-NEXT: slt a0, a0, a1
231+
; RV64I-NEXT: xori a0, a0, 1
232+
; RV64I-NEXT: slt a1, a2, a3
233+
; RV64I-NEXT: xori a1, a1, 1
234+
; RV64I-NEXT: or a0, a0, a1
235+
; RV64I-NEXT: ret
236+
%cmp1 = icmp sge i32 %a, %b
237+
%cmp2 = icmp sge i32 %c, %d
238+
%and = or i1 %cmp1, %cmp2
239+
ret i1 %and
240+
}
241+
242+
define i1 @or_icmp_sle(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
243+
; RV32I-LABEL: or_icmp_sle:
244+
; RV32I: # %bb.0:
245+
; RV32I-NEXT: slt a0, a1, a0
246+
; RV32I-NEXT: xori a0, a0, 1
247+
; RV32I-NEXT: slt a1, a3, a2
248+
; RV32I-NEXT: xori a1, a1, 1
249+
; RV32I-NEXT: or a0, a0, a1
250+
; RV32I-NEXT: ret
251+
;
252+
; RV64I-LABEL: or_icmp_sle:
253+
; RV64I: # %bb.0:
254+
; RV64I-NEXT: slt a0, a1, a0
255+
; RV64I-NEXT: xori a0, a0, 1
256+
; RV64I-NEXT: slt a1, a3, a2
257+
; RV64I-NEXT: xori a1, a1, 1
258+
; RV64I-NEXT: or a0, a0, a1
259+
; RV64I-NEXT: ret
260+
%cmp1 = icmp sle i32 %a, %b
261+
%cmp2 = icmp sle i32 %c, %d
262+
%and = or i1 %cmp1, %cmp2
263+
ret i1 %and
264+
}
265+
266+
define i1 @or_icmp_uge(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
267+
; RV32I-LABEL: or_icmp_uge:
268+
; RV32I: # %bb.0:
269+
; RV32I-NEXT: sltu a0, a0, a1
270+
; RV32I-NEXT: xori a0, a0, 1
271+
; RV32I-NEXT: sltu a1, a2, a3
272+
; RV32I-NEXT: xori a1, a1, 1
273+
; RV32I-NEXT: or a0, a0, a1
274+
; RV32I-NEXT: ret
275+
;
276+
; RV64I-LABEL: or_icmp_uge:
277+
; RV64I: # %bb.0:
278+
; RV64I-NEXT: sltu a0, a0, a1
279+
; RV64I-NEXT: xori a0, a0, 1
280+
; RV64I-NEXT: sltu a1, a2, a3
281+
; RV64I-NEXT: xori a1, a1, 1
282+
; RV64I-NEXT: or a0, a0, a1
283+
; RV64I-NEXT: ret
284+
%cmp1 = icmp uge i32 %a, %b
285+
%cmp2 = icmp uge i32 %c, %d
286+
%and = or i1 %cmp1, %cmp2
287+
ret i1 %and
288+
}
289+
290+
define i1 @or_icmp_ule(i32 signext %a, i32 signext %b, i32 signext %c, i32 signext %d) nounwind {
291+
; RV32I-LABEL: or_icmp_ule:
292+
; RV32I: # %bb.0:
293+
; RV32I-NEXT: sltu a0, a1, a0
294+
; RV32I-NEXT: xori a0, a0, 1
295+
; RV32I-NEXT: sltu a1, a3, a2
296+
; RV32I-NEXT: xori a1, a1, 1
297+
; RV32I-NEXT: or a0, a0, a1
298+
; RV32I-NEXT: ret
299+
;
300+
; RV64I-LABEL: or_icmp_ule:
301+
; RV64I: # %bb.0:
302+
; RV64I-NEXT: sltu a0, a1, a0
303+
; RV64I-NEXT: xori a0, a0, 1
304+
; RV64I-NEXT: sltu a1, a3, a2
305+
; RV64I-NEXT: xori a1, a1, 1
306+
; RV64I-NEXT: or a0, a0, a1
307+
; RV64I-NEXT: ret
308+
%cmp1 = icmp ule i32 %a, %b
309+
%cmp2 = icmp ule i32 %c, %d
310+
%and = or i1 %cmp1, %cmp2
311+
ret i1 %and
312+
}

0 commit comments

Comments
 (0)