14 #define DEBUG_TYPE "mips-isel"
51 processFunctionAfterISel(MF);
66 bool MipsDAGToDAGISel::selectAddrRegImm(
SDValue Addr,
SDValue &Base,
72 bool MipsDAGToDAGISel::selectAddrRegReg(
SDValue Addr,
SDValue &Base,
78 bool MipsDAGToDAGISel::selectAddrDefault(
SDValue Addr,
SDValue &Base,
90 bool MipsDAGToDAGISel::selectIntAddrMM(
SDValue Addr,
SDValue &Base,
102 bool MipsDAGToDAGISel::selectVSplat(
SDNode *
N,
APInt &Imm)
const {
107 bool MipsDAGToDAGISel::selectVSplatUimm1(
SDValue N,
SDValue &Imm)
const {
112 bool MipsDAGToDAGISel::selectVSplatUimm2(
SDValue N,
SDValue &Imm)
const {
117 bool MipsDAGToDAGISel::selectVSplatUimm3(
SDValue N,
SDValue &Imm)
const {
122 bool MipsDAGToDAGISel::selectVSplatUimm4(
SDValue N,
SDValue &Imm)
const {
127 bool MipsDAGToDAGISel::selectVSplatUimm5(
SDValue N,
SDValue &Imm)
const {
132 bool MipsDAGToDAGISel::selectVSplatUimm6(
SDValue N,
SDValue &Imm)
const {
137 bool MipsDAGToDAGISel::selectVSplatUimm8(
SDValue N,
SDValue &Imm)
const {
142 bool MipsDAGToDAGISel::selectVSplatSimm5(
SDValue N,
SDValue &Imm)
const {
147 bool MipsDAGToDAGISel::selectVSplatUimmPow2(
SDValue N,
SDValue &Imm)
const {
152 bool MipsDAGToDAGISel::selectVSplatUimmInvPow2(
SDValue N,
SDValue &Imm)
const {
157 bool MipsDAGToDAGISel::selectVSplatMaskL(
SDValue N,
SDValue &Imm)
const {
162 bool MipsDAGToDAGISel::selectVSplatMaskR(
SDValue N,
SDValue &Imm)
const {
183 std::pair<bool, SDNode*>
Ret = selectNode(Node);
198 assert(cast<MemSDNode>(Node)->getMemoryVT().getSizeInBits() / 8 <=
199 cast<MemSDNode>(Node)->getAlignment() &&
200 "Unexpected unaligned loads/stores.");
206 SDNode *ResNode = SelectCode(Node);
209 if (ResNode == NULL || ResNode == Node)
217 bool MipsDAGToDAGISel::
218 SelectInlineAsmMemoryOperand(
const SDValue &Op,
char ConstraintCode,
219 std::vector<SDValue> &OutOps) {
220 assert(ConstraintCode ==
'm' &&
"unexpected asm memory constraint");
221 OutOps.push_back(Op);
void dump() const
dump - Dump this node, for debugging.
unsigned getOpcode() const
FunctionPass * createMipsISelDag(MipsTargetMachine &TM)
void setNodeId(int Id)
setNodeId - Set unique node id.
FunctionPass * createMipsSEISelDag(MipsTargetMachine &TM)
#define llvm_unreachable(msg)
const TargetLowering * getTargetLowering() const
virtual const MipsSubtarget * getSubtargetImpl() const
virtual bool runOnMachineFunction(MachineFunction &MF)
SDNode * getNode() const
get the SDNode which holds the desired result
bool inMips16Mode() const
virtual bool runOnMachineFunction(MachineFunction &MF)
Class for arbitrary precision integers.
SDNode * getGlobalBaseReg()
SDValue getRegister(unsigned Reg, EVT VT)
FunctionPass * createMips16ISelDag(MipsTargetMachine &TM)
bool isMachineOpcode() const