Lines Matching full:am
102 bool MatchAddress(SDValue N, MSP430ISelAddressMode &AM);
103 bool MatchWrapper(SDValue N, MSP430ISelAddressMode &AM);
104 bool MatchAddressBase(SDValue N, MSP430ISelAddressMode &AM);
134 bool MSP430DAGToDAGISel::MatchWrapper(SDValue N, MSP430ISelAddressMode &AM) { in MatchWrapper() argument
137 if (AM.hasSymbolicDisplacement()) in MatchWrapper()
143 AM.GV = G->getGlobal(); in MatchWrapper()
144 AM.Disp += G->getOffset(); in MatchWrapper()
145 //AM.SymbolFlags = G->getTargetFlags(); in MatchWrapper()
147 AM.CP = CP->getConstVal(); in MatchWrapper()
148 AM.Align = CP->getAlignment(); in MatchWrapper()
149 AM.Disp += CP->getOffset(); in MatchWrapper()
150 //AM.SymbolFlags = CP->getTargetFlags(); in MatchWrapper()
152 AM.ES = S->getSymbol(); in MatchWrapper()
153 //AM.SymbolFlags = S->getTargetFlags(); in MatchWrapper()
155 AM.JT = J->getIndex(); in MatchWrapper()
156 //AM.SymbolFlags = J->getTargetFlags(); in MatchWrapper()
158 AM.BlockAddr = cast<BlockAddressSDNode>(N0)->getBlockAddress(); in MatchWrapper()
159 //AM.SymbolFlags = cast<BlockAddressSDNode>(N0)->getTargetFlags(); in MatchWrapper()
166 bool MSP430DAGToDAGISel::MatchAddressBase(SDValue N, MSP430ISelAddressMode &AM) { in MatchAddressBase() argument
168 if (AM.BaseType != MSP430ISelAddressMode::RegBase || AM.Base.Reg.getNode()) { in MatchAddressBase()
174 AM.BaseType = MSP430ISelAddressMode::RegBase; in MatchAddressBase()
175 AM.Base.Reg = N; in MatchAddressBase()
179 bool MSP430DAGToDAGISel::MatchAddress(SDValue N, MSP430ISelAddressMode &AM) { in MatchAddress() argument
180 DEBUG(errs() << "MatchAddress: "; AM.dump()); in MatchAddress()
186 AM.Disp += Val; in MatchAddress()
191 if (!MatchWrapper(N, AM)) in MatchAddress()
196 if (AM.BaseType == MSP430ISelAddressMode::RegBase in MatchAddress()
197 && AM.Base.Reg.getNode() == nullptr) { in MatchAddress()
198 AM.BaseType = MSP430ISelAddressMode::FrameIndexBase; in MatchAddress()
199 AM.Base.FrameIndex = cast<FrameIndexSDNode>(N)->getIndex(); in MatchAddress()
205 MSP430ISelAddressMode Backup = AM; in MatchAddress()
206 if (!MatchAddress(N.getNode()->getOperand(0), AM) && in MatchAddress()
207 !MatchAddress(N.getNode()->getOperand(1), AM)) in MatchAddress()
209 AM = Backup; in MatchAddress()
210 if (!MatchAddress(N.getNode()->getOperand(1), AM) && in MatchAddress()
211 !MatchAddress(N.getNode()->getOperand(0), AM)) in MatchAddress()
213 AM = Backup; in MatchAddress()
221 MSP430ISelAddressMode Backup = AM; in MatchAddress()
224 if (!MatchAddress(N.getOperand(0), AM) && in MatchAddress()
226 AM.GV == nullptr && in MatchAddress()
229 AM.Disp += Offset; in MatchAddress()
232 AM = Backup; in MatchAddress()
237 return MatchAddressBase(N, AM); in MatchAddress()
245 MSP430ISelAddressMode AM; in SelectAddr() local
247 if (MatchAddress(N, AM)) in SelectAddr()
251 if (AM.BaseType == MSP430ISelAddressMode::RegBase) { in SelectAddr()
252 if (!AM.Base.Reg.getNode()) in SelectAddr()
253 AM.Base.Reg = CurDAG->getRegister(0, VT); in SelectAddr()
256 Base = (AM.BaseType == MSP430ISelAddressMode::FrameIndexBase) in SelectAddr()
258 AM.Base.FrameIndex, in SelectAddr()
260 : AM.Base.Reg; in SelectAddr()
262 if (AM.GV) in SelectAddr()
263 Disp = CurDAG->getTargetGlobalAddress(AM.GV, SDLoc(N), in SelectAddr()
264 MVT::i16, AM.Disp, in SelectAddr()
265 0/*AM.SymbolFlags*/); in SelectAddr()
266 else if (AM.CP) in SelectAddr()
267 Disp = CurDAG->getTargetConstantPool(AM.CP, MVT::i16, in SelectAddr()
268 AM.Align, AM.Disp, 0/*AM.SymbolFlags*/); in SelectAddr()
269 else if (AM.ES) in SelectAddr()
270 Disp = CurDAG->getTargetExternalSymbol(AM.ES, MVT::i16, 0/*AM.SymbolFlags*/); in SelectAddr()
271 else if (AM.JT != -1) in SelectAddr()
272 Disp = CurDAG->getTargetJumpTable(AM.JT, MVT::i16, 0/*AM.SymbolFlags*/); in SelectAddr()
273 else if (AM.BlockAddr) in SelectAddr()
274 Disp = CurDAG->getTargetBlockAddress(AM.BlockAddr, MVT::i32, 0, in SelectAddr()
275 0/*AM.SymbolFlags*/); in SelectAddr()
277 Disp = CurDAG->getTargetConstant(AM.Disp, SDLoc(N), MVT::i16); in SelectAddr()
300 ISD::MemIndexedMode AM = LD->getAddressingMode(); in isValidIndexedLoad() local
301 if (AM != ISD::POST_INC || LD->getExtensionType() != ISD::NON_EXTLOAD) in isValidIndexedLoad()