[PATCH] D53743: [LegalizeTypes] Stop DAGTypeLegalizer::getSETCCWidenedResultTy from creating illegal setccs. Add checks for valid setccs
Phabricator via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Fri Oct 26 14:03:57 PDT 2018
This revision was automatically updated to reflect the committed changes.
Closed by commit rL345428: [LegalizeTypes] Stop DAGTypeLegalizer::getSETCCWidenedResultTy from creating… (authored by ctopper, committed by ).
Changed prior to commit:
https://reviews.llvm.org/D53743?vs=171246&id=171348#toc
Repository:
rL LLVM
https://reviews.llvm.org/D53743
Files:
llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
Index: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
===================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeTypes.h
@@ -849,9 +849,6 @@
/// MaskVT to ToMaskVT if needed with vector extension or truncation.
SDValue convertMask(SDValue InMask, EVT MaskVT, EVT ToMaskVT);
- /// Get the target mask VT, and widen if needed.
- EVT getSETCCWidenedResultTy(SDValue SetCC);
-
//===--------------------------------------------------------------------===//
// Generic Splitting: LegalizeTypesGeneric.cpp
//===--------------------------------------------------------------------===//
Index: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
+++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeVectorTypes.cpp
@@ -3373,16 +3373,6 @@
return Mask;
}
-// Get the target mask VT, and widen if needed.
-EVT DAGTypeLegalizer::getSETCCWidenedResultTy(SDValue SetCC) {
- assert(SetCC->getOpcode() == ISD::SETCC);
- LLVMContext &Ctx = *DAG.getContext();
- EVT MaskVT = getSetCCResultType(SetCC->getOperand(0).getValueType());
- if (getTypeAction(MaskVT) == TargetLowering::TypeWidenVector)
- MaskVT = TLI.getTypeToTransformTo(Ctx, MaskVT);
- return MaskVT;
-}
-
// This method tries to handle VSELECT and its mask by legalizing operands
// (which may require widening) and if needed adjusting the mask vector type
// to match that of the VSELECT. Without it, many cases end up with
@@ -3450,16 +3440,16 @@
SDValue Mask;
if (Cond->getOpcode() == ISD::SETCC) {
- EVT MaskVT = getSETCCWidenedResultTy(Cond);
+ EVT MaskVT = getSetCCResultType(Cond.getOperand(0).getValueType());
Mask = convertMask(Cond, MaskVT, ToMaskVT);
} else if (isLogicalMaskOp(Cond->getOpcode()) &&
Cond->getOperand(0).getOpcode() == ISD::SETCC &&
Cond->getOperand(1).getOpcode() == ISD::SETCC) {
// Cond is (AND/OR/XOR (SETCC, SETCC))
SDValue SETCC0 = Cond->getOperand(0);
SDValue SETCC1 = Cond->getOperand(1);
- EVT VT0 = getSETCCWidenedResultTy(SETCC0);
- EVT VT1 = getSETCCWidenedResultTy(SETCC1);
+ EVT VT0 = getSetCCResultType(SETCC0.getOperand(0).getValueType());
+ EVT VT1 = getSetCCResultType(SETCC1.getOperand(0).getValueType());
unsigned ScalarBits0 = VT0.getScalarSizeInBits();
unsigned ScalarBits1 = VT1.getScalarSizeInBits();
unsigned ScalarBits_ToMask = ToMaskVT.getScalarSizeInBits();
Index: llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
===================================================================
--- llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
+++ llvm/trunk/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
@@ -5027,6 +5027,14 @@
break;
}
case ISD::SETCC: {
+ assert(VT.isInteger() && "SETCC result type must be an integer!");
+ assert(N1.getValueType() == N2.getValueType() &&
+ "SETCC operands must have the same type!");
+ assert(VT.isVector() == N1.getValueType().isVector() &&
+ "SETCC type should be vector iff the operand type is vector!");
+ assert((!VT.isVector() ||
+ VT.getVectorNumElements() == N1.getValueType().getVectorNumElements()) &&
+ "SETCC vector element counts must match!");
// Use FoldSetCC to simplify SETCC's.
if (SDValue V = FoldSetCC(VT, N1, N2, cast<CondCodeSDNode>(N3)->get(), DL))
return V;
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D53743.171348.patch
Type: text/x-patch
Size: 3576 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20181026/3992f61f/attachment.bin>
More information about the llvm-commits
mailing list