@@ -602,3 +602,51 @@ define i1 @almost_immediate_neg_ugt_64(i64 %x) {
602
602
%cmp = icmp ugt i64 %x , -16773121
603
603
ret i1 %cmp
604
604
}
605
+
606
+ define i1 @cmn_nsw (i32 %a , i32 %b ) {
607
+ ; CHECK-LABEL: cmn_nsw:
608
+ ; CHECK: // %bb.0:
609
+ ; CHECK-NEXT: neg w8, w1
610
+ ; CHECK-NEXT: cmp w0, w8
611
+ ; CHECK-NEXT: cset w0, gt
612
+ ; CHECK-NEXT: ret
613
+ %sub = sub nsw i32 0 , %b
614
+ %cmp = icmp sgt i32 %a , %sub
615
+ ret i1 %cmp
616
+ }
617
+
618
+ define i1 @cmn_nsw_64 (i64 %a , i64 %b ) {
619
+ ; CHECK-LABEL: cmn_nsw_64:
620
+ ; CHECK: // %bb.0:
621
+ ; CHECK-NEXT: neg x8, x1
622
+ ; CHECK-NEXT: cmp x0, x8
623
+ ; CHECK-NEXT: cset w0, gt
624
+ ; CHECK-NEXT: ret
625
+ %sub = sub nsw i64 0 , %b
626
+ %cmp = icmp sgt i64 %a , %sub
627
+ ret i1 %cmp
628
+ }
629
+
630
+ define i1 @cmn_nsw_neg (i32 %a , i32 %b ) {
631
+ ; CHECK-LABEL: cmn_nsw_neg:
632
+ ; CHECK: // %bb.0:
633
+ ; CHECK-NEXT: neg w8, w1
634
+ ; CHECK-NEXT: cmp w0, w8
635
+ ; CHECK-NEXT: cset w0, gt
636
+ ; CHECK-NEXT: ret
637
+ %sub = sub i32 0 , %b
638
+ %cmp = icmp sgt i32 %a , %sub
639
+ ret i1 %cmp
640
+ }
641
+
642
+ define i1 @cmn_nsw_neg_64 (i64 %a , i64 %b ) {
643
+ ; CHECK-LABEL: cmn_nsw_neg_64:
644
+ ; CHECK: // %bb.0:
645
+ ; CHECK-NEXT: neg x8, x1
646
+ ; CHECK-NEXT: cmp x0, x8
647
+ ; CHECK-NEXT: cset w0, gt
648
+ ; CHECK-NEXT: ret
649
+ %sub = sub i64 0 , %b
650
+ %cmp = icmp sgt i64 %a , %sub
651
+ ret i1 %cmp
652
+ }
0 commit comments