@@ -122,9 +122,7 @@ define <2 x i64> @cttz_sext_zero_def_vec(<2 x i32> %x) {
122122
123123define i32 @cttz_of_lowest_set_bit (i32 %x ) {
124124; 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]]
128126; CHECK-NEXT: ret i32 [[TZ]]
129127;
130128 %sub = sub i32 0 , %x
@@ -136,9 +134,7 @@ define i32 @cttz_of_lowest_set_bit(i32 %x) {
136134define i32 @cttz_of_lowest_set_bit_commuted (i32 %xx ) {
137135; CHECK-LABEL: @cttz_of_lowest_set_bit_commuted(
138136; 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]]
142138; CHECK-NEXT: ret i32 [[TZ]]
143139;
144140 %x = udiv i32 42 , %xx ; thwart complexity-based canonicalization
@@ -150,9 +146,7 @@ define i32 @cttz_of_lowest_set_bit_commuted(i32 %xx) {
150146
151147define i32 @cttz_of_lowest_set_bit_poison_flag (i32 %x ) {
152148; 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]]
156150; CHECK-NEXT: ret i32 [[TZ]]
157151;
158152 %sub = sub i32 0 , %x
@@ -163,9 +157,7 @@ define i32 @cttz_of_lowest_set_bit_poison_flag(i32 %x) {
163157
164158define <2 x i64 > @cttz_of_lowest_set_bit_vec (<2 x i64 > %x ) {
165159; 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]]
169161; CHECK-NEXT: ret <2 x i64> [[TZ]]
170162;
171163 %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) {
176168
177169define <2 x i64 > @cttz_of_lowest_set_bit_vec_undef (<2 x i64 > %x ) {
178170; 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]]
182172; CHECK-NEXT: ret <2 x i64> [[TZ]]
183173;
184174 %sub = sub <2 x i64 > zeroinitializer , %x
0 commit comments