mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-15 20:29:48 +00:00
implement promotion of select and select_cc, allowing MallocBench/gs to
work with type promotion on x86. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43025 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
c4c9660129
commit
59e84258cb
@ -130,6 +130,8 @@ private:
|
||||
SDOperand PromoteResult_SETCC(SDNode *N);
|
||||
SDOperand PromoteResult_LOAD(LoadSDNode *N);
|
||||
SDOperand PromoteResult_SimpleIntBinOp(SDNode *N);
|
||||
SDOperand PromoteResult_SELECT (SDNode *N);
|
||||
SDOperand PromoteResult_SELECT_CC(SDNode *N);
|
||||
|
||||
// Result Expansion.
|
||||
void ExpandResult(SDNode *N, unsigned ResNo);
|
||||
@ -450,6 +452,10 @@ void DAGTypeLegalizer::PromoteResult(SDNode *N, unsigned ResNo) {
|
||||
case ISD::ADD:
|
||||
case ISD::SUB:
|
||||
case ISD::MUL: Result = PromoteResult_SimpleIntBinOp(N); break;
|
||||
|
||||
case ISD::SELECT: Result = PromoteResult_SELECT(N); break;
|
||||
case ISD::SELECT_CC: Result = PromoteResult_SELECT_CC(N); break;
|
||||
|
||||
}
|
||||
|
||||
// If Result is null, the sub-method took care of registering the result.
|
||||
@ -552,6 +558,19 @@ SDOperand DAGTypeLegalizer::PromoteResult_SimpleIntBinOp(SDNode *N) {
|
||||
return DAG.getNode(N->getOpcode(), LHS.getValueType(), LHS, RHS);
|
||||
}
|
||||
|
||||
SDOperand DAGTypeLegalizer::PromoteResult_SELECT(SDNode *N) {
|
||||
SDOperand LHS = GetPromotedOp(N->getOperand(1));
|
||||
SDOperand RHS = GetPromotedOp(N->getOperand(2));
|
||||
return DAG.getNode(ISD::SELECT, LHS.getValueType(), N->getOperand(0),LHS,RHS);
|
||||
}
|
||||
|
||||
SDOperand DAGTypeLegalizer::PromoteResult_SELECT_CC(SDNode *N) {
|
||||
SDOperand LHS = GetPromotedOp(N->getOperand(2));
|
||||
SDOperand RHS = GetPromotedOp(N->getOperand(3));
|
||||
return DAG.getNode(ISD::SELECT_CC, LHS.getValueType(), N->getOperand(0),
|
||||
N->getOperand(1), LHS, RHS, N->getOperand(4));
|
||||
}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// Result Expansion
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
Loading…
Reference in New Issue
Block a user