forked from OSchip/llvm-project
Change TargetLowering::getCondCodeAction to take an MVT, instead of
EVT. llvm-svn: 170522
This commit is contained in:
parent
d5c46cb2f7
commit
deee9003ed
|
@ -509,16 +509,15 @@ public:
|
|||
/// either it is legal, needs to be expanded to some other code sequence,
|
||||
/// or the target has a custom expander for it.
|
||||
LegalizeAction
|
||||
getCondCodeAction(ISD::CondCode CC, EVT VT) const {
|
||||
getCondCodeAction(ISD::CondCode CC, MVT VT) const {
|
||||
assert((unsigned)CC < array_lengthof(CondCodeActions) &&
|
||||
(unsigned)VT.getSimpleVT().SimpleTy < sizeof(CondCodeActions[0])*4 &&
|
||||
(unsigned)VT.SimpleTy < sizeof(CondCodeActions[0])*4 &&
|
||||
"Table isn't big enough!");
|
||||
/// The lower 5 bits of the SimpleTy index into Nth 2bit set from the 64bit
|
||||
/// value and the upper 27 bits index into the second dimension of the
|
||||
/// array to select what 64bit value to use.
|
||||
LegalizeAction Action = (LegalizeAction)
|
||||
((CondCodeActions[CC][VT.getSimpleVT().SimpleTy >> 5]
|
||||
>> (2*(VT.getSimpleVT().SimpleTy & 0x1F))) & 3);
|
||||
((CondCodeActions[CC][VT.SimpleTy >> 5] >> (2*(VT.SimpleTy & 0x1F))) & 3);
|
||||
assert(Action != Promote && "Can't promote condition code!");
|
||||
return Action;
|
||||
}
|
||||
|
@ -526,8 +525,9 @@ public:
|
|||
/// isCondCodeLegal - Return true if the specified condition code is legal
|
||||
/// on this target.
|
||||
bool isCondCodeLegal(ISD::CondCode CC, EVT VT) const {
|
||||
return getCondCodeAction(CC, VT) == Legal ||
|
||||
getCondCodeAction(CC, VT) == Custom;
|
||||
return
|
||||
getCondCodeAction(CC, VT.getSimpleVT()) == Legal ||
|
||||
getCondCodeAction(CC, VT.getSimpleVT()) == Custom;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1185,7 +1185,7 @@ void SelectionDAGLegalize::LegalizeOp(SDNode *Node) {
|
|||
unsigned CCOperand = Node->getOpcode() == ISD::SELECT_CC ? 4 :
|
||||
Node->getOpcode() == ISD::SETCC ? 2 : 1;
|
||||
unsigned CompareOperand = Node->getOpcode() == ISD::BR_CC ? 2 : 0;
|
||||
EVT OpVT = Node->getOperand(CompareOperand).getValueType();
|
||||
MVT OpVT = Node->getOperand(CompareOperand).getSimpleValueType();
|
||||
ISD::CondCode CCCode =
|
||||
cast<CondCodeSDNode>(Node->getOperand(CCOperand))->get();
|
||||
Action = TLI.getCondCodeAction(CCCode, OpVT);
|
||||
|
@ -1592,7 +1592,7 @@ void SelectionDAGLegalize::LegalizeSetCCCondCode(EVT VT,
|
|||
SDValue &LHS, SDValue &RHS,
|
||||
SDValue &CC,
|
||||
DebugLoc dl) {
|
||||
EVT OpVT = LHS.getValueType();
|
||||
MVT OpVT = LHS.getSimpleValueType();
|
||||
ISD::CondCode CCCode = cast<CondCodeSDNode>(CC)->get();
|
||||
switch (TLI.getCondCodeAction(CCCode, OpVT)) {
|
||||
default: llvm_unreachable("Unknown condition code action!");
|
||||
|
|
|
@ -2113,7 +2113,7 @@ TargetLowering::SimplifySetCC(EVT VT, SDValue N0, SDValue N1,
|
|||
EVT newVT = N0.getOperand(0).getValueType();
|
||||
if (DCI.isBeforeLegalizeOps() ||
|
||||
(isOperationLegal(ISD::SETCC, newVT) &&
|
||||
getCondCodeAction(Cond, newVT)==Legal))
|
||||
getCondCodeAction(Cond, newVT.getSimpleVT())==Legal))
|
||||
return DAG.getSetCC(dl, VT, N0.getOperand(0),
|
||||
DAG.getConstant(C1.trunc(InSize), newVT),
|
||||
Cond);
|
||||
|
@ -2477,7 +2477,7 @@ TargetLowering::SimplifySetCC(EVT VT, SDValue N0, SDValue N1,
|
|||
// if it is not already.
|
||||
ISD::CondCode NewCond = UOF == 0 ? ISD::SETO : ISD::SETUO;
|
||||
if (NewCond != Cond && (DCI.isBeforeLegalizeOps() ||
|
||||
getCondCodeAction(NewCond, N0.getValueType()) == Legal))
|
||||
getCondCodeAction(NewCond, N0.getSimpleValueType()) == Legal))
|
||||
return DAG.getSetCC(dl, VT, N0, N1, NewCond);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue