mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-06 06:33:24 +00:00
Add support for promoting stores from one legal type to another, allowing us
to write one pattern for vector stores instead of 4. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@27730 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
b17f1679e3
commit
2efce0a589
@ -1544,6 +1544,13 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
|
||||
Tmp1 = TLI.LowerOperation(Result, DAG);
|
||||
if (Tmp1.Val) Result = Tmp1;
|
||||
break;
|
||||
case TargetLowering::Promote:
|
||||
assert(MVT::isVector(VT) && "Unknown legal promote case!");
|
||||
Tmp3 = DAG.getNode(ISD::BIT_CONVERT,
|
||||
TLI.getTypeToPromoteTo(ISD::STORE, VT), Tmp3);
|
||||
Result = DAG.UpdateNodeOperands(Result, Tmp1, Tmp3, Tmp2,
|
||||
Node->getOperand(3));
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@ -1576,6 +1583,7 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) {
|
||||
Tmp3 = PackVectorOp(Node->getOperand(1), TVT);
|
||||
Result = DAG.UpdateNodeOperands(Result, Tmp1, Tmp3, Tmp2,
|
||||
Node->getOperand(3));
|
||||
Result = LegalizeOp(Result);
|
||||
break;
|
||||
} else if (NumElems == 1) {
|
||||
// Turn this into a normal store of the scalar type.
|
||||
|
Loading…
x
Reference in New Issue
Block a user