summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorSanjay Patel <spatel@rotateright.com>2018-11-28 22:51:04 +0000
committerSanjay Patel <spatel@rotateright.com>2018-11-28 22:51:04 +0000
commit2de209313e88467ec0103b1c69d37f80eef03107 (patch)
tree9995aea6e29b1e46755ed27295ddb99e641cbb4c /llvm/lib
parentb02baf0a7ee606ade1de639e8f534942bef663a7 (diff)
downloadbcm5719-llvm-2de209313e88467ec0103b1c69d37f80eef03107.tar.gz
bcm5719-llvm-2de209313e88467ec0103b1c69d37f80eef03107.zip
[x86] try select simplification for target-specific nodes
This failed to select (which might be a separate bug) in X86ISelDAGToDAG because we try to create a select node that can be simplified away after rL347227. This change avoids the problem by simplifying the SHRUNKBLEND node sooner. In the test case, we manage to realize that the true/false values of the select (SHRUNKBLEND) are the same thing, so it simplifies away completely. llvm-svn: 347818
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/X86/X86ISelLowering.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 8e487a08376..37748e1c400 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -33674,9 +33674,14 @@ static SDValue combineSelect(SDNode *N, SelectionDAG &DAG,
const X86Subtarget &Subtarget) {
SDLoc DL(N);
SDValue Cond = N->getOperand(0);
- // Get the LHS/RHS of the select.
SDValue LHS = N->getOperand(1);
SDValue RHS = N->getOperand(2);
+
+ // Try simplification again because we use this function to optimize
+ // SHRUNKBLEND nodes that are not handled by the generic combiner.
+ if (SDValue V = DAG.simplifySelect(Cond, LHS, RHS))
+ return V;
+
EVT VT = LHS.getValueType();
EVT CondVT = Cond.getValueType();
const TargetLowering &TLI = DAG.getTargetLoweringInfo();
OpenPOWER on IntegriCloud