mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-08 21:32:39 +00:00
Change TargetLowering::getTruncStoreAction to take MVTs, instead of EVTs.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@169841 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ffa03b7981
commit
3166283ac1
@ -459,19 +459,18 @@ public:
|
|||||||
/// treated: either it is legal, needs to be promoted to a larger size, needs
|
/// treated: either it is legal, needs to be promoted to a larger size, needs
|
||||||
/// to be expanded to some other code sequence, or the target has a custom
|
/// to be expanded to some other code sequence, or the target has a custom
|
||||||
/// expander for it.
|
/// expander for it.
|
||||||
LegalizeAction getTruncStoreAction(EVT ValVT, EVT MemVT) const {
|
LegalizeAction getTruncStoreAction(MVT ValVT, MVT MemVT) const {
|
||||||
assert(ValVT.getSimpleVT() < MVT::LAST_VALUETYPE &&
|
assert(ValVT < MVT::LAST_VALUETYPE && MemVT < MVT::LAST_VALUETYPE &&
|
||||||
MemVT.getSimpleVT() < MVT::LAST_VALUETYPE &&
|
|
||||||
"Table isn't big enough!");
|
"Table isn't big enough!");
|
||||||
return (LegalizeAction)TruncStoreActions[ValVT.getSimpleVT().SimpleTy]
|
return (LegalizeAction)TruncStoreActions[ValVT.SimpleTy]
|
||||||
[MemVT.getSimpleVT().SimpleTy];
|
[MemVT.SimpleTy];
|
||||||
}
|
}
|
||||||
|
|
||||||
/// isTruncStoreLegal - Return true if the specified store with truncation is
|
/// isTruncStoreLegal - Return true if the specified store with truncation is
|
||||||
/// legal on this target.
|
/// legal on this target.
|
||||||
bool isTruncStoreLegal(EVT ValVT, EVT MemVT) const {
|
bool isTruncStoreLegal(EVT ValVT, EVT MemVT) const {
|
||||||
return isTypeLegal(ValVT) && MemVT.isSimple() &&
|
return isTypeLegal(ValVT) && MemVT.isSimple() &&
|
||||||
getTruncStoreAction(ValVT, MemVT) == Legal;
|
getTruncStoreAction(ValVT.getSimpleVT(), MemVT.getSimpleVT()) == Legal;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// getIndexedLoadAction - Return how the indexed load should be treated:
|
/// getIndexedLoadAction - Return how the indexed load should be treated:
|
||||||
|
@ -818,7 +818,8 @@ void SelectionDAGLegalize::LegalizeStoreOps(SDNode *Node) {
|
|||||||
SDValue Result = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo, Hi);
|
SDValue Result = DAG.getNode(ISD::TokenFactor, dl, MVT::Other, Lo, Hi);
|
||||||
ReplaceNode(SDValue(Node, 0), Result);
|
ReplaceNode(SDValue(Node, 0), Result);
|
||||||
} else {
|
} else {
|
||||||
switch (TLI.getTruncStoreAction(ST->getValue().getValueType(), StVT)) {
|
switch (TLI.getTruncStoreAction(ST->getValue().getSimpleValueType(),
|
||||||
|
StVT.getSimpleVT())) {
|
||||||
default: llvm_unreachable("This action is not supported yet!");
|
default: llvm_unreachable("This action is not supported yet!");
|
||||||
case TargetLowering::Legal:
|
case TargetLowering::Legal:
|
||||||
// If this is an unaligned store and the target doesn't support it,
|
// If this is an unaligned store and the target doesn't support it,
|
||||||
|
@ -142,9 +142,9 @@ SDValue VectorLegalizer::LegalizeOp(SDValue Op) {
|
|||||||
} else if (Op.getOpcode() == ISD::STORE) {
|
} else if (Op.getOpcode() == ISD::STORE) {
|
||||||
StoreSDNode *ST = cast<StoreSDNode>(Op.getNode());
|
StoreSDNode *ST = cast<StoreSDNode>(Op.getNode());
|
||||||
EVT StVT = ST->getMemoryVT();
|
EVT StVT = ST->getMemoryVT();
|
||||||
EVT ValVT = ST->getValue().getValueType();
|
MVT ValVT = ST->getValue().getSimpleValueType();
|
||||||
if (StVT.isVector() && ST->isTruncatingStore())
|
if (StVT.isVector() && ST->isTruncatingStore())
|
||||||
switch (TLI.getTruncStoreAction(ValVT, StVT)) {
|
switch (TLI.getTruncStoreAction(ValVT, StVT.getSimpleVT())) {
|
||||||
default: llvm_unreachable("This action is not supported yet!");
|
default: llvm_unreachable("This action is not supported yet!");
|
||||||
case TargetLowering::Legal:
|
case TargetLowering::Legal:
|
||||||
return TranslateLegalizeResults(Op, Result);
|
return TranslateLegalizeResults(Op, Result);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user