Lines Matching defs:Addr
80 bool VEDAGToDAGISel::selectADDRrri(SDValue Addr, SDValue &Base, SDValue &Index,
82 if (Addr.getOpcode() == ISD::FrameIndex)
84 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
85 Addr.getOpcode() == ISD::TargetGlobalAddress ||
86 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
90 if (matchADDRri(Addr, LHS, RHS)) {
98 if (matchADDRrr(Addr, LHS, RHS)) {
117 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
123 bool VEDAGToDAGISel::selectADDRrii(SDValue Addr, SDValue &Base, SDValue &Index,
125 if (matchADDRri(Addr, Base, Offset)) {
126 Index = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
130 Base = Addr;
131 Index = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
132 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
136 bool VEDAGToDAGISel::selectADDRzri(SDValue Addr, SDValue &Base, SDValue &Index,
142 bool VEDAGToDAGISel::selectADDRzii(SDValue Addr, SDValue &Base, SDValue &Index,
144 if (isa<FrameIndexSDNode>(Addr))
146 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
147 Addr.getOpcode() == ISD::TargetGlobalAddress ||
148 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
151 if (auto *CN = dyn_cast<ConstantSDNode>(Addr)) {
153 Base = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
154 Index = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
156 CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(Addr), MVT::i32);
163 bool VEDAGToDAGISel::selectADDRri(SDValue Addr, SDValue &Base,
165 if (matchADDRri(Addr, Base, Offset))
168 Base = Addr;
169 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
173 bool VEDAGToDAGISel::selectADDRzi(SDValue Addr, SDValue &Base,
175 if (isa<FrameIndexSDNode>(Addr))
177 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
178 Addr.getOpcode() == ISD::TargetGlobalAddress ||
179 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
182 if (auto *CN = dyn_cast<ConstantSDNode>(Addr)) {
184 Base = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
186 CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(Addr), MVT::i32);
193 bool VEDAGToDAGISel::matchADDRrr(SDValue Addr, SDValue &Base, SDValue &Index) {
194 if (isa<FrameIndexSDNode>(Addr))
196 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
197 Addr.getOpcode() == ISD::TargetGlobalAddress ||
198 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
201 if (Addr.getOpcode() == ISD::ADD) {
203 } else if (Addr.getOpcode() == ISD::OR) {
206 if (!CurDAG->haveNoCommonBitsSet(Addr.getOperand(0), Addr.getOperand(1)))
212 if (Addr.getOperand(0).getOpcode() == VEISD::Lo ||
213 Addr.getOperand(1).getOpcode() == VEISD::Lo)
216 Base = Addr.getOperand(0);
217 Index = Addr.getOperand(1);
221 bool VEDAGToDAGISel::matchADDRri(SDValue Addr, SDValue &Base, SDValue &Offset) {
222 auto AddrTy = Addr->getValueType(0);
223 if (FrameIndexSDNode *FIN = dyn_cast<FrameIndexSDNode>(Addr)) {
225 Offset = CurDAG->getTargetConstant(0, SDLoc(Addr), MVT::i32);
228 if (Addr.getOpcode() == ISD::TargetExternalSymbol ||
229 Addr.getOpcode() == ISD::TargetGlobalAddress ||
230 Addr.getOpcode() == ISD::TargetGlobalTLSAddress)
233 if (CurDAG->isBaseWithConstantOffset(Addr)) {
234 ConstantSDNode *CN = cast<ConstantSDNode>(Addr.getOperand(1));
237 dyn_cast<FrameIndexSDNode>(Addr.getOperand(0))) {
241 Base = Addr.getOperand(0);
244 CurDAG->getTargetConstant(CN->getZExtValue(), SDLoc(Addr), MVT::i32);