Split the store of a wide value merged from an int-fp pair into multiple stores.
authorWei Mi <wmi@google.com>
Fri, 2 Sep 2016 17:17:04 +0000 (17:17 +0000)
committerWei Mi <wmi@google.com>
Fri, 2 Sep 2016 17:17:04 +0000 (17:17 +0000)
commitc54d1298f52c186cf91b92a7da8b40360478dee0
treea7b740df2b6a4d016918ccddcbc276ec71324a26
parent521f19f2498e867696b803eedfa4e87b53efea09
Split the store of a wide value merged from an int-fp pair into multiple stores.

For the store of a wide value merged from a pair of values, especially int-fp pair,
sometimes it is more efficent to split it into separate narrow stores, which can
remove the bitwise instructions or sink them to colder places.

Now the feature is only enabled on x86 target, and only store of int-fp pair is
splitted. It is possible that the application scope gets extended with perf evidence
support in the future.

Differential Revision: https://reviews.llvm.org/D22840

llvm-svn: 280505
llvm/include/llvm/Target/TargetLowering.h
llvm/lib/CodeGen/SelectionDAG/DAGCombiner.cpp
llvm/lib/Target/X86/X86ISelLowering.h
llvm/test/Transforms/InstCombine/split-store.ll [new file with mode: 0644]