Skip to content

Commit aa7076f

Browse files
committed
[ValueTracking] Add tests for constant range of {s|u}rem C, x; NFC
1 parent a73e924 commit aa7076f

File tree

1 file changed

+110
-0
lines changed

1 file changed

+110
-0
lines changed

llvm/test/Analysis/ValueTracking/constant-ranges.ll

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,3 +130,113 @@ define i1 @and_ugt_fail(i8 %xx) {
130130
%r = icmp ugt i8 %x_p2, 127
131131
ret i1 %r
132132
}
133+
134+
define i1 @urem_okay(i8 %x) {
135+
; CHECK-LABEL: @urem_okay(
136+
; CHECK-NEXT: [[VAL:%.*]] = urem i8 34, [[X:%.*]]
137+
; CHECK-NEXT: [[R:%.*]] = icmp ule i8 [[VAL]], 35
138+
; CHECK-NEXT: ret i1 [[R]]
139+
;
140+
%val = urem i8 34, %x
141+
%r = icmp ule i8 %val, 35
142+
ret i1 %r
143+
}
144+
145+
define i1 @urem_fail(i8 %x) {
146+
; CHECK-LABEL: @urem_fail(
147+
; CHECK-NEXT: [[VAL:%.*]] = urem i8 34, [[X:%.*]]
148+
; CHECK-NEXT: [[R:%.*]] = icmp ule i8 [[VAL]], 33
149+
; CHECK-NEXT: ret i1 [[R]]
150+
;
151+
%val = urem i8 34, %x
152+
%r = icmp ule i8 %val, 33
153+
ret i1 %r
154+
}
155+
156+
define i1 @srem_posC_okay0(i8 %x) {
157+
; CHECK-LABEL: @srem_posC_okay0(
158+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
159+
; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], 34
160+
; CHECK-NEXT: ret i1 [[R]]
161+
;
162+
%val = srem i8 34, %x
163+
%r = icmp sle i8 %val, 34
164+
ret i1 %r
165+
}
166+
167+
define i1 @srem_posC_okay1(i8 %x) {
168+
; CHECK-LABEL: @srem_posC_okay1(
169+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
170+
; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], -3
171+
; CHECK-NEXT: ret i1 [[R]]
172+
;
173+
%val = srem i8 34, %x
174+
%r = icmp sge i8 %val, -3
175+
ret i1 %r
176+
}
177+
178+
define i1 @srem_negC_okay0(i8 %x) {
179+
; CHECK-LABEL: @srem_negC_okay0(
180+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
181+
; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], 0
182+
; CHECK-NEXT: ret i1 [[R]]
183+
;
184+
%val = srem i8 -34, %x
185+
%r = icmp sle i8 %val, 0
186+
ret i1 %r
187+
}
188+
189+
define i1 @srem_negC_okay1(i8 %x) {
190+
; CHECK-LABEL: @srem_negC_okay1(
191+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
192+
; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], -34
193+
; CHECK-NEXT: ret i1 [[R]]
194+
;
195+
%val = srem i8 -34, %x
196+
%r = icmp sge i8 %val, -34
197+
ret i1 %r
198+
}
199+
200+
define i1 @srem_posC_fail0(i8 %x) {
201+
; CHECK-LABEL: @srem_posC_fail0(
202+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
203+
; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], 32
204+
; CHECK-NEXT: ret i1 [[R]]
205+
;
206+
%val = srem i8 34, %x
207+
%r = icmp sle i8 %val, 32
208+
ret i1 %r
209+
}
210+
211+
define i1 @srem_posC_fail1(i8 %x) {
212+
; CHECK-LABEL: @srem_posC_fail1(
213+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 34, [[X:%.*]]
214+
; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], 1
215+
; CHECK-NEXT: ret i1 [[R]]
216+
;
217+
%val = srem i8 34, %x
218+
%r = icmp sge i8 %val, 1
219+
ret i1 %r
220+
}
221+
222+
define i1 @srem_negC_fail0(i8 %x) {
223+
; CHECK-LABEL: @srem_negC_fail0(
224+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
225+
; CHECK-NEXT: [[R:%.*]] = icmp sle i8 [[VAL]], -1
226+
; CHECK-NEXT: ret i1 [[R]]
227+
;
228+
%val = srem i8 -34, %x
229+
%r = icmp sle i8 %val, -1
230+
ret i1 %r
231+
}
232+
233+
define i1 @srem_negC_fail1(i8 %x) {
234+
; CHECK-LABEL: @srem_negC_fail1(
235+
; CHECK-NEXT: [[VAL:%.*]] = srem i8 -34, [[X:%.*]]
236+
; CHECK-NEXT: [[R:%.*]] = icmp sge i8 [[VAL]], -33
237+
; CHECK-NEXT: ret i1 [[R]]
238+
;
239+
%val = srem i8 -34, %x
240+
%r = icmp sge i8 %val, -33
241+
ret i1 %r
242+
}

0 commit comments

Comments
 (0)