@@ -260,14 +260,22 @@ define i32 @neg_range_int(i32 %a, i32 %b, i32 %c) {
260
260
261
261
; (b > -(d | 1) && a < c)
262
262
define i32 @neg_range_int_comp (i32 %a , i32 %b , i32 %c , i32 %d ) {
263
- ; CHECK-LABEL: neg_range_int_comp:
264
- ; CHECK: // %bb.0:
265
- ; CHECK-NEXT: orr w8, w3, #0x1
266
- ; CHECK-NEXT: cmp w0, w2
267
- ; CHECK-NEXT: neg w8, w8
268
- ; CHECK-NEXT: ccmp w1, w8, #4, lt
269
- ; CHECK-NEXT: csel w0, w1, w0, gt
270
- ; CHECK-NEXT: ret
263
+ ; SDISEL-LABEL: neg_range_int_comp:
264
+ ; SDISEL: // %bb.0:
265
+ ; SDISEL-NEXT: orr w8, w3, #0x1
266
+ ; SDISEL-NEXT: cmp w0, w2
267
+ ; SDISEL-NEXT: ccmn w1, w8, #4, lt
268
+ ; SDISEL-NEXT: csel w0, w1, w0, gt
269
+ ; SDISEL-NEXT: ret
270
+ ;
271
+ ; GISEL-LABEL: neg_range_int_comp:
272
+ ; GISEL: // %bb.0:
273
+ ; GISEL-NEXT: orr w8, w3, #0x1
274
+ ; GISEL-NEXT: cmp w0, w2
275
+ ; GISEL-NEXT: neg w8, w8
276
+ ; GISEL-NEXT: ccmp w1, w8, #4, lt
277
+ ; GISEL-NEXT: csel w0, w1, w0, gt
278
+ ; GISEL-NEXT: ret
271
279
%dor = or i32 %d , 1
272
280
%negd = sub i32 0 , %dor
273
281
%cmp = icmp sgt i32 %b , %negd
@@ -279,14 +287,22 @@ define i32 @neg_range_int_comp(i32 %a, i32 %b, i32 %c, i32 %d) {
279
287
280
288
; (b >u -(d | 1) && a < c)
281
289
define i32 @neg_range_int_comp_u (i32 %a , i32 %b , i32 %c , i32 %d ) {
282
- ; CHECK-LABEL: neg_range_int_comp_u:
283
- ; CHECK: // %bb.0:
284
- ; CHECK-NEXT: orr w8, w3, #0x1
285
- ; CHECK-NEXT: cmp w0, w2
286
- ; CHECK-NEXT: neg w8, w8
287
- ; CHECK-NEXT: ccmp w1, w8, #0, lt
288
- ; CHECK-NEXT: csel w0, w1, w0, hi
289
- ; CHECK-NEXT: ret
290
+ ; SDISEL-LABEL: neg_range_int_comp_u:
291
+ ; SDISEL: // %bb.0:
292
+ ; SDISEL-NEXT: orr w8, w3, #0x1
293
+ ; SDISEL-NEXT: cmp w0, w2
294
+ ; SDISEL-NEXT: ccmn w1, w8, #0, lt
295
+ ; SDISEL-NEXT: csel w0, w1, w0, hi
296
+ ; SDISEL-NEXT: ret
297
+ ;
298
+ ; GISEL-LABEL: neg_range_int_comp_u:
299
+ ; GISEL: // %bb.0:
300
+ ; GISEL-NEXT: orr w8, w3, #0x1
301
+ ; GISEL-NEXT: cmp w0, w2
302
+ ; GISEL-NEXT: neg w8, w8
303
+ ; GISEL-NEXT: ccmp w1, w8, #0, lt
304
+ ; GISEL-NEXT: csel w0, w1, w0, hi
305
+ ; GISEL-NEXT: ret
290
306
%dor = or i32 %d , 1
291
307
%negd = sub i32 0 , %dor
292
308
%cmp = icmp ugt i32 %b , %negd
@@ -298,14 +314,22 @@ define i32 @neg_range_int_comp_u(i32 %a, i32 %b, i32 %c, i32 %d) {
298
314
299
315
; (b > -(d | 1) && a u < c)
300
316
define i32 @neg_range_int_comp_ua (i32 %a , i32 %b , i32 %c , i32 %d ) {
301
- ; CHECK-LABEL: neg_range_int_comp_ua:
302
- ; CHECK: // %bb.0:
303
- ; CHECK-NEXT: orr w8, w3, #0x1
304
- ; CHECK-NEXT: cmp w0, w2
305
- ; CHECK-NEXT: neg w8, w8
306
- ; CHECK-NEXT: ccmp w1, w8, #4, lo
307
- ; CHECK-NEXT: csel w0, w1, w0, gt
308
- ; CHECK-NEXT: ret
317
+ ; SDISEL-LABEL: neg_range_int_comp_ua:
318
+ ; SDISEL: // %bb.0:
319
+ ; SDISEL-NEXT: orr w8, w3, #0x1
320
+ ; SDISEL-NEXT: cmp w0, w2
321
+ ; SDISEL-NEXT: ccmn w1, w8, #4, lo
322
+ ; SDISEL-NEXT: csel w0, w1, w0, gt
323
+ ; SDISEL-NEXT: ret
324
+ ;
325
+ ; GISEL-LABEL: neg_range_int_comp_ua:
326
+ ; GISEL: // %bb.0:
327
+ ; GISEL-NEXT: orr w8, w3, #0x1
328
+ ; GISEL-NEXT: cmp w0, w2
329
+ ; GISEL-NEXT: neg w8, w8
330
+ ; GISEL-NEXT: ccmp w1, w8, #4, lo
331
+ ; GISEL-NEXT: csel w0, w1, w0, gt
332
+ ; GISEL-NEXT: ret
309
333
%dor = or i32 %d , 1
310
334
%negd = sub i32 0 , %dor
311
335
%cmp = icmp sgt i32 %b , %negd
@@ -339,14 +363,22 @@ define i32 @neg_range_int_2(i32 %a, i32 %b, i32 %c) {
339
363
340
364
; (b < -(d | 1) && a >= c)
341
365
define i32 @neg_range_int_comp2 (i32 %a , i32 %b , i32 %c , i32 %d ) {
342
- ; CHECK-LABEL: neg_range_int_comp2:
343
- ; CHECK: // %bb.0:
344
- ; CHECK-NEXT: orr w8, w3, #0x1
345
- ; CHECK-NEXT: cmp w0, w2
346
- ; CHECK-NEXT: neg w8, w8
347
- ; CHECK-NEXT: ccmp w1, w8, #0, ge
348
- ; CHECK-NEXT: csel w0, w1, w0, lt
349
- ; CHECK-NEXT: ret
366
+ ; SDISEL-LABEL: neg_range_int_comp2:
367
+ ; SDISEL: // %bb.0:
368
+ ; SDISEL-NEXT: orr w8, w3, #0x1
369
+ ; SDISEL-NEXT: cmp w0, w2
370
+ ; SDISEL-NEXT: ccmn w1, w8, #0, ge
371
+ ; SDISEL-NEXT: csel w0, w1, w0, lt
372
+ ; SDISEL-NEXT: ret
373
+ ;
374
+ ; GISEL-LABEL: neg_range_int_comp2:
375
+ ; GISEL: // %bb.0:
376
+ ; GISEL-NEXT: orr w8, w3, #0x1
377
+ ; GISEL-NEXT: cmp w0, w2
378
+ ; GISEL-NEXT: neg w8, w8
379
+ ; GISEL-NEXT: ccmp w1, w8, #0, ge
380
+ ; GISEL-NEXT: csel w0, w1, w0, lt
381
+ ; GISEL-NEXT: ret
350
382
%dor = or i32 %d , 1
351
383
%negd = sub i32 0 , %dor
352
384
%cmp = icmp slt i32 %b , %negd
@@ -358,14 +390,22 @@ define i32 @neg_range_int_comp2(i32 %a, i32 %b, i32 %c, i32 %d) {
358
390
359
391
; (b <u -(d | 1) && a > c)
360
392
define i32 @neg_range_int_comp_u2 (i32 %a , i32 %b , i32 %c , i32 %d ) {
361
- ; CHECK-LABEL: neg_range_int_comp_u2:
362
- ; CHECK: // %bb.0:
363
- ; CHECK-NEXT: orr w8, w3, #0x1
364
- ; CHECK-NEXT: cmp w0, w2
365
- ; CHECK-NEXT: neg w8, w8
366
- ; CHECK-NEXT: ccmp w1, w8, #2, gt
367
- ; CHECK-NEXT: csel w0, w1, w0, lo
368
- ; CHECK-NEXT: ret
393
+ ; SDISEL-LABEL: neg_range_int_comp_u2:
394
+ ; SDISEL: // %bb.0:
395
+ ; SDISEL-NEXT: orr w8, w3, #0x1
396
+ ; SDISEL-NEXT: cmp w0, w2
397
+ ; SDISEL-NEXT: ccmn w1, w8, #2, gt
398
+ ; SDISEL-NEXT: csel w0, w1, w0, lo
399
+ ; SDISEL-NEXT: ret
400
+ ;
401
+ ; GISEL-LABEL: neg_range_int_comp_u2:
402
+ ; GISEL: // %bb.0:
403
+ ; GISEL-NEXT: orr w8, w3, #0x1
404
+ ; GISEL-NEXT: cmp w0, w2
405
+ ; GISEL-NEXT: neg w8, w8
406
+ ; GISEL-NEXT: ccmp w1, w8, #2, gt
407
+ ; GISEL-NEXT: csel w0, w1, w0, lo
408
+ ; GISEL-NEXT: ret
369
409
%dor = or i32 %d , 1
370
410
%negd = sub i32 0 , %dor
371
411
%cmp = icmp ult i32 %b , %negd
@@ -377,14 +417,22 @@ define i32 @neg_range_int_comp_u2(i32 %a, i32 %b, i32 %c, i32 %d) {
377
417
378
418
; (b > -(d | 1) && a u > c)
379
419
define i32 @neg_range_int_comp_ua2 (i32 %a , i32 %b , i32 %c , i32 %d ) {
380
- ; CHECK-LABEL: neg_range_int_comp_ua2:
381
- ; CHECK: // %bb.0:
382
- ; CHECK-NEXT: orr w8, w3, #0x1
383
- ; CHECK-NEXT: cmp w0, w2
384
- ; CHECK-NEXT: neg w8, w8
385
- ; CHECK-NEXT: ccmp w1, w8, #4, hi
386
- ; CHECK-NEXT: csel w0, w1, w0, gt
387
- ; CHECK-NEXT: ret
420
+ ; SDISEL-LABEL: neg_range_int_comp_ua2:
421
+ ; SDISEL: // %bb.0:
422
+ ; SDISEL-NEXT: orr w8, w3, #0x1
423
+ ; SDISEL-NEXT: cmp w0, w2
424
+ ; SDISEL-NEXT: ccmn w1, w8, #4, hi
425
+ ; SDISEL-NEXT: csel w0, w1, w0, gt
426
+ ; SDISEL-NEXT: ret
427
+ ;
428
+ ; GISEL-LABEL: neg_range_int_comp_ua2:
429
+ ; GISEL: // %bb.0:
430
+ ; GISEL-NEXT: orr w8, w3, #0x1
431
+ ; GISEL-NEXT: cmp w0, w2
432
+ ; GISEL-NEXT: neg w8, w8
433
+ ; GISEL-NEXT: ccmp w1, w8, #4, hi
434
+ ; GISEL-NEXT: csel w0, w1, w0, gt
435
+ ; GISEL-NEXT: ret
388
436
%dor = or i32 %d , 1
389
437
%negd = sub i32 0 , %dor
390
438
%cmp = icmp sgt i32 %b , %negd
@@ -396,14 +444,22 @@ define i32 @neg_range_int_comp_ua2(i32 %a, i32 %b, i32 %c, i32 %d) {
396
444
397
445
; (b > -(d | 1) && a u == c)
398
446
define i32 @neg_range_int_comp_ua3 (i32 %a , i32 %b , i32 %c , i32 %d ) {
399
- ; CHECK-LABEL: neg_range_int_comp_ua3:
400
- ; CHECK: // %bb.0:
401
- ; CHECK-NEXT: orr w8, w3, #0x1
402
- ; CHECK-NEXT: cmp w0, w2
403
- ; CHECK-NEXT: neg w8, w8
404
- ; CHECK-NEXT: ccmp w1, w8, #4, eq
405
- ; CHECK-NEXT: csel w0, w1, w0, gt
406
- ; CHECK-NEXT: ret
447
+ ; SDISEL-LABEL: neg_range_int_comp_ua3:
448
+ ; SDISEL: // %bb.0:
449
+ ; SDISEL-NEXT: orr w8, w3, #0x1
450
+ ; SDISEL-NEXT: cmp w0, w2
451
+ ; SDISEL-NEXT: ccmn w1, w8, #4, eq
452
+ ; SDISEL-NEXT: csel w0, w1, w0, gt
453
+ ; SDISEL-NEXT: ret
454
+ ;
455
+ ; GISEL-LABEL: neg_range_int_comp_ua3:
456
+ ; GISEL: // %bb.0:
457
+ ; GISEL-NEXT: orr w8, w3, #0x1
458
+ ; GISEL-NEXT: cmp w0, w2
459
+ ; GISEL-NEXT: neg w8, w8
460
+ ; GISEL-NEXT: ccmp w1, w8, #4, eq
461
+ ; GISEL-NEXT: csel w0, w1, w0, gt
462
+ ; GISEL-NEXT: ret
407
463
%dor = or i32 %d , 1
408
464
%negd = sub i32 0 , %dor
409
465
%cmp = icmp sgt i32 %b , %negd
0 commit comments