[X86] Don't avoid folding multiple use sign extended 8-bit immediate into instruction...
authorCraig Topper <craig.topper@intel.com>
Thu, 21 Mar 2019 17:38:58 +0000 (17:38 +0000)
committerCraig Topper <craig.topper@intel.com>
Thu, 21 Mar 2019 17:38:58 +0000 (17:38 +0000)
commitc14f3e42220efc798f33052b67835b96ba01d045
tree7548a49223c87168fdcf50394872f8c88eb12dde
parent9f0b17a248c536b430c200e86f6017abf0e67ed3
[X86] Don't avoid folding multiple use sign extended 8-bit immediate into instructions under optsize.

Under optsize we try to avoid folding immediates into instructions under optsize. But if the immediate is 16-bits or 32 bits, but can be encoded as an 8-bit immediate we don't save enough from disabling the folding unless the immediate has enough uses to make up for the size of the move which is either 3 bytes or 5 bytes since there are no sign extended 8-bit moves. We would also save something if the immediate was a live out of the basic block and thus a move was unavoidable, but that would require a more advanced heuristic than just counting uses.

Note we only avoid folding multiple use immediates into the patterns that use X86ISD::ADD/SUB/XOR/OR/AND/CMP/ADC/SBB nodes and not the more common ISD::ADD/SUB/XOR/OR/AND nodes.

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

llvm-svn: 356688
llvm/lib/Target/X86/X86InstrArithmetic.td
llvm/lib/Target/X86/X86InstrCompiler.td
llvm/lib/Target/X86/X86InstrInfo.td
llvm/test/CodeGen/X86/immediate_merging.ll
llvm/test/CodeGen/X86/immediate_merging64.ll