Home | History | Annotate | Download | only in SystemZ

Lines Matching refs:AM

85     void getAddressOperandsRI(const SystemZRRIAddressMode &AM,
87 void getAddressOperands(const SystemZRRIAddressMode &AM,
141 bool MatchAddress(SDValue N, SystemZRRIAddressMode &AM,
143 bool MatchAddressBase(SDValue N, SystemZRRIAddressMode &AM);
182 bool SystemZDAGToDAGISel::MatchAddress(SDValue N, SystemZRRIAddressMode &AM,
185 DEBUG(errs() << "MatchAddress: "; AM.dump());
188 return MatchAddressBase(N, AM);
199 isImmZExt12(AM.Disp + Val, Imm) :
200 isImmSExt20(AM.Disp + Val, Imm));
202 AM.Disp = Imm;
209 if (AM.BaseType == SystemZRRIAddressMode::RegBase &&
210 AM.Base.Reg.getNode() == 0) {
211 AM.BaseType = SystemZRRIAddressMode::FrameIndexBase;
212 AM.Base.FrameIndex = cast<FrameIndexSDNode>(N)->getIndex();
226 SystemZRRIAddressMode Backup = AM;
227 if (MatchAddress(N.getNode()->getOperand(0), AM, is12Bit, Depth+1)) {
228 AM = Backup;
232 if (AM.IndexReg.getNode() || AM.isRI) {
233 AM = Backup;
239 if (AM.BaseType == SystemZRRIAddressMode::RegBase &&
240 (!AM.Base.Reg.getNode() || AM.Base.Reg.getNode()->hasOneUse())) {
241 AM = Backup;
249 AM.IndexReg = Neg;
266 SystemZRRIAddressMode Backup = AM;
267 if (!MatchAddress(N.getNode()->getOperand(0), AM, is12Bit, Depth+1) &&
268 !MatchAddress(N.getNode()->getOperand(1), AM, is12Bit, Depth+1))
270 AM = Backup;
271 if (!MatchAddress(N.getNode()->getOperand(1), AM, is12Bit, Depth+1) &&
272 !MatchAddress(N.getNode()->getOperand(0), AM, is12Bit, Depth+1))
274 AM = Backup;
279 if (!AM.isRI &&
280 AM.BaseType == SystemZRRIAddressMode::RegBase &&
281 !AM.Base.Reg.getNode() && !AM.IndexReg.getNode()) {
282 AM.Base.Reg = N.getNode()->getOperand(0);
283 AM.IndexReg = N.getNode()->getOperand(1);
292 SystemZRRIAddressMode Backup = AM;
296 isImmZExt12(AM.Disp + Offset, Imm) :
297 isImmSExt20(AM.Disp + Offset, Imm));
301 !MatchAddress(N.getOperand(0), AM, is12Bit, Depth+1) &&
304 AM.Disp = Imm;
307 AM = Backup;
312 return MatchAddressBase(N, AM);
318 SystemZRRIAddressMode &AM) {
320 if (AM.BaseType != SystemZRRIAddressMode::RegBase || AM.Base.Reg.getNode()) {
322 if (AM.IndexReg.getNode() == 0 && !AM.isRI) {
323 AM.IndexReg = N;
332 AM.BaseType = SystemZRRIAddressMode::RegBase;
333 AM.Base.Reg = N;
337 void SystemZDAGToDAGISel::getAddressOperandsRI(const SystemZRRIAddressMode &AM,
339 if (AM.BaseType == SystemZRRIAddressMode::RegBase)
340 Base = AM.Base.Reg;
342 Base = CurDAG->getTargetFrameIndex(AM.Base.FrameIndex, TLI.getPointerTy());
343 Disp = CurDAG->getTargetConstant(AM.Disp, MVT::i64);
346 void SystemZDAGToDAGISel::getAddressOperands(const SystemZRRIAddressMode &AM,
349 getAddressOperandsRI(AM, Base, Disp);
350 Index = AM.IndexReg;
412 SystemZRRIAddressMode AM(/*isRI*/true);
426 MatchAddressBase(Addr, AM);
433 if (!Done && MatchAddress(Addr, AM, /* is12Bit */ false))
436 DEBUG(errs() << "MatchAddress (final): "; AM.dump());
439 if (AM.BaseType == SystemZRRIAddressMode::RegBase) {
440 if (!AM.Base.Reg.getNode())
441 AM.Base.Reg = CurDAG->getRegister(0, VT);
444 assert(AM.IndexReg.getNode() == 0 && "Invalid reg-imm address mode!");
446 getAddressOperandsRI(AM, Base, Disp);
504 SystemZRRIAddressMode AM;
518 MatchAddressBase(Addr, AM);
525 if (!Done && MatchAddress(Addr, AM, /* is12Bit */ false))
528 DEBUG(errs() << "MatchAddress (final): "; AM.dump());
531 if (AM.BaseType == SystemZRRIAddressMode::RegBase) {
532 if (!AM.Base.Reg.getNode())
533 AM.Base.Reg = CurDAG->getRegister(0, VT);
536 if (!AM.IndexReg.getNode())
537 AM.IndexReg = CurDAG->getRegister(0, VT);
539 getAddressOperands(AM, Base, Disp, Index);
548 SystemZRRIAddressMode AM;
550 if (MatchAddress(Addr, AM, false))
555 if (AM.BaseType == SystemZRRIAddressMode::RegBase)
556 if (AM.Base.Reg.getNode())
559 AM.Base.Reg = CurDAG->getRegister(0, VT);
560 else if (AM.BaseType == SystemZRRIAddressMode::FrameIndexBase)
563 if (AM.IndexReg.getNode())
566 AM.IndexReg = CurDAG->getRegister(0, VT);
568 if (AM.Disp && (AM.Base.Reg.getNode() || AM.IndexReg.getNode()))
572 getAddressOperands(AM, Base, Disp, Index);