@@ -302,9 +302,7 @@ define i16 @cttz_assume(i16 %x) {
302302declare void @use.i8 (i8 )
303303define i8 @fold_ctz_log2 (i8 %x ) {
304304; CHECK-LABEL: @fold_ctz_log2(
305- ; CHECK-NEXT: [[P2:%.*]] = shl nuw i8 1, [[X:%.*]]
306- ; CHECK-NEXT: [[V:%.*]] = call i8 @llvm.umin.i8(i8 [[P2]], i8 32)
307- ; CHECK-NEXT: [[R:%.*]] = call range(i8 0, 9) i8 @llvm.cttz.i8(i8 [[V]], i1 true)
305+ ; CHECK-NEXT: [[R:%.*]] = call i8 @llvm.umin.i8(i8 [[X:%.*]], i8 5)
308306; CHECK-NEXT: ret i8 [[R]]
309307;
310308 %p2 = shl i8 1 , %x
@@ -330,11 +328,10 @@ define i8 @fold_ctz_log2_maybe_z(i8 %x, i8 %y, i1 %c) {
330328
331329define i8 @fold_ctz_log2_maybe_z_okay (i8 %x , i8 %y , i1 %c ) {
332330; CHECK-LABEL: @fold_ctz_log2_maybe_z_okay(
333- ; CHECK-NEXT: [[X:%.*]] = shl i8 2, [[X1:%.*]]
334- ; CHECK-NEXT: [[Y:%.*]] = shl i8 4, [[Y1:%.*]]
331+ ; CHECK-NEXT: [[X:%.*]] = add i8 [[X1:%.*]], 1
332+ ; CHECK-NEXT: [[Y:%.*]] = add i8 [[Y1:%.*]], 2
335333; CHECK-NEXT: [[V_V:%.*]] = select i1 [[C:%.*]], i8 [[X]], i8 [[Y]]
336- ; CHECK-NEXT: [[R:%.*]] = call range(i8 1, 9) i8 @llvm.cttz.i8(i8 [[V_V]], i1 true)
337- ; CHECK-NEXT: ret i8 [[R]]
334+ ; CHECK-NEXT: ret i8 [[V_V]]
338335;
339336 %p2 = shl i8 2 , %x
340337 %p2_2 = shl i8 4 , %y
@@ -345,9 +342,8 @@ define i8 @fold_ctz_log2_maybe_z_okay(i8 %x, i8 %y, i1 %c) {
345342
346343define i8 @fold_clz_log2 (i8 %x ) {
347344; CHECK-LABEL: @fold_clz_log2(
348- ; CHECK-NEXT: [[P2:%.*]] = shl nuw i8 1, [[X:%.*]]
349- ; CHECK-NEXT: [[V:%.*]] = call i8 @llvm.umin.i8(i8 [[P2]], i8 32)
350- ; CHECK-NEXT: [[R:%.*]] = call range(i8 2, 9) i8 @llvm.ctlz.i8(i8 [[V]], i1 true)
345+ ; CHECK-NEXT: [[TMP1:%.*]] = call i8 @llvm.umin.i8(i8 [[X:%.*]], i8 5)
346+ ; CHECK-NEXT: [[R:%.*]] = xor i8 [[TMP1]], 7
351347; CHECK-NEXT: ret i8 [[R]]
352348;
353349 %p2 = shl i8 1 , %x
0 commit comments