3
3
4
4
define i32 @ashr_lshr_exact_ashr_only (i32 %x , i32 %y ) {
5
5
; CHECK-LABEL: @ashr_lshr_exact_ashr_only(
6
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], -1
7
- ; CHECK-NEXT: [[L:%.*]] = lshr i32 [[X]], [[Y:%.*]]
8
- ; CHECK-NEXT: [[R:%.*]] = ashr exact i32 [[X]], [[Y]]
9
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[L]], i32 [[R]]
10
- ; CHECK-NEXT: ret i32 [[RET]]
6
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], [[Y:%.*]]
7
+ ; CHECK-NEXT: ret i32 [[CMP1]]
11
8
;
12
9
%cmp = icmp sgt i32 %x , -1
13
10
%l = lshr i32 %x , %y
@@ -18,11 +15,8 @@ define i32 @ashr_lshr_exact_ashr_only(i32 %x, i32 %y) {
18
15
19
16
define i32 @ashr_lshr_no_exact (i32 %x , i32 %y ) {
20
17
; CHECK-LABEL: @ashr_lshr_no_exact(
21
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], -1
22
- ; CHECK-NEXT: [[L:%.*]] = lshr i32 [[X]], [[Y:%.*]]
23
- ; CHECK-NEXT: [[R:%.*]] = ashr i32 [[X]], [[Y]]
24
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[L]], i32 [[R]]
25
- ; CHECK-NEXT: ret i32 [[RET]]
18
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], [[Y:%.*]]
19
+ ; CHECK-NEXT: ret i32 [[CMP1]]
26
20
;
27
21
%cmp = icmp sgt i32 %x , -1
28
22
%l = lshr i32 %x , %y
@@ -33,11 +27,8 @@ define i32 @ashr_lshr_no_exact(i32 %x, i32 %y) {
33
27
34
28
define i32 @ashr_lshr_exact_both (i32 %x , i32 %y ) {
35
29
; CHECK-LABEL: @ashr_lshr_exact_both(
36
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], -1
37
- ; CHECK-NEXT: [[L:%.*]] = lshr exact i32 [[X]], [[Y:%.*]]
38
- ; CHECK-NEXT: [[R:%.*]] = ashr exact i32 [[X]], [[Y]]
39
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[L]], i32 [[R]]
40
- ; CHECK-NEXT: ret i32 [[RET]]
30
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr exact i32 [[X:%.*]], [[Y:%.*]]
31
+ ; CHECK-NEXT: ret i32 [[CMP1]]
41
32
;
42
33
%cmp = icmp sgt i32 %x , -1
43
34
%l = lshr exact i32 %x , %y
@@ -48,11 +39,8 @@ define i32 @ashr_lshr_exact_both(i32 %x, i32 %y) {
48
39
49
40
define i32 @ashr_lshr_exact_lshr_only (i32 %x , i32 %y ) {
50
41
; CHECK-LABEL: @ashr_lshr_exact_lshr_only(
51
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], -1
52
- ; CHECK-NEXT: [[L:%.*]] = lshr exact i32 [[X]], [[Y:%.*]]
53
- ; CHECK-NEXT: [[R:%.*]] = ashr i32 [[X]], [[Y]]
54
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[L]], i32 [[R]]
55
- ; CHECK-NEXT: ret i32 [[RET]]
42
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], [[Y:%.*]]
43
+ ; CHECK-NEXT: ret i32 [[CMP1]]
56
44
;
57
45
%cmp = icmp sgt i32 %x , -1
58
46
%l = lshr exact i32 %x , %y
@@ -63,11 +51,8 @@ define i32 @ashr_lshr_exact_lshr_only(i32 %x, i32 %y) {
63
51
64
52
define i32 @ashr_lshr2 (i32 %x , i32 %y ) {
65
53
; CHECK-LABEL: @ashr_lshr2(
66
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], 5
67
- ; CHECK-NEXT: [[L:%.*]] = lshr i32 [[X]], [[Y:%.*]]
68
- ; CHECK-NEXT: [[R:%.*]] = ashr exact i32 [[X]], [[Y]]
69
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[L]], i32 [[R]]
70
- ; CHECK-NEXT: ret i32 [[RET]]
54
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], [[Y:%.*]]
55
+ ; CHECK-NEXT: ret i32 [[CMP1]]
71
56
;
72
57
%cmp = icmp sgt i32 %x , 5
73
58
%l = lshr i32 %x , %y
@@ -78,11 +63,8 @@ define i32 @ashr_lshr2(i32 %x, i32 %y) {
78
63
79
64
define <2 x i32 > @ashr_lshr_splat_vec (<2 x i32 > %x , <2 x i32 > %y ) {
80
65
; CHECK-LABEL: @ashr_lshr_splat_vec(
81
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 -1, i32 -1>
82
- ; CHECK-NEXT: [[L:%.*]] = lshr <2 x i32> [[X]], [[Y:%.*]]
83
- ; CHECK-NEXT: [[R:%.*]] = ashr <2 x i32> [[X]], [[Y]]
84
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
85
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
66
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
67
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
86
68
;
87
69
%cmp = icmp sgt <2 x i32 > %x , <i32 -1 , i32 -1 >
88
70
%l = lshr <2 x i32 > %x , %y
@@ -93,11 +75,8 @@ define <2 x i32> @ashr_lshr_splat_vec(<2 x i32> %x, <2 x i32> %y) {
93
75
94
76
define <2 x i32 > @ashr_lshr_splat_vec2 (<2 x i32 > %x , <2 x i32 > %y ) {
95
77
; CHECK-LABEL: @ashr_lshr_splat_vec2(
96
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 -1, i32 -1>
97
- ; CHECK-NEXT: [[L:%.*]] = lshr exact <2 x i32> [[X]], [[Y:%.*]]
98
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
99
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
100
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
78
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr exact <2 x i32> [[X:%.*]], [[Y:%.*]]
79
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
101
80
;
102
81
%cmp = icmp sgt <2 x i32 > %x , <i32 -1 , i32 -1 >
103
82
%l = lshr exact <2 x i32 > %x , %y
@@ -108,11 +87,8 @@ define <2 x i32> @ashr_lshr_splat_vec2(<2 x i32> %x, <2 x i32> %y) {
108
87
109
88
define <2 x i32 > @ashr_lshr_splat_vec3 (<2 x i32 > %x , <2 x i32 > %y ) {
110
89
; CHECK-LABEL: @ashr_lshr_splat_vec3(
111
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 -1, i32 -1>
112
- ; CHECK-NEXT: [[L:%.*]] = lshr exact <2 x i32> [[X]], [[Y:%.*]]
113
- ; CHECK-NEXT: [[R:%.*]] = ashr <2 x i32> [[X]], [[Y]]
114
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
115
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
90
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
91
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
116
92
;
117
93
%cmp = icmp sgt <2 x i32 > %x , <i32 -1 , i32 -1 >
118
94
%l = lshr exact <2 x i32 > %x , %y
@@ -123,11 +99,8 @@ define <2 x i32> @ashr_lshr_splat_vec3(<2 x i32> %x, <2 x i32> %y) {
123
99
124
100
define <2 x i32 > @ashr_lshr_splat_vec4 (<2 x i32 > %x , <2 x i32 > %y ) {
125
101
; CHECK-LABEL: @ashr_lshr_splat_vec4(
126
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 -1, i32 -1>
127
- ; CHECK-NEXT: [[L:%.*]] = lshr <2 x i32> [[X]], [[Y:%.*]]
128
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
129
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
130
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
102
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
103
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
131
104
;
132
105
%cmp = icmp sgt <2 x i32 > %x , <i32 -1 , i32 -1 >
133
106
%l = lshr <2 x i32 > %x , %y
@@ -138,11 +111,8 @@ define <2 x i32> @ashr_lshr_splat_vec4(<2 x i32> %x, <2 x i32> %y) {
138
111
139
112
define <2 x i32 > @ashr_lshr_nonsplat_vec (<2 x i32 > %x , <2 x i32 > %y ) {
140
113
; CHECK-LABEL: @ashr_lshr_nonsplat_vec(
141
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 -1, i32 1>
142
- ; CHECK-NEXT: [[L:%.*]] = lshr <2 x i32> [[X]], [[Y:%.*]]
143
- ; CHECK-NEXT: [[R:%.*]] = ashr <2 x i32> [[X]], [[Y]]
144
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
145
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
114
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
115
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
146
116
;
147
117
%cmp = icmp sgt <2 x i32 > %x , <i32 -1 , i32 1 >
148
118
%l = lshr <2 x i32 > %x , %y
@@ -153,11 +123,8 @@ define <2 x i32> @ashr_lshr_nonsplat_vec(<2 x i32> %x, <2 x i32> %y) {
153
123
154
124
define <2 x i32 > @ashr_lshr_nonsplat_vec2 (<2 x i32 > %x , <2 x i32 > %y ) {
155
125
; CHECK-LABEL: @ashr_lshr_nonsplat_vec2(
156
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 2, i32 4>
157
- ; CHECK-NEXT: [[L:%.*]] = lshr exact <2 x i32> [[X]], [[Y:%.*]]
158
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
159
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
160
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
126
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr exact <2 x i32> [[X:%.*]], [[Y:%.*]]
127
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
161
128
;
162
129
%cmp = icmp sgt <2 x i32 > %x , <i32 2 , i32 4 >
163
130
%l = lshr exact <2 x i32 > %x , %y
@@ -168,11 +135,8 @@ define <2 x i32> @ashr_lshr_nonsplat_vec2(<2 x i32> %x, <2 x i32> %y) {
168
135
169
136
define <2 x i32 > @ashr_lshr_nonsplat_vec3 (<2 x i32 > %x , <2 x i32 > %y ) {
170
137
; CHECK-LABEL: @ashr_lshr_nonsplat_vec3(
171
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 5, i32 6>
172
- ; CHECK-NEXT: [[L:%.*]] = lshr exact <2 x i32> [[X]], [[Y:%.*]]
173
- ; CHECK-NEXT: [[R:%.*]] = ashr <2 x i32> [[X]], [[Y]]
174
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
175
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
138
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
139
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
176
140
;
177
141
%cmp = icmp sgt <2 x i32 > %x , <i32 5 , i32 6 >
178
142
%l = lshr exact <2 x i32 > %x , %y
@@ -183,11 +147,8 @@ define <2 x i32> @ashr_lshr_nonsplat_vec3(<2 x i32> %x, <2 x i32> %y) {
183
147
184
148
define <2 x i32 > @ashr_lshr_nonsplat_vec4 (<2 x i32 > %x , <2 x i32 > %y ) {
185
149
; CHECK-LABEL: @ashr_lshr_nonsplat_vec4(
186
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 8, i32 7>
187
- ; CHECK-NEXT: [[L:%.*]] = lshr <2 x i32> [[X]], [[Y:%.*]]
188
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
189
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
190
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
150
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
151
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
191
152
;
192
153
%cmp = icmp sgt <2 x i32 > %x , <i32 8 , i32 7 >
193
154
%l = lshr <2 x i32 > %x , %y
@@ -198,11 +159,8 @@ define <2 x i32> @ashr_lshr_nonsplat_vec4(<2 x i32> %x, <2 x i32> %y) {
198
159
199
160
define i32 @ashr_lshr_cst (i32 %x , i32 %y ) {
200
161
; CHECK-LABEL: @ashr_lshr_cst(
201
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[X:%.*]], 1
202
- ; CHECK-NEXT: [[L:%.*]] = lshr i32 [[X]], 8
203
- ; CHECK-NEXT: [[R:%.*]] = ashr exact i32 [[X]], 8
204
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[R]], i32 [[L]]
205
- ; CHECK-NEXT: ret i32 [[RET]]
162
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], 8
163
+ ; CHECK-NEXT: ret i32 [[CMP1]]
206
164
;
207
165
%cmp = icmp slt i32 %x , 1
208
166
%l = lshr i32 %x , 8
@@ -213,11 +171,8 @@ define i32 @ashr_lshr_cst(i32 %x, i32 %y) {
213
171
214
172
define i32 @ashr_lshr_cst2 (i32 %x , i32 %y ) {
215
173
; CHECK-LABEL: @ashr_lshr_cst2(
216
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt i32 [[X:%.*]], -1
217
- ; CHECK-NEXT: [[L:%.*]] = lshr i32 [[X]], 8
218
- ; CHECK-NEXT: [[R:%.*]] = ashr exact i32 [[X]], 8
219
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[L]], i32 [[R]]
220
- ; CHECK-NEXT: ret i32 [[RET]]
174
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], 8
175
+ ; CHECK-NEXT: ret i32 [[CMP1]]
221
176
;
222
177
%cmp = icmp sgt i32 %x , -1
223
178
%l = lshr i32 %x , 8
@@ -228,11 +183,8 @@ define i32 @ashr_lshr_cst2(i32 %x, i32 %y) {
228
183
229
184
define i32 @ashr_lshr_inv (i32 %x , i32 %y ) {
230
185
; CHECK-LABEL: @ashr_lshr_inv(
231
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[X:%.*]], 1
232
- ; CHECK-NEXT: [[L:%.*]] = lshr i32 [[X]], [[Y:%.*]]
233
- ; CHECK-NEXT: [[R:%.*]] = ashr exact i32 [[X]], [[Y]]
234
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[R]], i32 [[L]]
235
- ; CHECK-NEXT: ret i32 [[RET]]
186
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], [[Y:%.*]]
187
+ ; CHECK-NEXT: ret i32 [[CMP1]]
236
188
;
237
189
%cmp = icmp slt i32 %x , 1
238
190
%l = lshr i32 %x , %y
@@ -243,11 +195,8 @@ define i32 @ashr_lshr_inv(i32 %x, i32 %y) {
243
195
244
196
define i32 @ashr_lshr_inv2 (i32 %x , i32 %y ) {
245
197
; CHECK-LABEL: @ashr_lshr_inv2(
246
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt i32 [[X:%.*]], 7
247
- ; CHECK-NEXT: [[L:%.*]] = lshr i32 [[X]], [[Y:%.*]]
248
- ; CHECK-NEXT: [[R:%.*]] = ashr exact i32 [[X]], [[Y]]
249
- ; CHECK-NEXT: [[RET:%.*]] = select i1 [[CMP]], i32 [[R]], i32 [[L]]
250
- ; CHECK-NEXT: ret i32 [[RET]]
198
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr i32 [[X:%.*]], [[Y:%.*]]
199
+ ; CHECK-NEXT: ret i32 [[CMP1]]
251
200
;
252
201
%cmp = icmp slt i32 %x , 7
253
202
%l = lshr i32 %x , %y
@@ -258,11 +207,8 @@ define i32 @ashr_lshr_inv2(i32 %x, i32 %y) {
258
207
259
208
define <2 x i32 > @ashr_lshr_inv_splat_vec (<2 x i32 > %x , <2 x i32 > %y ) {
260
209
; CHECK-LABEL: @ashr_lshr_inv_splat_vec(
261
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 1, i32 1>
262
- ; CHECK-NEXT: [[L:%.*]] = lshr <2 x i32> [[X]], [[Y:%.*]]
263
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
264
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[R]], <2 x i32> [[L]]
265
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
210
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
211
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
266
212
;
267
213
%cmp = icmp slt <2 x i32 > %x , <i32 1 , i32 1 >
268
214
%l = lshr <2 x i32 > %x , %y
@@ -273,11 +219,8 @@ define <2 x i32> @ashr_lshr_inv_splat_vec(<2 x i32> %x, <2 x i32> %y) {
273
219
274
220
define <2 x i32 > @ashr_lshr_inv_nonsplat_vec (<2 x i32 > %x , <2 x i32 > %y ) {
275
221
; CHECK-LABEL: @ashr_lshr_inv_nonsplat_vec(
276
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 4, i32 5>
277
- ; CHECK-NEXT: [[L:%.*]] = lshr <2 x i32> [[X]], [[Y:%.*]]
278
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
279
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[R]], <2 x i32> [[L]]
280
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
222
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
223
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
281
224
;
282
225
%cmp = icmp slt <2 x i32 > %x , <i32 4 , i32 5 >
283
226
%l = lshr <2 x i32 > %x , %y
@@ -288,11 +231,8 @@ define <2 x i32> @ashr_lshr_inv_nonsplat_vec(<2 x i32> %x, <2 x i32> %y) {
288
231
289
232
define <2 x i32 > @ashr_lshr_vec_undef (<2 x i32 > %x , <2 x i32 > %y ) {
290
233
; CHECK-LABEL: @ashr_lshr_vec_undef(
291
- ; CHECK-NEXT: [[CMP:%.*]] = icmp sgt <2 x i32> [[X:%.*]], <i32 undef, i32 -1>
292
- ; CHECK-NEXT: [[L:%.*]] = lshr <2 x i32> [[X]], [[Y:%.*]]
293
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
294
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[L]], <2 x i32> [[R]]
295
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
234
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr <2 x i32> [[X:%.*]], [[Y:%.*]]
235
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
296
236
;
297
237
%cmp = icmp sgt <2 x i32 > %x , <i32 undef , i32 -1 >
298
238
%l = lshr <2 x i32 > %x , %y
@@ -303,11 +243,8 @@ define <2 x i32> @ashr_lshr_vec_undef(<2 x i32> %x, <2 x i32> %y) {
303
243
304
244
define <2 x i32 > @ashr_lshr_vec_undef2 (<2 x i32 > %x , <2 x i32 > %y ) {
305
245
; CHECK-LABEL: @ashr_lshr_vec_undef2(
306
- ; CHECK-NEXT: [[CMP:%.*]] = icmp slt <2 x i32> [[X:%.*]], <i32 1, i32 undef>
307
- ; CHECK-NEXT: [[L:%.*]] = lshr exact <2 x i32> [[X]], [[Y:%.*]]
308
- ; CHECK-NEXT: [[R:%.*]] = ashr exact <2 x i32> [[X]], [[Y]]
309
- ; CHECK-NEXT: [[RET:%.*]] = select <2 x i1> [[CMP]], <2 x i32> [[R]], <2 x i32> [[L]]
310
- ; CHECK-NEXT: ret <2 x i32> [[RET]]
246
+ ; CHECK-NEXT: [[CMP1:%.*]] = ashr exact <2 x i32> [[X:%.*]], [[Y:%.*]]
247
+ ; CHECK-NEXT: ret <2 x i32> [[CMP1]]
311
248
;
312
249
%cmp = icmp slt <2 x i32 > %x , <i32 1 , i32 undef >
313
250
%l = lshr exact <2 x i32 > %x , %y
0 commit comments