@@ -430,3 +430,51 @@ entry:
430
430
%cmp = icmp ne i32 %conv , %add
431
431
ret i1 %cmp
432
432
}
433
+
434
+ define i1 @cmn_nsw (i32 %a , i32 %b ) {
435
+ ; CHECK-LABEL: cmn_nsw:
436
+ ; CHECK: // %bb.0:
437
+ ; CHECK-NEXT: neg w8, w1
438
+ ; CHECK-NEXT: cmp w0, w8
439
+ ; CHECK-NEXT: cset w0, gt
440
+ ; CHECK-NEXT: ret
441
+ %sub = sub nsw i32 0 , %b
442
+ %cmp = icmp sgt i32 %a , %sub
443
+ ret i1 %cmp
444
+ }
445
+
446
+ define i1 @cmn_nsw_64 (i64 %a , i64 %b ) {
447
+ ; CHECK-LABEL: cmn_nsw_64:
448
+ ; CHECK: // %bb.0:
449
+ ; CHECK-NEXT: neg x8, x1
450
+ ; CHECK-NEXT: cmp x0, x8
451
+ ; CHECK-NEXT: cset w0, gt
452
+ ; CHECK-NEXT: ret
453
+ %sub = sub nsw i64 0 , %b
454
+ %cmp = icmp sgt i64 %a , %sub
455
+ ret i1 %cmp
456
+ }
457
+
458
+ define i1 @cmn_nsw_neg (i32 %a , i32 %b ) {
459
+ ; CHECK-LABEL: cmn_nsw_neg:
460
+ ; CHECK: // %bb.0:
461
+ ; CHECK-NEXT: neg w8, w1
462
+ ; CHECK-NEXT: cmp w0, w8
463
+ ; CHECK-NEXT: cset w0, gt
464
+ ; CHECK-NEXT: ret
465
+ %sub = sub i32 0 , %b
466
+ %cmp = icmp sgt i32 %a , %sub
467
+ ret i1 %cmp
468
+ }
469
+
470
+ define i1 @cmn_nsw_neg_64 (i64 %a , i64 %b ) {
471
+ ; CHECK-LABEL: cmn_nsw_neg_64:
472
+ ; CHECK: // %bb.0:
473
+ ; CHECK-NEXT: neg x8, x1
474
+ ; CHECK-NEXT: cmp x0, x8
475
+ ; CHECK-NEXT: cset w0, gt
476
+ ; CHECK-NEXT: ret
477
+ %sub = sub i64 0 , %b
478
+ %cmp = icmp sgt i64 %a , %sub
479
+ ret i1 %cmp
480
+ }
0 commit comments