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