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_negative_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,9 +156,9 @@ define <2 x i32> @umin_cttz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefi
156
156
define <2 x i32 > @umin_cttz_2xi32_negative_no_splat_none_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
157
157
; CHECK-LABEL: define <2 x i32> @umin_cttz_2xi32_negative_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>)
161
- ; CHECK-NEXT: ret <2 x i32> [[RET ]]
159
+ ; CHECK-NEXT: [[RET :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.cttz.v2i32(<2 x i32> [[X]], i1 true)
160
+ ; CHECK-NEXT: [[RET1 :%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[RET ]], <2 x i32> <i32 32, i32 64>)
161
+ ; CHECK-NEXT: ret <2 x i32> [[RET1 ]]
162
162
;
163
163
%cttz = call <2 x i32 > @llvm.cttz.v2i32 (<2 x i32 > %X , i1 true )
164
164
%ret = call <2 x i32 > @llvm.umin.v2i32 (<2 x i32 > %cttz , <2 x i32 > <i32 32 , i32 64 >)
@@ -194,8 +194,8 @@ define i16 @umin_cttz_i16_negative_two_uses(i16 %X) {
194
194
define i8 @umin_ctlz_i8_zero_undefined (i8 %X ) {
195
195
; CHECK-LABEL: define i8 @umin_ctlz_i8_zero_undefined(
196
196
; 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 )
197
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 2
198
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.ctlz .i8(i8 [[TMP1 ]], i1 true )
199
199
; CHECK-NEXT: ret i8 [[RET]]
200
200
;
201
201
%ctlz = call i8 @llvm.ctlz.i8 (i8 %X , i1 true )
@@ -206,8 +206,8 @@ define i8 @umin_ctlz_i8_zero_undefined(i8 %X) {
206
206
define i8 @umin_ctlz_i8_zero_defined (i8 %X ) {
207
207
; CHECK-LABEL: define i8 @umin_ctlz_i8_zero_defined(
208
208
; 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 )
209
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 2
210
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.ctlz .i8(i8 [[TMP1 ]], i1 true )
211
211
; CHECK-NEXT: ret i8 [[RET]]
212
212
;
213
213
%ctlz = call i8 @llvm.ctlz.i8 (i8 %X , i1 false )
@@ -218,8 +218,8 @@ define i8 @umin_ctlz_i8_zero_defined(i8 %X) {
218
218
define i8 @umin_ctlz_i8_commuted_zero_undefined (i8 %X ) {
219
219
; CHECK-LABEL: define i8 @umin_ctlz_i8_commuted_zero_undefined(
220
220
; 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 )
221
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i8 [[X]], 2
222
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i8 0, 7) i8 @llvm.ctlz .i8(i8 [[TMP1 ]], i1 true )
223
223
; CHECK-NEXT: ret i8 [[RET]]
224
224
;
225
225
%ctlz = call i8 @llvm.ctlz.i8 (i8 %X , i1 true )
@@ -241,8 +241,8 @@ define i8 @umin_ctlz_i8_negative_ge_bitwidth_zero_undefined(i8 %X) {
241
241
define i16 @umin_ctlz_i16_zero_undefined (i16 %X ) {
242
242
; CHECK-LABEL: define i16 @umin_ctlz_i16_zero_undefined(
243
243
; 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 )
244
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i16 [[X]], 512
245
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i16 0, 7) i16 @llvm.ctlz .i16(i16 [[TMP1 ]], i1 true )
246
246
; CHECK-NEXT: ret i16 [[RET]]
247
247
;
248
248
%ctlz = call i16 @llvm.ctlz.i16 (i16 %X , i1 true )
@@ -253,8 +253,8 @@ define i16 @umin_ctlz_i16_zero_undefined(i16 %X) {
253
253
define i32 @umin_ctlz_i32_zero_undefined (i32 %X ) {
254
254
; CHECK-LABEL: define i32 @umin_ctlz_i32_zero_undefined(
255
255
; 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 )
256
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i32 [[X]], 33554432
257
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i32 0, 7) i32 @llvm.ctlz .i32(i32 [[TMP1 ]], i1 true )
258
258
; CHECK-NEXT: ret i32 [[RET]]
259
259
;
260
260
%ctlz = call i32 @llvm.ctlz.i32 (i32 %X , i1 true )
@@ -265,8 +265,8 @@ define i32 @umin_ctlz_i32_zero_undefined(i32 %X) {
265
265
define i64 @umin_ctlz_i64_zero_undefined (i64 %X ) {
266
266
; CHECK-LABEL: define i64 @umin_ctlz_i64_zero_undefined(
267
267
; 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 )
268
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or i64 [[X]], 144115188075855872
269
+ ; CHECK-NEXT: [[RET:%.*]] = call range( i64 0, 7) i64 @llvm.ctlz .i64(i64 [[TMP1 ]], i1 true )
270
270
; CHECK-NEXT: ret i64 [[RET]]
271
271
;
272
272
%ctlz = call i64 @llvm.ctlz.i64 (i64 %X , i1 true )
@@ -298,8 +298,8 @@ define i1 @umin_ctlz_i1_zero_defined(i1 %X) {
298
298
define <2 x i32 > @umin_ctlz_2xi32_splat_zero_undefined (<2 x i32 > %X ) {
299
299
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_splat_zero_undefined(
300
300
; 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> )
301
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 33554432, i32 33554432>
302
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 7) <2 x i32> @llvm.ctlz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
303
303
; CHECK-NEXT: ret <2 x i32> [[RET]]
304
304
;
305
305
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
@@ -310,8 +310,8 @@ define <2 x i32> @umin_ctlz_2xi32_splat_zero_undefined(<2 x i32> %X) {
310
310
define <2 x i32 > @umin_ctlz_2xi32_splat_poison_zero_undefined (<2 x i32 > %X ) {
311
311
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_splat_poison_zero_undefined(
312
312
; 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> )
313
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 33554432, i32 poison>
314
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 7) <2 x i32> @llvm.ctlz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
315
315
; CHECK-NEXT: ret <2 x i32> [[RET]]
316
316
;
317
317
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
@@ -322,8 +322,8 @@ define <2 x i32> @umin_ctlz_2xi32_splat_poison_zero_undefined(<2 x i32> %X) {
322
322
define <2 x i32 > @umin_ctlz_2xi32_no_splat_all_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
323
323
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_no_splat_all_lt_bitwidth_zero_undefined(
324
324
; 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> )
325
+ ; CHECK-NEXT: [[TMP1 :%.*]] = or <2 x i32> [[X]], <i32 33554432, i32 -2147483648>
326
+ ; CHECK-NEXT: [[RET:%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz .v2i32(<2 x i32> [[TMP1 ]], i1 true )
327
327
; CHECK-NEXT: ret <2 x i32> [[RET]]
328
328
;
329
329
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
@@ -334,9 +334,9 @@ define <2 x i32> @umin_ctlz_2xi32_no_splat_all_lt_bitwidth_zero_undefined(<2 x i
334
334
define <2 x i32 > @umin_ctlz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
335
335
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefined(
336
336
; 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 ]]
337
+ ; CHECK-NEXT: [[RET :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
338
+ ; CHECK-NEXT: [[RET1 :%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[RET ]], <2 x i32> <i32 6, i32 64>)
339
+ ; CHECK-NEXT: ret <2 x i32> [[RET1 ]]
340
340
;
341
341
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
342
342
%ret = call <2 x i32 > @llvm.umin.v2i32 (<2 x i32 > %ctlz , <2 x i32 > <i32 6 , i32 64 >)
@@ -346,9 +346,9 @@ define <2 x i32> @umin_ctlz_2xi32_negative_no_splat_some_lt_bitwidth_zero_undefi
346
346
define <2 x i32 > @umin_ctlz_2xi32_negative_no_splat_none_lt_bitwidth_zero_undefined (<2 x i32 > %X ) {
347
347
; CHECK-LABEL: define <2 x i32> @umin_ctlz_2xi32_negative_no_splat_none_lt_bitwidth_zero_undefined(
348
348
; 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>)
351
- ; CHECK-NEXT: ret <2 x i32> [[RET ]]
349
+ ; CHECK-NEXT: [[RET :%.*]] = call range(i32 0, 33) <2 x i32> @llvm.ctlz.v2i32(<2 x i32> [[X]], i1 true)
350
+ ; CHECK-NEXT: [[RET1 :%.*]] = call <2 x i32> @llvm.umin.v2i32(<2 x i32> [[RET ]], <2 x i32> <i32 32, i32 64>)
351
+ ; CHECK-NEXT: ret <2 x i32> [[RET1 ]]
352
352
;
353
353
%ctlz = call <2 x i32 > @llvm.ctlz.v2i32 (<2 x i32 > %X , i1 true )
354
354
%ret = call <2 x i32 > @llvm.umin.v2i32 (<2 x i32 > %ctlz , <2 x i32 > <i32 32 , i32 64 >)
0 commit comments