[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
Thu Aug 25 18:16:13 PDT 2016


Ping, or could you recommend someone often working on dagcombiner to
take a look? From svn blame, many people have worked on it here and
there but people working on it the most are not quite active now.

Thanks,
Wei.

On Fri, Aug 12, 2016 at 9:25 AM, Wei Mi <wmi at google.com> wrote:
> 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