@@ -26,7 +26,7 @@ define i32 @clamp255_i32(i32 %x) {
2626
2727define i8 @sub_ashr_or_i8 (i8 %x , i8 %y ) {
2828; CHECK-LABEL: @sub_ashr_or_i8(
29- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i8 [[X :%.*]], [[Y :%.*]]
29+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i8 [[Y :%.*]], [[X :%.*]]
3030; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i8 -1, i8 [[X]]
3131; CHECK-NEXT: ret i8 [[OR]]
3232;
@@ -38,7 +38,7 @@ define i8 @sub_ashr_or_i8(i8 %x, i8 %y) {
3838
3939define i16 @sub_ashr_or_i16 (i16 %x , i16 %y ) {
4040; CHECK-LABEL: @sub_ashr_or_i16(
41- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i16 [[X :%.*]], [[Y :%.*]]
41+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i16 [[Y :%.*]], [[X :%.*]]
4242; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i16 -1, i16 [[X]]
4343; CHECK-NEXT: ret i16 [[OR]]
4444;
@@ -50,7 +50,7 @@ define i16 @sub_ashr_or_i16(i16 %x, i16 %y) {
5050
5151define i32 @sub_ashr_or_i32 (i32 %x , i32 %y ) {
5252; CHECK-LABEL: @sub_ashr_or_i32(
53- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X :%.*]], [[Y :%.*]]
53+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[Y :%.*]], [[X :%.*]]
5454; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
5555; CHECK-NEXT: ret i32 [[OR]]
5656;
@@ -62,7 +62,7 @@ define i32 @sub_ashr_or_i32(i32 %x, i32 %y) {
6262
6363define i64 @sub_ashr_or_i64 (i64 %x , i64 %y ) {
6464; CHECK-LABEL: @sub_ashr_or_i64(
65- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i64 [[X :%.*]], [[Y :%.*]]
65+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i64 [[Y :%.*]], [[X :%.*]]
6666; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i64 -1, i64 [[X]]
6767; CHECK-NEXT: ret i64 [[OR]]
6868;
@@ -76,7 +76,7 @@ define i64 @sub_ashr_or_i64(i64 %x, i64 %y) {
7676
7777define i32 @sub_ashr_or_i32_nuw_nsw (i32 %x , i32 %y ) {
7878; CHECK-LABEL: @sub_ashr_or_i32_nuw_nsw(
79- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X :%.*]], [[Y :%.*]]
79+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[Y :%.*]], [[X :%.*]]
8080; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
8181; CHECK-NEXT: ret i32 [[OR]]
8282;
@@ -90,7 +90,7 @@ define i32 @sub_ashr_or_i32_nuw_nsw(i32 %x, i32 %y) {
9090
9191define i32 @sub_ashr_or_i32_commute (i32 %x , i32 %y ) {
9292; CHECK-LABEL: @sub_ashr_or_i32_commute(
93- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X :%.*]], [[Y :%.*]]
93+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[Y :%.*]], [[X :%.*]]
9494; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
9595; CHECK-NEXT: ret i32 [[OR]]
9696;
@@ -104,7 +104,7 @@ define i32 @sub_ashr_or_i32_commute(i32 %x, i32 %y) {
104104
105105define <4 x i32 > @sub_ashr_or_i32_vec (<4 x i32 > %x , <4 x i32 > %y ) {
106106; CHECK-LABEL: @sub_ashr_or_i32_vec(
107- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt <4 x i32> [[X :%.*]], [[Y :%.*]]
107+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <4 x i32> [[Y :%.*]], [[X :%.*]]
108108; CHECK-NEXT: [[OR:%.*]] = select <4 x i1> [[TMP1]], <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32> [[X]]
109109; CHECK-NEXT: ret <4 x i32> [[OR]]
110110;
@@ -116,7 +116,7 @@ define <4 x i32> @sub_ashr_or_i32_vec(<4 x i32> %x, <4 x i32> %y) {
116116
117117define <4 x i32 > @sub_ashr_or_i32_vec_nuw_nsw (<4 x i32 > %x , <4 x i32 > %y ) {
118118; CHECK-LABEL: @sub_ashr_or_i32_vec_nuw_nsw(
119- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt <4 x i32> [[X :%.*]], [[Y :%.*]]
119+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <4 x i32> [[Y :%.*]], [[X :%.*]]
120120; CHECK-NEXT: [[OR:%.*]] = select <4 x i1> [[TMP1]], <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32> [[X]]
121121; CHECK-NEXT: ret <4 x i32> [[OR]]
122122;
@@ -128,7 +128,7 @@ define <4 x i32> @sub_ashr_or_i32_vec_nuw_nsw(<4 x i32> %x, <4 x i32> %y) {
128128
129129define <4 x i32 > @sub_ashr_or_i32_vec_commute (<4 x i32 > %x , <4 x i32 > %y ) {
130130; CHECK-LABEL: @sub_ashr_or_i32_vec_commute(
131- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt <4 x i32> [[X :%.*]], [[Y :%.*]]
131+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt <4 x i32> [[Y :%.*]], [[X :%.*]]
132132; CHECK-NEXT: [[OR:%.*]] = select <4 x i1> [[TMP1]], <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32> [[X]]
133133; CHECK-NEXT: ret <4 x i32> [[OR]]
134134;
@@ -157,7 +157,7 @@ define i32 @sub_ashr_or_i32_extra_use_sub(i32 %x, i32 %y, i32* %p) {
157157
158158define i32 @sub_ashr_or_i32_extra_use_or (i32 %x , i32 %y , i32* %p ) {
159159; CHECK-LABEL: @sub_ashr_or_i32_extra_use_or(
160- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X :%.*]], [[Y :%.*]]
160+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[Y :%.*]], [[X :%.*]]
161161; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
162162; CHECK-NEXT: store i32 [[OR]], i32* [[P:%.*]], align 4
163163; CHECK-NEXT: ret i32 [[OR]]
@@ -173,8 +173,8 @@ define i32 @sub_ashr_or_i32_extra_use_or(i32 %x, i32 %y, i32* %p) {
173173
174174define i32 @sub_ashr_or_i32_extra_use_ashr (i32 %x , i32 %y , i32* %p ) {
175175; CHECK-LABEL: @sub_ashr_or_i32_extra_use_ashr(
176- ; CHECK-NEXT: [[SUB :%.*]] = sub nsw i32 [[Y:%.*]], [[X:%.*]]
177- ; CHECK-NEXT: [[SHR:%.*]] = ashr i32 [[SUB]], 31
176+ ; CHECK-NEXT: [[TMP1 :%.*]] = icmp slt i32 [[Y:%.*]], [[X:%.*]]
177+ ; CHECK-NEXT: [[SHR:%.*]] = sext i1 [[TMP1]] to i32
178178; CHECK-NEXT: store i32 [[SHR]], i32* [[P:%.*]], align 4
179179; CHECK-NEXT: [[OR:%.*]] = or i32 [[SHR]], [[X]]
180180; CHECK-NEXT: ret i32 [[OR]]
0 commit comments