@@ -13,8 +13,7 @@ declare void @use_i32(i32)
13
13
define i32 @select_ult_shl_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
14
14
; CHECK-LABEL: @select_ult_shl_clamp_and_i32(
15
15
; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1:%.*]], 32
16
- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 31
17
- ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[M]]
16
+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
18
17
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
19
18
; CHECK-NEXT: ret i32 [[R]]
20
19
;
@@ -28,8 +27,7 @@ define i32 @select_ult_shl_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
28
27
define i32 @select_ule_ashr_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
29
28
; CHECK-LABEL: @select_ule_ashr_clamp_and_i32(
30
29
; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1:%.*]], 32
31
- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 127
32
- ; CHECK-NEXT: [[TMP1:%.*]] = ashr i32 [[A0:%.*]], [[M]]
30
+ ; CHECK-NEXT: [[TMP1:%.*]] = ashr i32 [[A0:%.*]], [[A1]]
33
31
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
34
32
; CHECK-NEXT: ret i32 [[R]]
35
33
;
@@ -43,8 +41,7 @@ define i32 @select_ule_ashr_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
43
41
define i32 @select_ugt_lshr_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
44
42
; CHECK-LABEL: @select_ugt_lshr_clamp_and_i32(
45
43
; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1:%.*]], 31
46
- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 31
47
- ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[A0:%.*]], [[M]]
44
+ ; CHECK-NEXT: [[TMP1:%.*]] = lshr i32 [[A0:%.*]], [[A1]]
48
45
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[TMP1]]
49
46
; CHECK-NEXT: ret i32 [[R]]
50
47
;
@@ -58,8 +55,7 @@ define i32 @select_ugt_lshr_clamp_and_i32(i32 %a0, i32 %a1, i32 %a2) {
58
55
define i32 @select_uge_shl_clamp_and_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
59
56
; CHECK-LABEL: @select_uge_shl_clamp_and_i32(
60
57
; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1:%.*]], 31
61
- ; CHECK-NEXT: [[M:%.*]] = and i32 [[A1]], 63
62
- ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[M]]
58
+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
63
59
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[TMP1]]
64
60
; CHECK-NEXT: ret i32 [[R]]
65
61
;
@@ -129,8 +125,7 @@ define i17 @select_uge_lshr_clamp_and_i17_nonpow2(i17 %a0, i17 %a1, i17 %a2) {
129
125
define i32 @select_ult_shl_clamp_umin_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
130
126
; CHECK-LABEL: @select_ult_shl_clamp_umin_i32(
131
127
; CHECK-NEXT: [[C:%.*]] = icmp ult i32 [[A1:%.*]], 32
132
- ; CHECK-NEXT: [[M:%.*]] = call i32 @llvm.umin.i32(i32 [[A1]], i32 31)
133
- ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[M]]
128
+ ; CHECK-NEXT: [[TMP1:%.*]] = shl i32 [[A0:%.*]], [[A1]]
134
129
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[TMP1]], i32 [[A2:%.*]]
135
130
; CHECK-NEXT: ret i32 [[R]]
136
131
;
@@ -144,8 +139,7 @@ define i32 @select_ult_shl_clamp_umin_i32(i32 %a0, i32 %a1, i32 %a2) {
144
139
define i17 @select_ule_ashr_clamp_umin_i17 (i17 %a0 , i17 %a1 , i17 %a2 ) {
145
140
; CHECK-LABEL: @select_ule_ashr_clamp_umin_i17(
146
141
; CHECK-NEXT: [[C:%.*]] = icmp ult i17 [[A1:%.*]], 17
147
- ; CHECK-NEXT: [[M:%.*]] = call i17 @llvm.umin.i17(i17 [[A1]], i17 17)
148
- ; CHECK-NEXT: [[TMP1:%.*]] = ashr i17 [[A0:%.*]], [[M]]
142
+ ; CHECK-NEXT: [[TMP1:%.*]] = ashr i17 [[A0:%.*]], [[A1]]
149
143
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i17 [[TMP1]], i17 [[A2:%.*]]
150
144
; CHECK-NEXT: ret i17 [[R]]
151
145
;
@@ -159,8 +153,7 @@ define i17 @select_ule_ashr_clamp_umin_i17(i17 %a0, i17 %a1, i17 %a2) {
159
153
define i32 @select_ugt_shl_clamp_umin_i32 (i32 %a0 , i32 %a1 , i32 %a2 ) {
160
154
; CHECK-LABEL: @select_ugt_shl_clamp_umin_i32(
161
155
; CHECK-NEXT: [[C:%.*]] = icmp ugt i32 [[A1:%.*]], 31
162
- ; CHECK-NEXT: [[M:%.*]] = call i32 @llvm.umin.i32(i32 [[A1]], i32 128)
163
- ; CHECK-NEXT: [[S:%.*]] = shl i32 [[A0:%.*]], [[M]]
156
+ ; CHECK-NEXT: [[S:%.*]] = shl i32 [[A0:%.*]], [[A1]]
164
157
; CHECK-NEXT: [[R:%.*]] = select i1 [[C]], i32 [[A2:%.*]], i32 [[S]]
165
158
; CHECK-NEXT: ret i32 [[R]]
166
159
;
@@ -174,8 +167,7 @@ define i32 @select_ugt_shl_clamp_umin_i32(i32 %a0, i32 %a1, i32 %a2) {
174
167
define <2 x i32 > @select_uge_lshr_clamp_umin_v2i32 (<2 x i32 > %a0 , <2 x i32 > %a1 , <2 x i32 > %a2 ) {
175
168
; CHECK-LABEL: @select_uge_lshr_clamp_umin_v2i32(
176
169
; CHECK-NEXT: [[C:%.*]] = icmp ugt <2 x i32> [[A1:%.*]], <i32 31, i32 31>
177
- ; CHECK-NEXT: [[M:%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[A1]], <2 x i32> <i32 63, i32 31>)
178
- ; CHECK-NEXT: [[S:%.*]] = lshr <2 x i32> [[A0:%.*]], [[M]]
170
+ ; CHECK-NEXT: [[S:%.*]] = lshr <2 x i32> [[A0:%.*]], [[A1]]
179
171
; CHECK-NEXT: [[R:%.*]] = select <2 x i1> [[C]], <2 x i32> [[A2:%.*]], <2 x i32> [[S]]
180
172
; CHECK-NEXT: ret <2 x i32> [[R]]
181
173
;
@@ -223,8 +215,7 @@ define i17 @select_uge_lshr_clamp_umin_i17_badlimit(i17 %a0, i17 %a1, i17 %a2) {
223
215
define range(i64 0 , -9223372036854775807 ) <4 x i64 > @PR109888 (<4 x i64 > %0 ) {
224
216
; CHECK-LABEL: @PR109888(
225
217
; CHECK-NEXT: [[C:%.*]] = icmp ult <4 x i64> [[TMP0:%.*]], <i64 64, i64 64, i64 64, i64 64>
226
- ; CHECK-NEXT: [[M:%.*]] = and <4 x i64> [[TMP0]], <i64 63, i64 63, i64 63, i64 63>
227
- ; CHECK-NEXT: [[TMP2:%.*]] = shl nuw <4 x i64> <i64 1, i64 1, i64 1, i64 1>, [[M]]
218
+ ; CHECK-NEXT: [[TMP2:%.*]] = shl nuw <4 x i64> <i64 1, i64 1, i64 1, i64 1>, [[TMP0]]
228
219
; CHECK-NEXT: [[R:%.*]] = select <4 x i1> [[C]], <4 x i64> [[TMP2]], <4 x i64> zeroinitializer
229
220
; CHECK-NEXT: ret <4 x i64> [[R]]
230
221
;
0 commit comments