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:
Patrik Hagglund 2012-12-11 09:42:24 +00:00
parent ffa03b7981
commit 3166283ac1
3 changed files with 9 additions and 9 deletions

View File

@ -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:

View File

@ -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,

View File

@ -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);