[PATCH] D22840: Split the store of an int value merged from a pair of smaller values into multiple stores.

Wei Mi via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 12 09:25:26 PDT 2016


Ping.

On Fri, Aug 5, 2016 at 11:58 AM, Wei Mi <wmi at google.com> wrote:
> wmi updated this revision to Diff 66976.
> wmi added a comment.
>
> Some more changes:
>
> 1. add x86_64-unknown-linux-gnu triple for test.
> 2. I found it was too limited for the optimization to say the value of store can only had one use so I removed it. It is possible that it has more than one use but the other uses are in cold blocks. After store splitting and machineSinking, those bitwise instructions will be moved to colder places.  However, existing ISel cannot look beyond BB boundary so it is impossible to check other uses. Can we blindly do this (splitting an int64 store to two on x86 may not be very bad for performance)? I really hope we have globalISel here, or is there existing better solution for it? I have done some internal testing for it. With the extension of more than one uses of store value, I see 3% improvement for one internal benchmark (with https://reviews.llvm.org/D23210) and no regressions.
>
>
> Repository:
>   rL LLVM
>
> https://reviews.llvm.org/D22840
>
> Files:
>   include/llvm/Target/TargetLowering.h
>   lib/CodeGen/SelectionDAG/DAGCombiner.cpp
>   lib/Target/X86/X86ISelLowering.h
>   test/Transforms/InstCombine/split-store.ll
>


More information about the llvm-commits mailing list