4
4
define i8 @umin_cttz_i8_zero_undefined (i8 %X ) {
5
5
; CHECK-LABEL: define i8 @umin_cttz_i8_zero_undefined(
6
6
; CHECK-SAME: i8 [[X:%.*]]) {
7
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range( i8 0, 9) i8 @llvm.cttz.i8(i8 [[X]], i1 true)
8
- ; CHECK-NEXT: [[RET:%.*]] = call i8 @llvm.umin .i8(i8 [[CTTZ ]], i8 6 )
7
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 64
8
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.cttz .i8(i8 [[TMP1 ]], i1 true )
9
9
; CHECK-NEXT: ret i8 [[RET]]
10
10
;
11
11
%cttz = call i8 @llvm.cttz.i8 (i8 %X , i1 true )
@@ -16,8 +16,8 @@ define i8 @umin_cttz_i8_zero_undefined(i8 %X) {
16
16
define i8 @umin_cttz_i8_zero_defined (i8 %X ) {
17
17
; CHECK-LABEL: define i8 @umin_cttz_i8_zero_defined(
18
18
; CHECK-SAME: i8 [[X:%.*]]) {
19
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range( i8 0, 9) i8 @llvm.cttz.i8(i8 [[X]], i1 false)
20
- ; CHECK-NEXT: [[RET:%.*]] = call i8 @llvm.umin .i8(i8 [[CTTZ ]], i8 6 )
19
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 64
20
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.cttz .i8(i8 [[TMP1 ]], i1 true )
21
21
; CHECK-NEXT: ret i8 [[RET]]
22
22
;
23
23
%cttz = call i8 @llvm.cttz.i8 (i8 %X , i1 false )
@@ -28,8 +28,8 @@ define i8 @umin_cttz_i8_zero_defined(i8 %X) {
28
28
define i8 @umin_cttz_i8_commuted_zero_undefined (i8 %X ) {
29
29
; CHECK-LABEL: define i8 @umin_cttz_i8_commuted_zero_undefined(
30
30
; CHECK-SAME: i8 [[X:%.*]]) {
31
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range( i8 0, 9) i8 @llvm.cttz.i8(i8 [[X]], i1 true)
32
- ; CHECK-NEXT: [[RET:%.*]] = call i8 @llvm.umin .i8(i8 [[CTTZ ]], i8 6 )
31
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 64
32
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.cttz .i8(i8 [[TMP1 ]], i1 true )
33
33
; CHECK-NEXT: ret i8 [[RET]]
34
34
;
35
35
%cttz = call i8 @llvm.cttz.i8 (i8 %X , i1 true )
@@ -51,8 +51,8 @@ define i8 @umin_cttz_i8_ge_bitwidth_zero_undefined(i8 %X) {
51
51
define i16 @umin_cttz_i16_zero_undefined (i16 %X ) {
52
52
; CHECK-LABEL: define i16 @umin_cttz_i16_zero_undefined(
53
53
; CHECK-SAME: i16 [[X:%.*]]) {
54
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range( i16 0, 17) i16 @llvm.cttz.i16(i16 [[X]], i1 true)
55
- ; CHECK-NEXT: [[RET:%.*]] = call i16 @llvm.umin .i16(i16 [[CTTZ ]], i16 6 )
54
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i16 [[X]], 64
55
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i16 0, 7) i16 @llvm.cttz .i16(i16 [[TMP1 ]], i1 true )
56
56
; CHECK-NEXT: ret i16 [[RET]]
57
57
;
58
58
%cttz = call i16 @llvm.cttz.i16 (i16 %X , i1 true )
@@ -63,8 +63,8 @@ define i16 @umin_cttz_i16_zero_undefined(i16 %X) {
63
63
define i32 @umin_cttz_i32_zero_undefined (i32 %X ) {
64
64
; CHECK-LABEL: define i32 @umin_cttz_i32_zero_undefined(
65
65
; CHECK-SAME: i32 [[X:%.*]]) {
66
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range( i32 0, 33) i32 @llvm.cttz.i32(i32 [[X]], i1 true)
67
- ; CHECK-NEXT: [[RET:%.*]] = call i32 @llvm.umin .i32(i32 [[CTTZ ]], i32 6 )
66
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i32 [[X]], 64
67
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i32 0, 7) i32 @llvm.cttz .i32(i32 [[TMP1 ]], i1 true )
68
68
; CHECK-NEXT: ret i32 [[RET]]
69
69
;
70
70
%cttz = call i32 @llvm.cttz.i32 (i32 %X , i1 true )
@@ -75,8 +75,8 @@ define i32 @umin_cttz_i32_zero_undefined(i32 %X) {
75
75
define i64 @umin_cttz_i64_zero_undefined (i64 %X ) {
76
76
; CHECK-LABEL: define i64 @umin_cttz_i64_zero_undefined(
77
77
; CHECK-SAME: i64 [[X:%.*]]) {
78
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range( i64 0, 65) i64 @llvm.cttz.i64(i64 [[X]], i1 true)
79
- ; CHECK-NEXT: [[RET:%.*]] = call i64 @llvm.umin .i64(i64 [[CTTZ ]], i64 6 )
78
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i64 [[X]], 64
79
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i64 0, 7) i64 @llvm.cttz .i64(i64 [[TMP1 ]], i1 true )
80
80
; CHECK-NEXT: ret i64 [[RET]]
81
81
;
82
82
%cttz = call i64 @llvm.cttz.i64 (i64 %X , i1 true )
@@ -108,8 +108,8 @@ define i1 @umin_cttz_i1_zero_defined(i1 %X) {
108
108
define <2 x i32 > @umin_cttz_2xi32_splat_zero_undefined (<2 x i32 > %X ) {
109
109
; CHECK-LABEL: define <2 x i32> @umin_cttz_2xi32_splat_zero_undefined(
110
110
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
111
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
112
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin .v2i32(<2 x i32> [[CTTZ ]], <2 x i32> <i32 6, i32 6> )
111
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 64, i32 64>
112
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 7) <2 x i32> @llvm.cttz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
113
113
; CHECK-NEXT: ret <2 x i32> [[RET]]
114
114
;
115
115
%cttz = call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %X , i1 true )
@@ -120,8 +120,8 @@ define <2 x i32> @umin_cttz_2xi32_splat_zero_undefined(<2 x i32> %X) {
120
120
define <2 x i32 > @umin_cttz_2xi32_splat_poison_zero_undefined (<2 x i32 > %X ) {
121
121
; CHECK-LABEL: define <2 x i32> @umin_cttz_2xi32_splat_poison_zero_undefined(
122
122
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
123
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
124
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin .v2i32(<2 x i32> [[CTTZ ]], <2 x i32> <i32 6, i32 poison> )
123
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 64, i32 poison>
124
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 7) <2 x i32> @llvm.cttz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
125
125
; CHECK-NEXT: ret <2 x i32> [[RET]]
126
126
;
127
127
%cttz = call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %X , i1 true )
@@ -132,8 +132,8 @@ define <2 x i32> @umin_cttz_2xi32_splat_poison_zero_undefined(<2 x i32> %X) {
132
132
define <2 x i32 > @umin_cttz_2xi32_no_splat_all_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
133
133
; CHECK-LABEL: define <2 x i32> @umin_cttz_2xi32_no_splat_all_lt_bitwidth_zero_undefined(
134
134
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
135
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
136
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin .v2i32(<2 x i32> [[CTTZ ]], <2 x i32> <i32 6, i32 0> )
135
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 64, i32 1>
136
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
137
137
; CHECK-NEXT: ret <2 x i32> [[RET]]
138
138
;
139
139
%cttz = call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %X , i1 true )
@@ -144,9 +144,9 @@ define <2 x i32> @umin_cttz_2xi32_no_splat_all_lt_bitwidth_zero_undefined(<2 x i
144
144
define <2 x i32 > @umin_cttz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
145
145
; CHECK-LABEL: define <2 x i32> @umin_cttz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefined(
146
146
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
147
- ; CHECK-NEXT: [[CTTZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
148
- ; CHECK-NEXT: [[RET :%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[CTTZ ]], <2 x i32> <i32 6, i32 64>)
149
- ; CHECK-NEXT: ret <2 x i32> [[RET ]]
147
+ ; CHECK-NEXT: [[RET :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
148
+ ; CHECK-NEXT: [[RET1 :%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[RET ]], <2 x i32> <i32 6, i32 64>)
149
+ ; CHECK-NEXT: ret <2 x i32> [[RET1 ]]
150
150
;
151
151
%cttz = call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %X , i1 true )
152
152
%ret = call <2 x i32 > @llvm.umin.v2i32 (<2 x i32 > %cttz , <2 x i32 > <i32 6 , i32 64 >)
@@ -156,8 +156,7 @@ define <2 x i32> @umin_cttz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefi
156
156
define <2 x i32 > @umin_cttz_2xi32_no_splat_none_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
157
157
; CHECK-LABEL: define <2 x i32> @umin_cttz_2xi32_no_splat_none_lt_bitwidth_zero_undefined(
158
158
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
159
- ; CHECK-NEXT: [[CTTZ:%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
160
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[CTTZ]], <2 x i32> <i32 32, i32 64>)
159
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
161
160
; CHECK-NEXT: ret <2 x i32> [[RET]]
162
161
;
163
162
%cttz = call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %X , i1 true )
@@ -194,8 +193,8 @@ define i16 @umin_cttz_i16_negative_two_uses(i16 %X) {
194
193
define i8 @umin_ctlz_i8_zero_undefined (i8 %X ) {
195
194
; CHECK-LABEL: define i8 @umin_ctlz_i8_zero_undefined(
196
195
; CHECK-SAME: i8 [[X:%.*]]) {
197
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range( i8 0, 9) i8 @llvm.ctlz.i8(i8 [[X]], i1 true)
198
- ; CHECK-NEXT: [[RET:%.*]] = call i8 @llvm.umin .i8(i8 [[CTLZ ]], i8 6 )
196
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 2
197
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.ctlz .i8(i8 [[TMP1 ]], i1 true )
199
198
; CHECK-NEXT: ret i8 [[RET]]
200
199
;
201
200
%ctlz = call i8 @llvm.ctlz.i8 (i8 %X , i1 true )
@@ -206,8 +205,8 @@ define i8 @umin_ctlz_i8_zero_undefined(i8 %X) {
206
205
define i8 @umin_ctlz_i8_zero_defined (i8 %X ) {
207
206
; CHECK-LABEL: define i8 @umin_ctlz_i8_zero_defined(
208
207
; CHECK-SAME: i8 [[X:%.*]]) {
209
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range( i8 0, 9) i8 @llvm.ctlz.i8(i8 [[X]], i1 false)
210
- ; CHECK-NEXT: [[RET:%.*]] = call i8 @llvm.umin .i8(i8 [[CTLZ ]], i8 6 )
208
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 2
209
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.ctlz .i8(i8 [[TMP1 ]], i1 true )
211
210
; CHECK-NEXT: ret i8 [[RET]]
212
211
;
213
212
%ctlz = call i8 @llvm.ctlz.i8 (i8 %X , i1 false )
@@ -218,8 +217,8 @@ define i8 @umin_ctlz_i8_zero_defined(i8 %X) {
218
217
define i8 @umin_ctlz_i8_commuted_zero_undefined (i8 %X ) {
219
218
; CHECK-LABEL: define i8 @umin_ctlz_i8_commuted_zero_undefined(
220
219
; CHECK-SAME: i8 [[X:%.*]]) {
221
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range( i8 0, 9) i8 @llvm.ctlz.i8(i8 [[X]], i1 true)
222
- ; CHECK-NEXT: [[RET:%.*]] = call i8 @llvm.umin .i8(i8 [[CTLZ ]], i8 6 )
220
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 2
221
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.ctlz .i8(i8 [[TMP1 ]], i1 true )
223
222
; CHECK-NEXT: ret i8 [[RET]]
224
223
;
225
224
%ctlz = call i8 @llvm.ctlz.i8 (i8 %X , i1 true )
@@ -241,8 +240,8 @@ define i8 @umin_ctlz_i8_ge_bitwidth_zero_undefined(i8 %X) {
241
240
define i16 @umin_ctlz_i16_zero_undefined (i16 %X ) {
242
241
; CHECK-LABEL: define i16 @umin_ctlz_i16_zero_undefined(
243
242
; CHECK-SAME: i16 [[X:%.*]]) {
244
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range( i16 0, 17) i16 @llvm.ctlz.i16(i16 [[X]], i1 true)
245
- ; CHECK-NEXT: [[RET:%.*]] = call i16 @llvm.umin .i16(i16 [[CTLZ ]], i16 6 )
243
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i16 [[X]], 512
244
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i16 0, 7) i16 @llvm.ctlz .i16(i16 [[TMP1 ]], i1 true )
246
245
; CHECK-NEXT: ret i16 [[RET]]
247
246
;
248
247
%ctlz = call i16 @llvm.ctlz.i16 (i16 %X , i1 true )
@@ -253,8 +252,8 @@ define i16 @umin_ctlz_i16_zero_undefined(i16 %X) {
253
252
define i32 @umin_ctlz_i32_zero_undefined (i32 %X ) {
254
253
; CHECK-LABEL: define i32 @umin_ctlz_i32_zero_undefined(
255
254
; CHECK-SAME: i32 [[X:%.*]]) {
256
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range( i32 0, 33) i32 @llvm.ctlz.i32(i32 [[X]], i1 true)
257
- ; CHECK-NEXT: [[RET:%.*]] = call i32 @llvm.umin .i32(i32 [[CTLZ ]], i32 6 )
255
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i32 [[X]], 33554432
256
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i32 0, 7) i32 @llvm.ctlz .i32(i32 [[TMP1 ]], i1 true )
258
257
; CHECK-NEXT: ret i32 [[RET]]
259
258
;
260
259
%ctlz = call i32 @llvm.ctlz.i32 (i32 %X , i1 true )
@@ -265,8 +264,8 @@ define i32 @umin_ctlz_i32_zero_undefined(i32 %X) {
265
264
define i64 @umin_ctlz_i64_zero_undefined (i64 %X ) {
266
265
; CHECK-LABEL: define i64 @umin_ctlz_i64_zero_undefined(
267
266
; CHECK-SAME: i64 [[X:%.*]]) {
268
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range( i64 0, 65) i64 @llvm.ctlz.i64(i64 [[X]], i1 true)
269
- ; CHECK-NEXT: [[RET:%.*]] = call i64 @llvm.umin .i64(i64 [[CTLZ ]], i64 6 )
267
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i64 [[X]], 144115188075855872
268
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i64 0, 7) i64 @llvm.ctlz .i64(i64 [[TMP1 ]], i1 true )
270
269
; CHECK-NEXT: ret i64 [[RET]]
271
270
;
272
271
%ctlz = call i64 @llvm.ctlz.i64 (i64 %X , i1 true )
@@ -298,8 +297,8 @@ define i1 @umin_ctlz_i1_zero_defined(i1 %X) {
298
297
define <2 x i32 > @umin_ctlz_2xi32_splat_zero_undefined (<2 x i32 > %X ) {
299
298
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_splat_zero_undefined(
300
299
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
301
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
302
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin .v2i32(<2 x i32> [[CTLZ ]], <2 x i32> <i32 6, i32 6> )
300
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 33554432, i32 33554432>
301
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 7) <2 x i32> @llvm.ctlz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
303
302
; CHECK-NEXT: ret <2 x i32> [[RET]]
304
303
;
305
304
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
@@ -310,8 +309,8 @@ define <2 x i32> @umin_ctlz_2xi32_splat_zero_undefined(<2 x i32> %X) {
310
309
define <2 x i32 > @umin_ctlz_2xi32_splat_poison_zero_undefined (<2 x i32 > %X ) {
311
310
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_splat_poison_zero_undefined(
312
311
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
313
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
314
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin .v2i32(<2 x i32> [[CTLZ ]], <2 x i32> <i32 6, i32 poison> )
312
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 33554432, i32 poison>
313
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 7) <2 x i32> @llvm.ctlz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
315
314
; CHECK-NEXT: ret <2 x i32> [[RET]]
316
315
;
317
316
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
@@ -322,8 +321,8 @@ define <2 x i32> @umin_ctlz_2xi32_splat_poison_zero_undefined(<2 x i32> %X) {
322
321
define <2 x i32 > @umin_ctlz_2xi32_no_splat_all_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
323
322
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_no_splat_all_lt_bitwidth_zero_undefined(
324
323
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
325
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
326
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin .v2i32(<2 x i32> [[CTLZ ]], <2 x i32> <i32 6, i32 0> )
324
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 33554432, i32 -2147483648>
325
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
327
326
; CHECK-NEXT: ret <2 x i32> [[RET]]
328
327
;
329
328
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
@@ -334,9 +333,9 @@ define <2 x i32> @umin_ctlz_2xi32_no_splat_all_lt_bitwidth_zero_undefined(<2 x i
334
333
define <2 x i32 > @umin_ctlz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
335
334
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefined(
336
335
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
337
- ; CHECK-NEXT: [[CTLZ :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
338
- ; CHECK-NEXT: [[RET :%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[CTLZ ]], <2 x i32> <i32 6, i32 64>)
339
- ; CHECK-NEXT: ret <2 x i32> [[RET ]]
336
+ ; CHECK-NEXT: [[RET :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
337
+ ; CHECK-NEXT: [[RET1 :%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[RET ]], <2 x i32> <i32 6, i32 64>)
338
+ ; CHECK-NEXT: ret <2 x i32> [[RET1 ]]
340
339
;
341
340
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
342
341
%ret = call <2 x i32 > @llvm.umin.v2i32 (<2 x i32 > %ctlz , <2 x i32 > <i32 6 , i32 64 >)
@@ -346,8 +345,7 @@ define <2 x i32> @umin_ctlz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefi
346
345
define <2 x i32 > @umin_ctlz_2xi32_no_splat_none_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
347
346
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_no_splat_none_lt_bitwidth_zero_undefined(
348
347
; CHECK-SAME: <2 x i32> [[X:%.*]]) {
349
- ; CHECK-NEXT: [[CTLZ:%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
350
- ; CHECK-NEXT: [[RET:%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[CTLZ]], <2 x i32> <i32 32, i32 64>)
348
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
351
349
; CHECK-NEXT: ret <2 x i32> [[RET]]
352
350
;
353
351
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
0 commit comments