@@ -26,7 +26,7 @@ define i32 @clamp255_i32(i32 %x) {
26
26
27
27
define i8 @sub_ashr_or_i8 (i8 %x , i8 %y ) {
28
28
; CHECK-LABEL: @sub_ashr_or_i8(
29
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i8 [[X :%.*]], [[Y :%.*]]
29
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i8 [[Y :%.*]], [[X :%.*]]
30
30
; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i8 -1, i8 [[X]]
31
31
; CHECK-NEXT: ret i8 [[OR]]
32
32
;
@@ -38,7 +38,7 @@ define i8 @sub_ashr_or_i8(i8 %x, i8 %y) {
38
38
39
39
define i16 @sub_ashr_or_i16 (i16 %x , i16 %y ) {
40
40
; CHECK-LABEL: @sub_ashr_or_i16(
41
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i16 [[X :%.*]], [[Y :%.*]]
41
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i16 [[Y :%.*]], [[X :%.*]]
42
42
; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i16 -1, i16 [[X]]
43
43
; CHECK-NEXT: ret i16 [[OR]]
44
44
;
@@ -50,7 +50,7 @@ define i16 @sub_ashr_or_i16(i16 %x, i16 %y) {
50
50
51
51
define i32 @sub_ashr_or_i32 (i32 %x , i32 %y ) {
52
52
; CHECK-LABEL: @sub_ashr_or_i32(
53
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i32 [[X :%.*]], [[Y :%.*]]
53
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i32 [[Y :%.*]], [[X :%.*]]
54
54
; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
55
55
; CHECK-NEXT: ret i32 [[OR]]
56
56
;
@@ -62,7 +62,7 @@ define i32 @sub_ashr_or_i32(i32 %x, i32 %y) {
62
62
63
63
define i64 @sub_ashr_or_i64 (i64 %x , i64 %y ) {
64
64
; CHECK-LABEL: @sub_ashr_or_i64(
65
- ; CHECK-NEXT: [[TMP1:%.*]] = icmp sgt i64 [[X :%.*]], [[Y :%.*]]
65
+ ; CHECK-NEXT: [[TMP1:%.*]] = icmp slt i64 [[Y :%.*]], [[X :%.*]]
66
66
; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i64 -1, i64 [[X]]
67
67
; CHECK-NEXT: ret i64 [[OR]]
68
68
;
@@ -76,7 +76,7 @@ define i64 @sub_ashr_or_i64(i64 %x, i64 %y) {
76
76
77
77
define i32 @sub_ashr_or_i32_nuw_nsw (i32 %x , i32 %y ) {
78
78
; 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 :%.*]]
80
80
; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
81
81
; CHECK-NEXT: ret i32 [[OR]]
82
82
;
@@ -90,7 +90,7 @@ define i32 @sub_ashr_or_i32_nuw_nsw(i32 %x, i32 %y) {
90
90
91
91
define i32 @sub_ashr_or_i32_commute (i32 %x , i32 %y ) {
92
92
; 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 :%.*]]
94
94
; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
95
95
; CHECK-NEXT: ret i32 [[OR]]
96
96
;
@@ -104,7 +104,7 @@ define i32 @sub_ashr_or_i32_commute(i32 %x, i32 %y) {
104
104
105
105
define <4 x i32 > @sub_ashr_or_i32_vec (<4 x i32 > %x , <4 x i32 > %y ) {
106
106
; 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 :%.*]]
108
108
; CHECK-NEXT: [[OR:%.*]] = select <4 x i1> [[TMP1]], <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32> [[X]]
109
109
; CHECK-NEXT: ret <4 x i32> [[OR]]
110
110
;
@@ -116,7 +116,7 @@ define <4 x i32> @sub_ashr_or_i32_vec(<4 x i32> %x, <4 x i32> %y) {
116
116
117
117
define <4 x i32 > @sub_ashr_or_i32_vec_nuw_nsw (<4 x i32 > %x , <4 x i32 > %y ) {
118
118
; 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 :%.*]]
120
120
; CHECK-NEXT: [[OR:%.*]] = select <4 x i1> [[TMP1]], <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32> [[X]]
121
121
; CHECK-NEXT: ret <4 x i32> [[OR]]
122
122
;
@@ -128,7 +128,7 @@ define <4 x i32> @sub_ashr_or_i32_vec_nuw_nsw(<4 x i32> %x, <4 x i32> %y) {
128
128
129
129
define <4 x i32 > @sub_ashr_or_i32_vec_commute (<4 x i32 > %x , <4 x i32 > %y ) {
130
130
; 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 :%.*]]
132
132
; CHECK-NEXT: [[OR:%.*]] = select <4 x i1> [[TMP1]], <4 x i32> <i32 -1, i32 -1, i32 -1, i32 -1>, <4 x i32> [[X]]
133
133
; CHECK-NEXT: ret <4 x i32> [[OR]]
134
134
;
@@ -157,7 +157,7 @@ define i32 @sub_ashr_or_i32_extra_use_sub(i32 %x, i32 %y, i32* %p) {
157
157
158
158
define i32 @sub_ashr_or_i32_extra_use_or (i32 %x , i32 %y , i32* %p ) {
159
159
; 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 :%.*]]
161
161
; CHECK-NEXT: [[OR:%.*]] = select i1 [[TMP1]], i32 -1, i32 [[X]]
162
162
; CHECK-NEXT: store i32 [[OR]], i32* [[P:%.*]], align 4
163
163
; CHECK-NEXT: ret i32 [[OR]]
@@ -173,8 +173,8 @@ define i32 @sub_ashr_or_i32_extra_use_or(i32 %x, i32 %y, i32* %p) {
173
173
174
174
define i32 @sub_ashr_or_i32_extra_use_ashr (i32 %x , i32 %y , i32* %p ) {
175
175
; 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
178
178
; CHECK-NEXT: store i32 [[SHR]], i32* [[P:%.*]], align 4
179
179
; CHECK-NEXT: [[OR:%.*]] = or i32 [[SHR]], [[X]]
180
180
; CHECK-NEXT: ret i32 [[OR]]
0 commit comments