]> granicus.if.org Git - llvm/commitdiff
[LegalizeTypes] Check for already split condition before calilng SplitVecRes_SETCC...
authorCraig Topper <craig.topper@intel.com>
Wed, 2 Oct 2019 22:34:49 +0000 (22:34 +0000)
committerCraig Topper <craig.topper@intel.com>
Wed, 2 Oct 2019 22:34:49 +0000 (22:34 +0000)
No point in manually splitting the SETCC if it was already done.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@373535 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SelectionDAG/LegalizeTypesGeneric.cpp

index eadc388fc9d5c439f517ce02fb441e10ab975190..560b5729e3def001c3c4810b4703fc1ea996dd8c 100644 (file)
@@ -514,15 +514,15 @@ void DAGTypeLegalizer::SplitRes_SELECT(SDNode *N, SDValue &Lo, SDValue &Hi) {
   if (Cond.getValueType().isVector()) {
     if (SDValue Res = WidenVSELECTAndMask(N))
       std::tie(CL, CH) = DAG.SplitVector(Res->getOperand(0), dl);
-    // It seems to improve code to generate two narrow SETCCs as opposed to
-    // splitting a wide result vector.
-    else if (Cond.getOpcode() == ISD::SETCC)
-      SplitVecRes_SETCC(Cond.getNode(), CL, CH);
     // Check if there are already splitted versions of the vector available and
     // use those instead of splitting the mask operand again.
     else if (getTypeAction(Cond.getValueType()) ==
              TargetLowering::TypeSplitVector)
       GetSplitVector(Cond, CL, CH);
+    // It seems to improve code to generate two narrow SETCCs as opposed to
+    // splitting a wide result vector.
+    else if (Cond.getOpcode() == ISD::SETCC)
+      SplitVecRes_SETCC(Cond.getNode(), CL, CH);
     else
       std::tie(CL, CH) = DAG.SplitVector(Cond, dl);
   }