@@ -302,9 +302,7 @@ define i16 @cttz_assume(i16 %x) {
302
302
declare void @use.i8 (i8 )
303
303
define i8 @fold_ctz_log2 (i8 %x ) {
304
304
; 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)
308
306
; CHECK-NEXT: ret i8 [[R]]
309
307
;
310
308
%p2 = shl i8 1 , %x
@@ -330,11 +328,10 @@ define i8 @fold_ctz_log2_maybe_z(i8 %x, i8 %y, i1 %c) {
330
328
331
329
define i8 @fold_ctz_log2_maybe_z_okay (i8 %x , i8 %y , i1 %c ) {
332
330
; 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
335
333
; 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]]
338
335
;
339
336
%p2 = shl i8 2 , %x
340
337
%p2_2 = shl i8 4 , %y
@@ -345,9 +342,8 @@ define i8 @fold_ctz_log2_maybe_z_okay(i8 %x, i8 %y, i1 %c) {
345
342
346
343
define i8 @fold_clz_log2 (i8 %x ) {
347
344
; 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
351
347
; CHECK-NEXT: ret i8 [[R]]
352
348
;
353
349
%p2 = shl i8 1 , %x
0 commit comments