Lines Matching full:base

10 define i1 @t0_bad(i8 %base, i8 %offset) {
12 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE:%.*]], [[OFFSET:%.*]]
15 ; CHECK-NEXT: [[NO_UNDERFLOW:%.*]] = icmp ult i8 [[ADJUSTED]], [[BASE]]
19 %adjusted = add i8 %base, %offset
22 %no_underflow = icmp ult i8 %adjusted, %base
27 define i1 @t0_bad_logical(i8 %base, i8 %offset) {
29 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE:%.*]], [[OFFSET:%.*]]
32 ; CHECK-NEXT: [[NO_UNDERFLOW:%.*]] = icmp ult i8 [[ADJUSTED]], [[BASE]]
36 %adjusted = add i8 %base, %offset
39 %no_underflow = icmp ult i8 %adjusted, %base
44 ; Ok, base is non-zero.
45 define i1 @t1(i8 %base, i8 %offset) {
47 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
49 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
51 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
55 %cmp = icmp slt i8 %base, 0
58 %adjusted = add i8 %base, %offset
61 %no_underflow = icmp ult i8 %adjusted, %base
66 define i1 @t1_logical(i8 %base, i8 %offset) {
68 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
70 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
72 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
76 %cmp = icmp slt i8 %base, 0
79 %adjusted = add i8 %base, %offset
82 %no_underflow = icmp ult i8 %adjusted, %base
88 define i1 @t2(i8 %base, i8 %offset) {
92 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE:%.*]], [[OFFSET]]
95 ; CHECK-NEXT: [[R:%.*]] = icmp ugt i8 [[BASE]], [[TMP1]]
101 %adjusted = add i8 %base, %offset
104 %no_underflow = icmp ult i8 %adjusted, %base
109 define i1 @t2_logical(i8 %base, i8 %offset) {
113 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE:%.*]], [[OFFSET]]
116 ; CHECK-NEXT: [[R:%.*]] = icmp ugt i8 [[BASE]], [[TMP1]]
122 %adjusted = add i8 %base, %offset
125 %no_underflow = icmp ult i8 %adjusted, %base
131 define i1 @t3_oneuse0(i8 %base, i8 %offset) {
133 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
135 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
139 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
143 %cmp = icmp slt i8 %base, 0
146 %adjusted = add i8 %base, %offset
150 %no_underflow = icmp ult i8 %adjusted, %base
155 define i1 @t3_oneuse0_logical(i8 %base, i8 %offset) {
157 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
159 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
163 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
167 %cmp = icmp slt i8 %base, 0
170 %adjusted = add i8 %base, %offset
174 %no_underflow = icmp ult i8 %adjusted, %base
178 define i1 @t4_oneuse1(i8 %base, i8 %offset) {
180 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
182 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
184 ; CHECK-NEXT: [[NO_UNDERFLOW:%.*]] = icmp ult i8 [[ADJUSTED]], [[BASE]]
186 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
190 %cmp = icmp slt i8 %base, 0
193 %adjusted = add i8 %base, %offset
196 %no_underflow = icmp ult i8 %adjusted, %base
202 define i1 @t4_oneuse1_logical(i8 %base, i8 %offset) {
204 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
206 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
208 ; CHECK-NEXT: [[NO_UNDERFLOW:%.*]] = icmp ult i8 [[ADJUSTED]], [[BASE]]
210 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
214 %cmp = icmp slt i8 %base, 0
217 %adjusted = add i8 %base, %offset
220 %no_underflow = icmp ult i8 %adjusted, %base
225 define i1 @t5_oneuse2_bad(i8 %base, i8 %offset) {
227 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
229 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
233 ; CHECK-NEXT: [[NO_UNDERFLOW:%.*]] = icmp ult i8 [[ADJUSTED]], [[BASE]]
238 %cmp = icmp slt i8 %base, 0
241 %adjusted = add i8 %base, %offset
245 %no_underflow = icmp ult i8 %adjusted, %base
251 define i1 @t5_oneuse2_bad_logical(i8 %base, i8 %offset) {
253 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
255 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
259 ; CHECK-NEXT: [[NO_UNDERFLOW:%.*]] = icmp ult i8 [[ADJUSTED]], [[BASE]]
264 %cmp = icmp slt i8 %base, 0
267 %adjusted = add i8 %base, %offset
271 %no_underflow = icmp ult i8 %adjusted, %base
277 define i1 @t6_commutativity0(i8 %base, i8 %offset) {
279 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
281 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
283 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
287 %cmp = icmp slt i8 %base, 0
290 %adjusted = add i8 %base, %offset
293 %no_underflow = icmp ult i8 %adjusted, %base
298 define i1 @t6_commutativity0_logical(i8 %base, i8 %offset) {
300 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
302 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
304 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
308 %cmp = icmp slt i8 %base, 0
311 %adjusted = add i8 %base, %offset
314 %no_underflow = icmp ult i8 %adjusted, %base
318 define i1 @t7_commutativity1(i8 %base, i8 %offset) {
320 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
322 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
324 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
328 %cmp = icmp slt i8 %base, 0
331 %adjusted = add i8 %base, %offset
334 %no_underflow = icmp ugt i8 %base, %adjusted ; swapped
339 define i1 @t7_commutativity1_logical(i8 %base, i8 %offset) {
341 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
343 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
345 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
349 %cmp = icmp slt i8 %base, 0
352 %adjusted = add i8 %base, %offset
355 %no_underflow = icmp ugt i8 %base, %adjusted ; swapped
359 define i1 @t7_commutativity3(i8 %base, i8 %offset) {
361 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
363 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
365 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
369 %cmp = icmp slt i8 %base, 0
372 %adjusted = add i8 %base, %offset
375 %no_underflow = icmp ugt i8 %base, %adjusted ; swapped
380 define i1 @t7_commutativity3_logical(i8 %base, i8 %offset) {
382 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
384 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
386 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
390 %cmp = icmp slt i8 %base, 0
393 %adjusted = add i8 %base, %offset
396 %no_underflow = icmp ugt i8 %base, %adjusted ; swapped
402 define i1 @t8(i8 %base, i8 %offset) {
404 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
406 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
408 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
412 %cmp = icmp slt i8 %base, 0
415 %adjusted = add i8 %base, %offset
418 %no_underflow = icmp uge i8 %adjusted, %base
423 define i1 @t8_logical(i8 %base, i8 %offset) {
425 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
427 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
429 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
433 %cmp = icmp slt i8 %base, 0
436 %adjusted = add i8 %base, %offset
439 %no_underflow = icmp uge i8 %adjusted, %base
445 define i1 @t9(i8 %base, i8 %offset) {
447 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
449 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
451 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
455 %cmp = icmp slt i8 %base, 0
458 %adjusted = add i8 %base, %offset
466 define i1 @t9_logical(i8 %base, i8 %offset) {
468 ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i8 [[BASE:%.*]], 0
470 ; CHECK-NEXT: [[ADJUSTED:%.*]] = add i8 [[BASE]], [[OFFSET:%.*]]
472 ; CHECK-NEXT: [[TMP1:%.*]] = sub i8 0, [[BASE]]
476 %cmp = icmp slt i8 %base, 0
479 %adjusted = add i8 %base, %offset