mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 06:32:24 +00:00
Legalize i64 store operations generated by inst-combine.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@78082 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
42a83f2d15
commit
ada097a853
@ -253,6 +253,7 @@ PIC16TargetLowering::PIC16TargetLowering(PIC16TargetMachine &TM)
|
||||
setOperationAction(ISD::STORE, MVT::i8, Legal);
|
||||
setOperationAction(ISD::STORE, MVT::i16, Custom);
|
||||
setOperationAction(ISD::STORE, MVT::i32, Custom);
|
||||
setOperationAction(ISD::STORE, MVT::i64, Custom);
|
||||
|
||||
setOperationAction(ISD::ADDE, MVT::i8, Custom);
|
||||
setOperationAction(ISD::ADDC, MVT::i8, Custom);
|
||||
@ -593,8 +594,25 @@ SDValue PIC16TargetLowering::ExpandStore(SDNode *N, SelectionDAG &DAG) {
|
||||
getChain(Store3), getChain(Store4));
|
||||
return DAG.getNode(ISD::TokenFactor, dl, MVT::Other, RetLo, RetHi);
|
||||
|
||||
}
|
||||
else {
|
||||
} else if (ValueType == MVT::i64) {
|
||||
SDValue SrcLo, SrcHi;
|
||||
GetExpandedParts(Src, DAG, SrcLo, SrcHi);
|
||||
SDValue ChainLo = Chain, ChainHi = Chain;
|
||||
if (Chain.getOpcode() == ISD::TokenFactor) {
|
||||
ChainLo = Chain.getOperand(0);
|
||||
ChainHi = Chain.getOperand(1);
|
||||
}
|
||||
SDValue Store1 = DAG.getStore(ChainLo, dl, SrcLo, Ptr, NULL,
|
||||
0 + StoreOffset);
|
||||
|
||||
Ptr = DAG.getNode(ISD::ADD, dl, Ptr.getValueType(), Ptr,
|
||||
DAG.getConstant(4, Ptr.getValueType()));
|
||||
SDValue Store2 = DAG.getStore(ChainHi, dl, SrcHi, Ptr, NULL,
|
||||
1 + StoreOffset);
|
||||
|
||||
return DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Store1,
|
||||
Store2);
|
||||
} else {
|
||||
assert (0 && "value type not supported");
|
||||
return SDValue();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user