[llvm] [InstCombine] Fold `(X & Mask) == 0 ? TC : FC -> TC binop (X & Mask)` (PR #100437)
Yingwei Zheng via llvm-commits
llvm-commits at lists.llvm.org
Thu Jul 25 07:00:10 PDT 2024
dtcxzyw wrote:
> Variant with shift has a code size regression in lencod:
>
> ```
> CMakeFiles/lencod.dir/weighted_prediction.c.o 17KiB 18KiB (+5.50%)
> ```
```
Files ./artifacts/binaries/a5773f25cc5e6535f712dce9eb2c2205_bc/seg54.ll and ./artifacts/binaries/5f896abe9e087207adecb86d4abb8b82_bc/seg54.ll differ
in function estimate_weighting_factor_P_slice:
in block %21 / %22:
> %23 = phi i64 [ %21, %17 ], [ 2, %8 ], [ 2, %1 ]
< %22 = phi i64 [ %20, %17 ], [ 2, %8 ], [ 2, %1 ]
in block %17 / %17:
> %19 = shl nuw nsw i32 2, %18
> %20 = add nuw nsw i32 %19, 2
> %21 = zext nneg i32 %20 to i64
< %19 = icmp eq i32 %18, 0
< %20 = select i1 %19, i64 4, i64 6
in function estimate_weighting_factor_B_slice:
in block %21 / %22:
> %23 = phi i64 [ %21, %17 ], [ 2, %8 ], [ 2, %0 ]
< %22 = phi i64 [ %20, %17 ], [ 2, %8 ], [ 2, %0 ]
in block %17 / %17:
> %19 = shl nuw nsw i32 2, %18
> %20 = add nuw nsw i32 %19, 2
> %21 = zext nneg i32 %20 to i64
< %19 = icmp eq i32 %18, 0
< %20 = select i1 %19, i64 4, i64 6
in function test_wp_P_slice:
in block %21 / %22:
> %23 = phi i64 [ %21, %17 ], [ 2, %8 ], [ 2, %1 ]
< %22 = phi i64 [ %20, %17 ], [ 2, %8 ], [ 2, %1 ]
in block %17 / %17:
> %19 = shl nuw nsw i32 2, %18
> %20 = add nuw nsw i32 %19, 2
> %21 = zext nneg i32 %20 to i64
< %19 = icmp eq i32 %18, 0
< %20 = select i1 %19, i64 4, i64 6
in function test_wp_B_slice:
in block %23 / %24:
> %25 = phi i64 [ %23, %19 ], [ 2, %10 ], [ 2, %1 ]
< %24 = phi i64 [ %22, %19 ], [ 2, %10 ], [ 2, %1 ]
in block %19 / %19:
> %21 = shl nuw nsw i32 2, %20
> %22 = add nuw nsw i32 %21, 2
> %23 = zext nneg i32 %22 to i64
< %21 = icmp eq i32 %20, 0
< %22 = select i1 %21, i64 4, i64 6
```
https://github.com/llvm/llvm-project/pull/100437
More information about the llvm-commits
mailing list