@@ -122,9 +122,7 @@ define <2 x i64> @cttz_sext_zero_def_vec(<2 x i32> %x) {
122
122
123
123
define i32 @cttz_of_lowest_set_bit (i32 %x ) {
124
124
; CHECK-LABEL: @cttz_of_lowest_set_bit(
125
- ; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[X:%.*]]
126
- ; CHECK-NEXT: [[AND:%.*]] = and i32 [[SUB]], [[X]]
127
- ; CHECK-NEXT: [[TZ:%.*]] = call i32 @llvm.cttz.i32(i32 [[AND]], i1 false), !range [[RNG1]]
125
+ ; CHECK-NEXT: [[TZ:%.*]] = call i32 @llvm.cttz.i32(i32 [[X:%.*]], i1 false), !range [[RNG1]]
128
126
; CHECK-NEXT: ret i32 [[TZ]]
129
127
;
130
128
%sub = sub i32 0 , %x
@@ -136,9 +134,7 @@ define i32 @cttz_of_lowest_set_bit(i32 %x) {
136
134
define i32 @cttz_of_lowest_set_bit_commuted (i32 %xx ) {
137
135
; CHECK-LABEL: @cttz_of_lowest_set_bit_commuted(
138
136
; CHECK-NEXT: [[X:%.*]] = udiv i32 42, [[XX:%.*]]
139
- ; CHECK-NEXT: [[SUB:%.*]] = sub nsw i32 0, [[X]]
140
- ; CHECK-NEXT: [[AND:%.*]] = and i32 [[X]], [[SUB]]
141
- ; CHECK-NEXT: [[TZ:%.*]] = call i32 @llvm.cttz.i32(i32 [[AND]], i1 false), !range [[RNG1]]
137
+ ; CHECK-NEXT: [[TZ:%.*]] = call i32 @llvm.cttz.i32(i32 [[X]], i1 false), !range [[RNG1]]
142
138
; CHECK-NEXT: ret i32 [[TZ]]
143
139
;
144
140
%x = udiv i32 42 , %xx ; thwart complexity-based canonicalization
@@ -150,9 +146,7 @@ define i32 @cttz_of_lowest_set_bit_commuted(i32 %xx) {
150
146
151
147
define i32 @cttz_of_lowest_set_bit_poison_flag (i32 %x ) {
152
148
; CHECK-LABEL: @cttz_of_lowest_set_bit_poison_flag(
153
- ; CHECK-NEXT: [[SUB:%.*]] = sub i32 0, [[X:%.*]]
154
- ; CHECK-NEXT: [[AND:%.*]] = and i32 [[SUB]], [[X]]
155
- ; CHECK-NEXT: [[TZ:%.*]] = call i32 @llvm.cttz.i32(i32 [[AND]], i1 true), !range [[RNG1]]
149
+ ; CHECK-NEXT: [[TZ:%.*]] = call i32 @llvm.cttz.i32(i32 [[X:%.*]], i1 true), !range [[RNG1]]
156
150
; CHECK-NEXT: ret i32 [[TZ]]
157
151
;
158
152
%sub = sub i32 0 , %x
@@ -163,9 +157,7 @@ define i32 @cttz_of_lowest_set_bit_poison_flag(i32 %x) {
163
157
164
158
define <2 x i64 > @cttz_of_lowest_set_bit_vec (<2 x i64 > %x ) {
165
159
; CHECK-LABEL: @cttz_of_lowest_set_bit_vec(
166
- ; CHECK-NEXT: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[X:%.*]]
167
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i64> [[SUB]], [[X]]
168
- ; CHECK-NEXT: [[TZ:%.*]] = call <2 x i64> @llvm.cttz.v2i64(<2 x i64> [[AND]], i1 false), !range [[RNG2]]
160
+ ; CHECK-NEXT: [[TZ:%.*]] = call <2 x i64> @llvm.cttz.v2i64(<2 x i64> [[X:%.*]], i1 false), !range [[RNG2]]
169
161
; CHECK-NEXT: ret <2 x i64> [[TZ]]
170
162
;
171
163
%sub = sub <2 x i64 > zeroinitializer , %x
@@ -176,9 +168,7 @@ define <2 x i64> @cttz_of_lowest_set_bit_vec(<2 x i64> %x) {
176
168
177
169
define <2 x i64 > @cttz_of_lowest_set_bit_vec_undef (<2 x i64 > %x ) {
178
170
; CHECK-LABEL: @cttz_of_lowest_set_bit_vec_undef(
179
- ; CHECK-NEXT: [[SUB:%.*]] = sub <2 x i64> zeroinitializer, [[X:%.*]]
180
- ; CHECK-NEXT: [[AND:%.*]] = and <2 x i64> [[SUB]], [[X]]
181
- ; CHECK-NEXT: [[TZ:%.*]] = call <2 x i64> @llvm.cttz.v2i64(<2 x i64> [[AND]], i1 false), !range [[RNG2]]
171
+ ; CHECK-NEXT: [[TZ:%.*]] = call <2 x i64> @llvm.cttz.v2i64(<2 x i64> [[X:%.*]], i1 false), !range [[RNG2]]
182
172
; CHECK-NEXT: ret <2 x i64> [[TZ]]
183
173
;
184
174
%sub = sub <2 x i64 > zeroinitializer , %x
0 commit comments