Home | History | Annotate | Download | only in MSP430

Lines Matching refs:AM

108     bool MatchAddress(SDValue N, MSP430ISelAddressMode &AM);
109 bool MatchWrapper(SDValue N, MSP430ISelAddressMode &AM);
110 bool MatchAddressBase(SDValue N, MSP430ISelAddressMode &AM);
140 bool MSP430DAGToDAGISel::MatchWrapper(SDValue N, MSP430ISelAddressMode &AM) {
143 if (AM.hasSymbolicDisplacement())
149 AM.GV = G->getGlobal();
150 AM.Disp += G->getOffset();
151 //AM.SymbolFlags = G->getTargetFlags();
153 AM.CP = CP->getConstVal();
154 AM.Align = CP->getAlignment();
155 AM.Disp += CP->getOffset();
156 //AM.SymbolFlags = CP->getTargetFlags();
158 AM.ES = S->getSymbol();
159 //AM.SymbolFlags = S->getTargetFlags();
161 AM.JT = J->getIndex();
162 //AM.SymbolFlags = J->getTargetFlags();
164 AM.BlockAddr = cast<BlockAddressSDNode>(N0)->getBlockAddress();
165 //AM.SymbolFlags = cast<BlockAddressSDNode>(N0)->getTargetFlags();
172 bool MSP430DAGToDAGISel::MatchAddressBase(SDValue N, MSP430ISelAddressMode &AM) {
174 if (AM.BaseType != MSP430ISelAddressMode::RegBase || AM.Base.Reg.getNode()) {
180 AM.BaseType = MSP430ISelAddressMode::RegBase;
181 AM.Base.Reg = N;
185 bool MSP430DAGToDAGISel::MatchAddress(SDValue N, MSP430ISelAddressMode &AM) {
186 DEBUG(errs() << "MatchAddress: "; AM.dump());
192 AM.Disp += Val;
197 if (!MatchWrapper(N, AM))
202 if (AM.BaseType == MSP430ISelAddressMode::RegBase
203 && AM.Base.Reg.getNode() == nullptr) {
204 AM.BaseType = MSP430ISelAddressMode::FrameIndexBase;
205 AM.Base.FrameIndex = cast<FrameIndexSDNode>(N)->getIndex();
211 MSP430ISelAddressMode Backup = AM;
212 if (!MatchAddress(N.getNode()->getOperand(0), AM) &&
213 !MatchAddress(N.getNode()->getOperand(1), AM))
215 AM = Backup;
216 if (!MatchAddress(N.getNode()->getOperand(1), AM) &&
217 !MatchAddress(N.getNode()->getOperand(0), AM))
219 AM = Backup;
227 MSP430ISelAddressMode Backup = AM;
230 if (!MatchAddress(N.getOperand(0), AM) &&
232 AM.GV == nullptr &&
235 AM.Disp += Offset;
238 AM = Backup;
243 return MatchAddressBase(N, AM);
251 MSP430ISelAddressMode AM;
253 if (MatchAddress(N, AM))
257 if (AM.BaseType == MSP430ISelAddressMode::RegBase) {
258 if (!AM.Base.Reg.getNode())
259 AM.Base.Reg = CurDAG->getRegister(0, VT);
262 Base = (AM.BaseType == MSP430ISelAddressMode::FrameIndexBase) ?
263 CurDAG->getTargetFrameIndex(AM.Base.FrameIndex,
265 AM.Base.Reg;
267 if (AM.GV)
268 Disp = CurDAG->getTargetGlobalAddress(AM.GV, SDLoc(N),
269 MVT::i16, AM.Disp,
270 0/*AM.SymbolFlags*/);
271 else if (AM.CP)
272 Disp = CurDAG->getTargetConstantPool(AM.CP, MVT::i16,
273 AM.Align, AM.Disp, 0/*AM.SymbolFlags*/);
274 else if (AM.ES)
275 Disp = CurDAG->getTargetExternalSymbol(AM.ES, MVT::i16, 0/*AM.SymbolFlags*/);
276 else if (AM.JT != -1)
277 Disp = CurDAG->getTargetJumpTable(AM.JT, MVT::i16, 0/*AM.SymbolFlags*/);
278 else if (AM.BlockAddr)
279 Disp = CurDAG->getTargetBlockAddress(AM.BlockAddr, MVT::i32, 0,
280 0/*AM.SymbolFlags*/);
282 Disp = CurDAG->getTargetConstant(AM.Disp, MVT::i16);
305 ISD::MemIndexedMode AM = LD->getAddressingMode();
306 if (AM != ISD::POST_INC || LD->getExtensionType() != ISD::NON_EXTLOAD)