OSDN Git Service

[X86] Enable 8-bit OR with disjoint bits to convert to LEA
authorCraig Topper <craig.topper@intel.com>
Tue, 5 Mar 2019 18:37:33 +0000 (18:37 +0000)
committerCraig Topper <craig.topper@intel.com>
Tue, 5 Mar 2019 18:37:33 +0000 (18:37 +0000)
commitb3da570deaab8e1e94f328962ba4fe32715bdaca
tree37f77a336d7367b14abfff53b3509345b1f1ec41
parentdabf82a18f818e9a313848b6118e8fb04d02b628
[X86] Enable 8-bit OR with disjoint bits to convert to LEA

We already support 8-bits adds in convertToThreeAddress. But we can also support 8-bit OR if the bits are disjoint. We already do this for 16/32/64.

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

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@355423 91177308-0d34-0410-b5e6-96231b3b80d8
16 files changed:
lib/Target/X86/X86InstrCompiler.td
lib/Target/X86/X86InstrFoldTables.cpp
lib/Target/X86/X86InstrInfo.cpp
lib/Target/X86/X86InstrInfo.h
lib/Target/X86/X86MCInstLower.cpp
lib/Target/X86/X86MacroFusion.cpp
test/CodeGen/X86/bitreverse.ll
test/CodeGen/X86/bool-math.ll
test/CodeGen/X86/fshl.ll
test/CodeGen/X86/select.ll
test/CodeGen/X86/select_const.ll
test/CodeGen/X86/unfold-masked-merge-scalar-constmask-innerouter.ll
test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbits.ll
test/CodeGen/X86/unfold-masked-merge-scalar-constmask-interleavedbytehalves.ll
test/CodeGen/X86/unfold-masked-merge-scalar-constmask-lowhigh.ll
test/CodeGen/X86/vector-bitreverse.ll