Changes in directory llvm/lib/Target/PowerPC:
PPCISelLowering.cpp updated: 1.210 -> 1.211 PPCInstr64Bit.td updated: 1.20 -> 1.21 PPCInstrInfo.td updated: 1.243 -> 1.244 --- Log message: Reflects ISD::LOAD / ISD::LOADX / LoadSDNode changes. --- Diffs of the changes: (+49 -50) PPCISelLowering.cpp | 27 +++++++++++++-------------- PPCInstr64Bit.td | 40 ++++++++++++++++++++-------------------- PPCInstrInfo.td | 32 ++++++++++++++++---------------- 3 files changed, 49 insertions(+), 50 deletions(-) Index: llvm/lib/Target/PowerPC/PPCISelLowering.cpp diff -u llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.210 llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.211 --- llvm/lib/Target/PowerPC/PPCISelLowering.cpp:1.210 Thu Oct 5 18:00:19 2006 +++ llvm/lib/Target/PowerPC/PPCISelLowering.cpp Mon Oct 9 15:57:25 2006 @@ -311,7 +311,7 @@ static bool isFloatingPointZero(SDOperand Op) { if (ConstantFPSDNode *CFP = dyn_cast<ConstantFPSDNode>(Op)) return CFP->isExactlyValue(-0.0) || CFP->isExactlyValue(0.0); - else if (ISD::isEXTLoad(Op.Val) || Op.getOpcode() == ISD::LOAD) { + else if (ISD::isEXTLoad(Op.Val) || ISD::isNON_EXTLoad(Op.Val)) { // Maybe this has already been legalized into the constant pool? if (ConstantPoolSDNode *CP = dyn_cast<ConstantPoolSDNode>(Op.getOperand(1))) if (ConstantFP *CFP = dyn_cast<ConstantFP>(CP->getConstVal())) @@ -694,7 +694,7 @@ // If the global is weak or external, we have to go through the lazy // resolution stub. - return DAG.getLoad(PtrVT, DAG.getEntryNode(), Lo, DAG.getSrcValue(0)); + return DAG.getLoad(PtrVT, DAG.getEntryNode(), Lo, NULL, 0); } static SDOperand LowerSETCC(SDOperand Op, SelectionDAG &DAG) { @@ -873,8 +873,7 @@ if (!Op.Val->hasNUsesOfValue(0, ArgNo)) { int FI = MFI->CreateFixedObject(ObjSize, CurArgOffset); SDOperand FIN = DAG.getFrameIndex(FI, PtrVT); - ArgVal = DAG.getLoad(ObjectVT, Root, FIN, - DAG.getSrcValue(NULL)); + ArgVal = DAG.getLoad(ObjectVT, Root, FIN, NULL, 0); } else { // Don't emit a dead load. ArgVal = DAG.getNode(ISD::UNDEF, ObjectVT); @@ -1051,16 +1050,14 @@ // Float varargs are always shadowed in available integer registers if (GPR_idx != NumGPRs) { - SDOperand Load = DAG.getLoad(PtrVT, Store, PtrOff, - DAG.getSrcValue(NULL)); + SDOperand Load = DAG.getLoad(PtrVT, Store, PtrOff, NULL, 0); MemOpChains.push_back(Load.getValue(1)); RegsToPass.push_back(std::make_pair(GPR[GPR_idx++], Load)); } if (GPR_idx != NumGPRs && Arg.getValueType() == MVT::f64) { SDOperand ConstFour = DAG.getConstant(4, PtrOff.getValueType()); PtrOff = DAG.getNode(ISD::ADD, PtrVT, PtrOff, ConstFour); - SDOperand Load = DAG.getLoad(PtrVT, Store, PtrOff, - DAG.getSrcValue(NULL)); + SDOperand Load = DAG.getLoad(PtrVT, Store, PtrOff, NULL, 0); MemOpChains.push_back(Load.getValue(1)); RegsToPass.push_back(std::make_pair(GPR[GPR_idx++], Load)); } @@ -1401,7 +1398,7 @@ DAG.getEntryNode(), Ext64, FIdx, DAG.getSrcValue(NULL)); // Load the value as a double. - SDOperand Ld = DAG.getLoad(MVT::f64, Store, FIdx, DAG.getSrcValue(NULL)); + SDOperand Ld = DAG.getLoad(MVT::f64, Store, FIdx, NULL, 0); // FCFID it and return it. SDOperand FP = DAG.getNode(PPCISD::FCFID, MVT::f64, Ld); @@ -2124,7 +2121,7 @@ SDOperand Store = DAG.getStore(DAG.getEntryNode(), Op.getOperand(0), FIdx,DAG.getSrcValue(NULL)); // Load it out. - return DAG.getLoad(Op.getValueType(), Store, FIdx, DAG.getSrcValue(NULL)); + return DAG.getLoad(Op.getValueType(), Store, FIdx, NULL, 0); } static SDOperand LowerMUL(SDOperand Op, SelectionDAG &DAG) { @@ -2383,18 +2380,20 @@ break; case ISD::BSWAP: // Turn BSWAP (LOAD) -> lhbrx/lwbrx. - if (N->getOperand(0).getOpcode() == ISD::LOAD && + if (ISD::isNON_EXTLoad(N->getOperand(0).Val) && N->getOperand(0).hasOneUse() && (N->getValueType(0) == MVT::i32 || N->getValueType(0) == MVT::i16)) { SDOperand Load = N->getOperand(0); + LoadSDNode *LD = cast<LoadSDNode>(Load); // Create the byte-swapping load. std::vector<MVT::ValueType> VTs; VTs.push_back(MVT::i32); VTs.push_back(MVT::Other); + SDOperand SV = DAG.getSrcValue(LD->getSrcValue(), LD->getSrcValueOffset()); SDOperand Ops[] = { - Load.getOperand(0), // Chain - Load.getOperand(1), // Ptr - Load.getOperand(2), // SrcValue + LD->getChain(), // Chain + LD->getBasePtr(), // Ptr + SV, // SrcValue DAG.getValueType(N->getValueType(0)) // VT }; SDOperand BSLoad = DAG.getNode(PPCISD::LBRX, VTs, Ops, 4); Index: llvm/lib/Target/PowerPC/PPCInstr64Bit.td diff -u llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.20 llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.21 --- llvm/lib/Target/PowerPC/PPCInstr64Bit.td:1.20 Thu Sep 28 15:48:45 2006 +++ llvm/lib/Target/PowerPC/PPCInstr64Bit.td Mon Oct 9 15:57:25 2006 @@ -233,41 +233,41 @@ // Sign extending loads. def LHA8: DForm_1<42, (ops G8RC:$rD, memri:$src), "lha $rD, $src", LdStLHA, - [(set G8RC:$rD, (sextload iaddr:$src, i16))]>, + [(set G8RC:$rD, (sextloadi16 iaddr:$src))]>, PPC970_DGroup_Cracked; def LWA : DSForm_1<58, 2, (ops G8RC:$rD, memrix:$src), "lwa $rD, $src", LdStLWA, - [(set G8RC:$rD, (sextload ixaddr:$src, i32))]>, isPPC64, + [(set G8RC:$rD, (sextloadi32 ixaddr:$src))]>, isPPC64, PPC970_DGroup_Cracked; def LHAX8: XForm_1<31, 343, (ops G8RC:$rD, memrr:$src), "lhax $rD, $src", LdStLHA, - [(set G8RC:$rD, (sextload xaddr:$src, i16))]>, + [(set G8RC:$rD, (sextloadi16 xaddr:$src))]>, PPC970_DGroup_Cracked; def LWAX : XForm_1<31, 341, (ops G8RC:$rD, memrr:$src), "lwax $rD, $src", LdStLHA, - [(set G8RC:$rD, (sextload xaddr:$src, i32))]>, isPPC64, + [(set G8RC:$rD, (sextloadi32 xaddr:$src))]>, isPPC64, PPC970_DGroup_Cracked; // Zero extending loads. def LBZ8 : DForm_1<34, (ops G8RC:$rD, memri:$src), "lbz $rD, $src", LdStGeneral, - [(set G8RC:$rD, (zextload iaddr:$src, i8))]>; + [(set G8RC:$rD, (zextloadi8 iaddr:$src))]>; def LHZ8 : DForm_1<40, (ops G8RC:$rD, memri:$src), "lhz $rD, $src", LdStGeneral, - [(set G8RC:$rD, (zextload iaddr:$src, i16))]>; + [(set G8RC:$rD, (zextloadi16 iaddr:$src))]>; def LWZ8 : DForm_1<32, (ops G8RC:$rD, memri:$src), "lwz $rD, $src", LdStGeneral, - [(set G8RC:$rD, (zextload iaddr:$src, i32))]>, isPPC64; + [(set G8RC:$rD, (zextloadi32 iaddr:$src))]>, isPPC64; def LBZX8 : XForm_1<31, 87, (ops G8RC:$rD, memrr:$src), "lbzx $rD, $src", LdStGeneral, - [(set G8RC:$rD, (zextload xaddr:$src, i8))]>; + [(set G8RC:$rD, (zextloadi8 xaddr:$src))]>; def LHZX8 : XForm_1<31, 279, (ops G8RC:$rD, memrr:$src), "lhzx $rD, $src", LdStGeneral, - [(set G8RC:$rD, (zextload xaddr:$src, i16))]>; + [(set G8RC:$rD, (zextloadi16 xaddr:$src))]>; def LWZX8 : XForm_1<31, 23, (ops G8RC:$rD, memrr:$src), "lwzx $rD, $src", LdStGeneral, - [(set G8RC:$rD, (zextload xaddr:$src, i32))]>; + [(set G8RC:$rD, (zextloadi32 xaddr:$src))]>; // Full 8-byte loads. @@ -397,25 +397,25 @@ (OR8To4 G8RC:$in, G8RC:$in)>; // Extending loads with i64 targets. -def : Pat<(zextload iaddr:$src, i1), +def : Pat<(zextloadi1 iaddr:$src), (LBZ8 iaddr:$src)>; -def : Pat<(zextload xaddr:$src, i1), +def : Pat<(zextloadi1 xaddr:$src), (LBZX8 xaddr:$src)>; -def : Pat<(extload iaddr:$src, i1), +def : Pat<(extloadi1 iaddr:$src), (LBZ8 iaddr:$src)>; -def : Pat<(extload xaddr:$src, i1), +def : Pat<(extloadi1 xaddr:$src), (LBZX8 xaddr:$src)>; -def : Pat<(extload iaddr:$src, i8), +def : Pat<(extloadi8 iaddr:$src), (LBZ8 iaddr:$src)>; -def : Pat<(extload xaddr:$src, i8), +def : Pat<(extloadi8 xaddr:$src), (LBZX8 xaddr:$src)>; -def : Pat<(extload iaddr:$src, i16), +def : Pat<(extloadi16 iaddr:$src), (LHZ8 iaddr:$src)>; -def : Pat<(extload xaddr:$src, i16), +def : Pat<(extloadi16 xaddr:$src), (LHZX8 xaddr:$src)>; -def : Pat<(extload iaddr:$src, i32), +def : Pat<(extloadi32 iaddr:$src), (LWZ8 iaddr:$src)>; -def : Pat<(extload xaddr:$src, i32), +def : Pat<(extloadi32 xaddr:$src), (LWZX8 xaddr:$src)>; // SHL/SRL Index: llvm/lib/Target/PowerPC/PPCInstrInfo.td diff -u llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.243 llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.244 --- llvm/lib/Target/PowerPC/PPCInstrInfo.td:1.243 Tue Sep 26 21:55:21 2006 +++ llvm/lib/Target/PowerPC/PPCInstrInfo.td Mon Oct 9 15:57:25 2006 @@ -379,14 +379,14 @@ let isLoad = 1, PPC970_Unit = 2 in { def LBZ : DForm_1<34, (ops GPRC:$rD, memri:$src), "lbz $rD, $src", LdStGeneral, - [(set GPRC:$rD, (zextload iaddr:$src, i8))]>; + [(set GPRC:$rD, (zextloadi8 iaddr:$src))]>; def LHA : DForm_1<42, (ops GPRC:$rD, memri:$src), "lha $rD, $src", LdStLHA, - [(set GPRC:$rD, (sextload iaddr:$src, i16))]>, + [(set GPRC:$rD, (sextloadi16 iaddr:$src))]>, PPC970_DGroup_Cracked; def LHZ : DForm_1<40, (ops GPRC:$rD, memri:$src), "lhz $rD, $src", LdStGeneral, - [(set GPRC:$rD, (zextload iaddr:$src, i16))]>; + [(set GPRC:$rD, (zextloadi16 iaddr:$src))]>; def LWZ : DForm_1<32, (ops GPRC:$rD, memri:$src), "lwz $rD, $src", LdStGeneral, [(set GPRC:$rD, (load iaddr:$src))]>; @@ -490,14 +490,14 @@ let isLoad = 1, PPC970_Unit = 2 in { def LBZX : XForm_1<31, 87, (ops GPRC:$rD, memrr:$src), "lbzx $rD, $src", LdStGeneral, - [(set GPRC:$rD, (zextload xaddr:$src, i8))]>; + [(set GPRC:$rD, (zextloadi8 xaddr:$src))]>; def LHAX : XForm_1<31, 343, (ops GPRC:$rD, memrr:$src), "lhax $rD, $src", LdStLHA, - [(set GPRC:$rD, (sextload xaddr:$src, i16))]>, + [(set GPRC:$rD, (sextloadi16 xaddr:$src))]>, PPC970_DGroup_Cracked; def LHZX : XForm_1<31, 279, (ops GPRC:$rD, memrr:$src), "lhzx $rD, $src", LdStGeneral, - [(set GPRC:$rD, (zextload xaddr:$src, i16))]>; + [(set GPRC:$rD, (zextloadi16 xaddr:$src))]>; def LWZX : XForm_1<31, 23, (ops GPRC:$rD, memrr:$src), "lwzx $rD, $src", LdStGeneral, [(set GPRC:$rD, (load xaddr:$src))]>; @@ -990,25 +990,25 @@ def : Pat<(shl GPRC:$rS, GPRC:$rB), (SLW GPRC:$rS, GPRC:$rB)>; -def : Pat<(zextload iaddr:$src, i1), +def : Pat<(zextloadi1 iaddr:$src), (LBZ iaddr:$src)>; -def : Pat<(zextload xaddr:$src, i1), +def : Pat<(zextloadi1 xaddr:$src), (LBZX xaddr:$src)>; -def : Pat<(extload iaddr:$src, i1), +def : Pat<(extloadi1 iaddr:$src), (LBZ iaddr:$src)>; -def : Pat<(extload xaddr:$src, i1), +def : Pat<(extloadi1 xaddr:$src), (LBZX xaddr:$src)>; -def : Pat<(extload iaddr:$src, i8), +def : Pat<(extloadi8 iaddr:$src), (LBZ iaddr:$src)>; -def : Pat<(extload xaddr:$src, i8), +def : Pat<(extloadi8 xaddr:$src), (LBZX xaddr:$src)>; -def : Pat<(extload iaddr:$src, i16), +def : Pat<(extloadi16 iaddr:$src), (LHZ iaddr:$src)>; -def : Pat<(extload xaddr:$src, i16), +def : Pat<(extloadi16 xaddr:$src), (LHZX xaddr:$src)>; -def : Pat<(extload iaddr:$src, f32), +def : Pat<(extloadf32 iaddr:$src), (FMRSD (LFS iaddr:$src))>; -def : Pat<(extload xaddr:$src, f32), +def : Pat<(extloadf32 xaddr:$src), (FMRSD (LFSX xaddr:$src))>; include "PPCInstrAltivec.td" _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits