Lines Matching refs:AM
106 bool MatchAddress(SDValue N, MSP430ISelAddressMode &AM);
107 bool MatchWrapper(SDValue N, MSP430ISelAddressMode &AM);
108 bool MatchAddressBase(SDValue N, MSP430ISelAddressMode &AM);
139 bool MSP430DAGToDAGISel::MatchWrapper(SDValue N, MSP430ISelAddressMode &AM) { in MatchWrapper() argument
142 if (AM.hasSymbolicDisplacement()) in MatchWrapper()
148 AM.GV = G->getGlobal(); in MatchWrapper()
149 AM.Disp += G->getOffset(); in MatchWrapper()
152 AM.CP = CP->getConstVal(); in MatchWrapper()
153 AM.Align = CP->getAlignment(); in MatchWrapper()
154 AM.Disp += CP->getOffset(); in MatchWrapper()
157 AM.ES = S->getSymbol(); in MatchWrapper()
160 AM.JT = J->getIndex(); in MatchWrapper()
163 AM.BlockAddr = cast<BlockAddressSDNode>(N0)->getBlockAddress(); in MatchWrapper()
171 bool MSP430DAGToDAGISel::MatchAddressBase(SDValue N, MSP430ISelAddressMode &AM) { in MatchAddressBase() argument
173 if (AM.BaseType != MSP430ISelAddressMode::RegBase || AM.Base.Reg.getNode()) { in MatchAddressBase()
179 AM.BaseType = MSP430ISelAddressMode::RegBase; in MatchAddressBase()
180 AM.Base.Reg = N; in MatchAddressBase()
184 bool MSP430DAGToDAGISel::MatchAddress(SDValue N, MSP430ISelAddressMode &AM) { in MatchAddress() argument
185 LLVM_DEBUG(errs() << "MatchAddress: "; AM.dump()); in MatchAddress()
191 AM.Disp += Val; in MatchAddress()
196 if (!MatchWrapper(N, AM)) in MatchAddress()
201 if (AM.BaseType == MSP430ISelAddressMode::RegBase in MatchAddress()
202 && AM.Base.Reg.getNode() == nullptr) { in MatchAddress()
203 AM.BaseType = MSP430ISelAddressMode::FrameIndexBase; in MatchAddress()
204 AM.Base.FrameIndex = cast<FrameIndexSDNode>(N)->getIndex(); in MatchAddress()
210 MSP430ISelAddressMode Backup = AM; in MatchAddress()
211 if (!MatchAddress(N.getNode()->getOperand(0), AM) && in MatchAddress()
212 !MatchAddress(N.getNode()->getOperand(1), AM)) in MatchAddress()
214 AM = Backup; in MatchAddress()
215 if (!MatchAddress(N.getNode()->getOperand(1), AM) && in MatchAddress()
216 !MatchAddress(N.getNode()->getOperand(0), AM)) in MatchAddress()
218 AM = Backup; in MatchAddress()
226 MSP430ISelAddressMode Backup = AM; in MatchAddress()
229 if (!MatchAddress(N.getOperand(0), AM) && in MatchAddress()
231 AM.GV == nullptr && in MatchAddress()
234 AM.Disp += Offset; in MatchAddress()
237 AM = Backup; in MatchAddress()
242 return MatchAddressBase(N, AM); in MatchAddress()
250 MSP430ISelAddressMode AM; in SelectAddr() local
252 if (MatchAddress(N, AM)) in SelectAddr()
255 if (AM.BaseType == MSP430ISelAddressMode::RegBase) in SelectAddr()
256 if (!AM.Base.Reg.getNode()) in SelectAddr()
257 AM.Base.Reg = CurDAG->getRegister(MSP430::SR, MVT::i16); in SelectAddr()
259 Base = (AM.BaseType == MSP430ISelAddressMode::FrameIndexBase) in SelectAddr()
261 AM.Base.FrameIndex, in SelectAddr()
263 : AM.Base.Reg; in SelectAddr()
265 if (AM.GV) in SelectAddr()
266 Disp = CurDAG->getTargetGlobalAddress(AM.GV, SDLoc(N), in SelectAddr()
267 MVT::i16, AM.Disp, in SelectAddr()
269 else if (AM.CP) in SelectAddr()
270 Disp = CurDAG->getTargetConstantPool(AM.CP, MVT::i16, in SelectAddr()
271 AM.Align, AM.Disp, 0/*AM.SymbolFlags*/); in SelectAddr()
272 else if (AM.ES) in SelectAddr()
273 Disp = CurDAG->getTargetExternalSymbol(AM.ES, MVT::i16, 0/*AM.SymbolFlags*/); in SelectAddr()
274 else if (AM.JT != -1) in SelectAddr()
275 Disp = CurDAG->getTargetJumpTable(AM.JT, MVT::i16, 0/*AM.SymbolFlags*/); in SelectAddr()
276 else if (AM.BlockAddr) in SelectAddr()
277 Disp = CurDAG->getTargetBlockAddress(AM.BlockAddr, MVT::i32, 0, in SelectAddr()
280 Disp = CurDAG->getTargetConstant(AM.Disp, SDLoc(N), MVT::i16); in SelectAddr()
303 ISD::MemIndexedMode AM = LD->getAddressingMode(); in isValidIndexedLoad() local
304 if (AM != ISD::POST_INC || LD->getExtensionType() != ISD::NON_EXTLOAD) in isValidIndexedLoad()