| //===---- MipsModuleISelDAGToDAG.h - Change Subtarget --------===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file defines a pass used to change the subtarget for the |
| // Mips Instruction selector. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef LLVM_LIB_TARGET_MIPS_MIPSMODULEISELDAGTODAG_H |
| #define LLVM_LIB_TARGET_MIPS_MIPSMODULEISELDAGTODAG_H |
| |
| #include "Mips.h" |
| #include "MipsSubtarget.h" |
| #include "MipsTargetMachine.h" |
| #include "llvm/CodeGen/SelectionDAGISel.h" |
| |
| |
| //===----------------------------------------------------------------------===// |
| // Instruction Selector Implementation |
| //===----------------------------------------------------------------------===// |
| |
| //===----------------------------------------------------------------------===// |
| // MipsModuleDAGToDAGISel - MIPS specific code to select MIPS machine |
| // instructions for SelectionDAG operations. |
| //===----------------------------------------------------------------------===// |
| namespace llvm { |
| |
| class MipsModuleDAGToDAGISel : public MachineFunctionPass { |
| public: |
| |
| static char ID; |
| |
| explicit MipsModuleDAGToDAGISel(MipsTargetMachine &TM_) |
| : MachineFunctionPass(ID), TM(TM_) {} |
| |
| // Pass Name |
| const char *getPassName() const override { |
| return "MIPS DAG->DAG Pattern Instruction Selection"; |
| } |
| |
| bool runOnMachineFunction(MachineFunction &MF) override; |
| |
| protected: |
| MipsTargetMachine &TM; |
| }; |
| |
| /// createMipsISelDag - This pass converts a legalized DAG into a |
| /// MIPS-specific DAG, ready for instruction scheduling. |
| FunctionPass *createMipsModuleISelDag(MipsTargetMachine &TM); |
| } |
| |
| #endif |