diff options
| author | Craig Topper <craig.topper@intel.com> | 2017-09-19 17:19:45 +0000 |
|---|---|---|
| committer | Craig Topper <craig.topper@intel.com> | 2017-09-19 17:19:45 +0000 |
| commit | 75370b9b49399a5487c94421e48a9f8720d844f3 (patch) | |
| tree | aada6920aadc3e37a1016e5be4362897a4120f62 /llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | |
| parent | 50105d294241f2cd45b38c4304dda4f7df11abee (diff) | |
| download | bcm5719-llvm-75370b9b49399a5487c94421e48a9f8720d844f3.tar.gz bcm5719-llvm-75370b9b49399a5487c94421e48a9f8720d844f3.zip | |
[X86] Convert X86ISD::SELECT to ISD::VSELECT just before instruction selection to avoid duplicate patterns
Similar to what we do for X86ISD::SHRUNKBLEND just turn X86ISD::SELECT into ISD::VSELECT. This allows us to remove the duplicated TRUNC patterns.
Differential Revision: https://reviews.llvm.org/D38022
llvm-svn: 313644
Diffstat (limited to 'llvm/lib/Target/X86/X86ISelDAGToDAG.cpp')
| -rw-r--r-- | llvm/lib/Target/X86/X86ISelDAGToDAG.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp index aa09be2b24e..bec812bedfa 100644 --- a/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp +++ b/llvm/lib/Target/X86/X86ISelDAGToDAG.cpp @@ -2414,8 +2414,9 @@ void X86DAGToDAGISel::Select(SDNode *Node) { ReplaceNode(Node, getGlobalBaseReg()); return; + case X86ISD::SELECT: case X86ISD::SHRUNKBLEND: { - // SHRUNKBLEND selects like a regular VSELECT. + // SHRUNKBLEND selects like a regular VSELECT. Same with X86ISD::SELECT. SDValue VSelect = CurDAG->getNode( ISD::VSELECT, SDLoc(Node), Node->getValueType(0), Node->getOperand(0), Node->getOperand(1), Node->getOperand(2)); |

