Lines Matching defs:Addr
84 bool VEDAGToDAGISel::selectADDRrri(SDValue Addr, SDValue &Base, SDValue &Index,
86 if (Addr.getOpcode() == ISD::FrameIndex)
88 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
89 Addr.getOpcode() == ISD::TargetGlobalAddress ||
90 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
94 if (matchADDRri(Addr, LHS, RHS)) {
102 if (matchADDRrr(Addr, LHS, RHS)) {
121 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
127 bool VEDAGToDAGISel::selectADDRrii(SDValue Addr, SDValue &Base, SDValue &Index,
129 if (matchADDRri(Addr, Base, Offset)) {
130 Index = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
134 Base = Addr;
135 Index = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
136 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
140 bool VEDAGToDAGISel::selectADDRzri(SDValue Addr, SDValue &Base, SDValue &Index,
146 bool VEDAGToDAGISel::selectADDRzii(SDValue Addr, SDValue &Base, SDValue &Index,
148 if (isa<FrameIndexSDNode>(Addr))
150 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
151 Addr.getOpcode() == ISD::TargetGlobalAddress ||
152 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
155 if (auto *CN = dyn_cast<ConstantSDNode>(Addr)) {
157 Base = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
158 Index = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
160 CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(Addr), MVT::i32);
167 bool VEDAGToDAGISel::selectADDRri(SDValue Addr, SDValue &Base,
169 if (matchADDRri(Addr, Base, Offset))
172 Base = Addr;
173 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
177 bool VEDAGToDAGISel::selectADDRzi(SDValue Addr, SDValue &Base,
179 if (isa<FrameIndexSDNode>(Addr))
181 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
182 Addr.getOpcode() == ISD::TargetGlobalAddress ||
183 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
186 if (auto *CN = dyn_cast<ConstantSDNode>(Addr)) {
188 Base = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
190 CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(Addr), MVT::i32);
197 bool VEDAGToDAGISel::matchADDRrr(SDValue Addr, SDValue &Base, SDValue &Index) {
198 if (isa<FrameIndexSDNode>(Addr))
200 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
201 Addr.getOpcode() == ISD::TargetGlobalAddress ||
202 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
205 if (Addr.getOpcode() == ISD::ADD) {
207 } else if (Addr.getOpcode() == ISD::OR) {
210 if (!CurDAG->haveNoCommonBitsSet(Addr.getOperand(0), Addr.getOperand(1)))
216 if (Addr.getOperand(0).getOpcode() == VEISD::Lo ||
217 Addr.getOperand(1).getOpcode() == VEISD::Lo)
220 Base = Addr.getOperand(0);
221 Index = Addr.getOperand(1);
225 bool VEDAGToDAGISel::matchADDRri(SDValue Addr, SDValue &Base, SDValue &Offset) {
226 auto AddrTy = Addr->getValueType(0);
227 if (FrameIndexSDNode *FIN = dyn_cast<FrameIndexSDNode>(Addr)) {
229 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
232 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
233 Addr.getOpcode() == ISD::TargetGlobalAddress ||
234 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
237 if (CurDAG->isBaseWithConstantOffset(Addr)) {
238 ConstantSDNode *CN = cast<ConstantSDNode>(Addr.getOperand(1));
241 dyn_cast<FrameIndexSDNode>(Addr.getOperand(0))) {
245 Base = Addr.getOperand(0);
248 CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(Addr), MVT::i32);