forked from OSchip/llvm-project
[DAGCombine] SimplifyNodeWithTwoResults - ensure same legalization for LO/HI operands (PR21207)
Consistently use (!LegalOperations || isOperationLegalOrCustom) for all node pairs. Differential Revision: https://reviews.llvm.org/D53478 llvm-svn: 347255
This commit is contained in:
parent
c6846a812b
commit
740122fb8c
|
@ -3565,18 +3565,16 @@ SDValue DAGCombiner::SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp,
|
|||
unsigned HiOp) {
|
||||
// If the high half is not needed, just compute the low half.
|
||||
bool HiExists = N->hasAnyUseOfValue(1);
|
||||
if (!HiExists &&
|
||||
(!LegalOperations ||
|
||||
TLI.isOperationLegalOrCustom(LoOp, N->getValueType(0)))) {
|
||||
if (!HiExists && (!LegalOperations ||
|
||||
TLI.isOperationLegalOrCustom(LoOp, N->getValueType(0)))) {
|
||||
SDValue Res = DAG.getNode(LoOp, SDLoc(N), N->getValueType(0), N->ops());
|
||||
return CombineTo(N, Res, Res);
|
||||
}
|
||||
|
||||
// If the low half is not needed, just compute the high half.
|
||||
bool LoExists = N->hasAnyUseOfValue(0);
|
||||
if (!LoExists &&
|
||||
(!LegalOperations ||
|
||||
TLI.isOperationLegal(HiOp, N->getValueType(1)))) {
|
||||
if (!LoExists && (!LegalOperations ||
|
||||
TLI.isOperationLegalOrCustom(HiOp, N->getValueType(1)))) {
|
||||
SDValue Res = DAG.getNode(HiOp, SDLoc(N), N->getValueType(1), N->ops());
|
||||
return CombineTo(N, Res, Res);
|
||||
}
|
||||
|
@ -3592,7 +3590,7 @@ SDValue DAGCombiner::SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp,
|
|||
SDValue LoOpt = combine(Lo.getNode());
|
||||
if (LoOpt.getNode() && LoOpt.getNode() != Lo.getNode() &&
|
||||
(!LegalOperations ||
|
||||
TLI.isOperationLegal(LoOpt.getOpcode(), LoOpt.getValueType())))
|
||||
TLI.isOperationLegalOrCustom(LoOpt.getOpcode(), LoOpt.getValueType())))
|
||||
return CombineTo(N, LoOpt, LoOpt);
|
||||
}
|
||||
|
||||
|
@ -3602,7 +3600,7 @@ SDValue DAGCombiner::SimplifyNodeWithTwoResults(SDNode *N, unsigned LoOp,
|
|||
SDValue HiOpt = combine(Hi.getNode());
|
||||
if (HiOpt.getNode() && HiOpt != Hi &&
|
||||
(!LegalOperations ||
|
||||
TLI.isOperationLegal(HiOpt.getOpcode(), HiOpt.getValueType())))
|
||||
TLI.isOperationLegalOrCustom(HiOpt.getOpcode(), HiOpt.getValueType())))
|
||||
return CombineTo(N, HiOpt, HiOpt);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue