Changes in directory llvm/lib/Target:
TargetSelectionDAG.td updated: 1.73 -> 1.74 --- Log message: Change load PatFrag to ignore indexed load. --- Diffs of the changes: (+62 -31) TargetSelectionDAG.td | 93 +++++++++++++++++++++++++++++++++----------------- 1 files changed, 62 insertions(+), 31 deletions(-) Index: llvm/lib/Target/TargetSelectionDAG.td diff -u llvm/lib/Target/TargetSelectionDAG.td:1.73 llvm/lib/Target/TargetSelectionDAG.td:1.74 --- llvm/lib/Target/TargetSelectionDAG.td:1.73 Fri Oct 13 16:14:26 2006 +++ llvm/lib/Target/TargetSelectionDAG.td Thu Oct 26 16:55:50 2006 @@ -399,79 +399,110 @@ def vnot_conv : PatFrag<(ops node:$in), (xor node:$in, immAllOnesV_bc)>; def ineg : PatFrag<(ops node:$in), (sub 0, node:$in)>; +// load fragments. def load : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - return ISD::isNON_EXTLoad(N); + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::NON_EXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED; + return false; }]>; // extending load fragments. def extloadi1 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i1; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::EXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i1; return false; }]>; def extloadi8 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i8; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::EXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i8; return false; }]>; def extloadi16 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i16; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::EXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i16; return false; }]>; def extloadi32 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i32; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::EXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i32; return false; }]>; def extloadf32 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::f32; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::EXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::f32; return false; }]>; -def sextloadi1 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isSEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i1; +def sextloadi1 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::SEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i1; return false; }]>; -def sextloadi8 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isSEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i8; +def sextloadi8 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::SEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i8; return false; }]>; def sextloadi16 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isSEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i16; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::SEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i16; return false; }]>; def sextloadi32 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isSEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i32; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::SEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i32; return false; }]>; -def zextloadi1 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isZEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i1; +def zextloadi1 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::ZEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i1; return false; }]>; -def zextloadi8 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isZEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i8; +def zextloadi8 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::ZEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i8; return false; }]>; def zextloadi16 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isZEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i16; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::ZEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i16; return false; }]>; def zextloadi32 : PatFrag<(ops node:$ptr), (ld node:$ptr), [{ - if (ISD::isZEXTLoad(N)) - return cast<LoadSDNode>(N)->getLoadedVT() == MVT::i32; + if (LoadSDNode *LD = dyn_cast<LoadSDNode>(N)) + return LD->getExtensionType() == ISD::ZEXTLOAD && + LD->getAddressingMode() == ISD::UNINDEXED && + LD->getLoadedVT() == MVT::i32; return false; }]>; +// store fragments. def store : PatFrag<(ops node:$val, node:$ptr), (st node:$val, node:$ptr), [{ return ISD::isNON_TRUNCStore(N); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits