[X86] When selecting (x << C1) op C2 as (x op (C2>>C1)) << C1, use the operation...
authorCraig Topper <craig.topper@intel.com>
Mon, 25 Mar 2019 06:53:45 +0000 (06:53 +0000)
committerCraig Topper <craig.topper@intel.com>
Mon, 25 Mar 2019 06:53:45 +0000 (06:53 +0000)
commit1cc01c3228485e4ed6be2b6d10b1061f6a58ae36
tree6d37e72c1297adb9d5208ae08201c6fe39c4f4e1
parent3810e35d3fa7b9b9d18d7171d3dc9fcc5c151ac9
[X86] When selecting (x << C1) op C2 as (x op (C2>>C1)) << C1, use the operation VT for the target constant.

Normally when the nodes we use here(AND32ri8 for example) are selected their
immediates are just converted from ConstantSDNode to TargetConstantSDNode
without changing VT from the original operation VT. So we should still be
emitting them with the operation VT.

Theoretically this could expose more accurate opportunities for CSE.

llvm-svn: 356869
llvm/lib/Target/X86/X86ISelDAGToDAG.cpp