@@ -611,9 +611,8 @@ define i8 @not_umin_of_not_constant_op(i8 %x) {
611
611
define i8 @smax_negation (i8 %x , i8 %y ) {
612
612
; CHECK-LABEL: @smax_negation(
613
613
; CHECK-NEXT: [[S1:%.*]] = sub i8 [[X:%.*]], [[Y:%.*]]
614
- ; CHECK-NEXT: [[S2:%.*]] = sub i8 [[Y]], [[X]]
615
- ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.smax.i8(i8 [[S1]], i8 [[S2]])
616
- ; CHECK-NEXT: ret i8 [[R]]
614
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.abs.i8(i8 [[S1]], i1 false)
615
+ ; CHECK-NEXT: ret i8 [[TMP1]]
617
616
;
618
617
%s1 = sub i8 %x , %y
619
618
%s2 = sub i8 %y , %x
@@ -624,9 +623,8 @@ define i8 @smax_negation(i8 %x, i8 %y) {
624
623
define i8 @smax_negation_nsw (i8 %x , i8 %y ) {
625
624
; CHECK-LABEL: @smax_negation_nsw(
626
625
; CHECK-NEXT: [[S1:%.*]] = sub nsw i8 [[X:%.*]], [[Y:%.*]]
627
- ; CHECK-NEXT: [[S2:%.*]] = sub nsw i8 [[Y]], [[X]]
628
- ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.smax.i8(i8 [[S1]], i8 [[S2]])
629
- ; CHECK-NEXT: ret i8 [[R]]
626
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.abs.i8(i8 [[S1]], i1 true)
627
+ ; CHECK-NEXT: ret i8 [[TMP1]]
630
628
;
631
629
%s1 = sub nsw i8 %x , %y
632
630
%s2 = sub nsw i8 %y , %x
@@ -637,9 +635,8 @@ define i8 @smax_negation_nsw(i8 %x, i8 %y) {
637
635
define i8 @smax_negation_not_nsw (i8 %x , i8 %y ) {
638
636
; CHECK-LABEL: @smax_negation_not_nsw(
639
637
; CHECK-NEXT: [[S1:%.*]] = sub nsw i8 [[X:%.*]], [[Y:%.*]]
640
- ; CHECK-NEXT: [[S2:%.*]] = sub nuw i8 [[Y]], [[X]]
641
- ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.smax.i8(i8 [[S1]], i8 [[S2]])
642
- ; CHECK-NEXT: ret i8 [[R]]
638
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.abs.i8(i8 [[S1]], i1 false)
639
+ ; CHECK-NEXT: ret i8 [[TMP1]]
643
640
;
644
641
%s1 = sub nsw i8 %x , %y
645
642
%s2 = sub nuw i8 %y , %x
@@ -649,9 +646,8 @@ define i8 @smax_negation_not_nsw(i8 %x, i8 %y) {
649
646
650
647
define <3 x i8 > @smax_negation_vec (<3 x i8 > %x ) {
651
648
; CHECK-LABEL: @smax_negation_vec(
652
- ; CHECK-NEXT: [[S:%.*]] = sub <3 x i8> <i8 0, i8 undef, i8 0>, [[X:%.*]]
653
- ; CHECK-NEXT: [[R:%.*]] = call <3 x i8> @llvm.smax.v3i8(<3 x i8> [[X]], <3 x i8> [[S]])
654
- ; CHECK-NEXT: ret <3 x i8> [[R]]
649
+ ; CHECK-NEXT: [[TMP1:%.*]] = call <3 x i8> @llvm.abs.v3i8(<3 x i8> [[X:%.*]], i1 false)
650
+ ; CHECK-NEXT: ret <3 x i8> [[TMP1]]
655
651
;
656
652
%s = sub <3 x i8 > <i8 0 , i8 undef , i8 0 >, %x
657
653
%r = call <3 x i8 > @llvm.smax.v3i8 (<3 x i8 > %x , <3 x i8 > %s )
@@ -661,9 +657,9 @@ define <3 x i8> @smax_negation_vec(<3 x i8> %x) {
661
657
define i8 @smin_negation (i8 %x , i8 %y ) {
662
658
; CHECK-LABEL: @smin_negation(
663
659
; CHECK-NEXT: [[S1:%.*]] = sub i8 [[X:%.*]], [[Y:%.*]]
664
- ; CHECK-NEXT: [[S2 :%.*]] = sub i8 [[Y ]], [[X]]
665
- ; CHECK-NEXT: [[R :%.*]] = call i8 @llvm.smin.i8(i8 [[S1]], i8 [[S2]])
666
- ; CHECK-NEXT: ret i8 [[R ]]
660
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i8 @llvm.abs.i8(i8 [[S1 ]], i1 false)
661
+ ; CHECK-NEXT: [[NABS :%.*]] = sub i8 0, [[TMP1]]
662
+ ; CHECK-NEXT: ret i8 [[NABS ]]
667
663
;
668
664
%s1 = sub i8 %x , %y
669
665
%s2 = sub i8 %y , %x
@@ -674,9 +670,9 @@ define i8 @smin_negation(i8 %x, i8 %y) {
674
670
define i8 @umax_negation (i8 %x , i8 %y ) {
675
671
; CHECK-LABEL: @umax_negation(
676
672
; CHECK-NEXT: [[S1:%.*]] = sub nsw i8 [[X:%.*]], [[Y:%.*]]
677
- ; CHECK-NEXT: [[S2 :%.*]] = sub nsw i8 [[Y ]], [[X]]
678
- ; CHECK-NEXT: [[R :%.*]] = call i8 @llvm.umax.i8(i8 [[S1]], i8 [[S2]])
679
- ; CHECK-NEXT: ret i8 [[R ]]
673
+ ; CHECK-NEXT: [[TMP1 :%.*]] = call i8 @llvm.abs.i8(i8 [[S1 ]], i1 true)
674
+ ; CHECK-NEXT: [[NABS :%.*]] = sub nsw i8 0, [[TMP1]]
675
+ ; CHECK-NEXT: ret i8 [[NABS ]]
680
676
;
681
677
%s1 = sub nsw i8 %x , %y
682
678
%s2 = sub nsw i8 %y , %x
@@ -686,9 +682,8 @@ define i8 @umax_negation(i8 %x, i8 %y) {
686
682
687
683
define i8 @umin_negation (i8 %x ) {
688
684
; CHECK-LABEL: @umin_negation(
689
- ; CHECK-NEXT: [[S:%.*]] = sub nsw i8 0, [[X:%.*]]
690
- ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.umin.i8(i8 [[S]], i8 [[X]])
691
- ; CHECK-NEXT: ret i8 [[R]]
685
+ ; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.abs.i8(i8 [[X:%.*]], i1 true)
686
+ ; CHECK-NEXT: ret i8 [[TMP1]]
692
687
;
693
688
%s = sub nsw i8 0 , %x
694
689
%r = call i8 @llvm.umin.i8 (i8 %s , i8 %x )
0 commit comments