1 //===---- MipsModuleISelDAGToDAG.h - Change Subtarget --------===// 2 // 3 // The LLVM Compiler Infrastructure 4 // 5 // This file is distributed under the University of Illinois Open Source 6 // License. See LICENSE.TXT for details. 7 // 8 //===----------------------------------------------------------------------===// 9 // 10 // This file defines a pass used to change the subtarget for the 11 // Mips Instruction selector. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_LIB_TARGET_MIPS_MIPSMODULEISELDAGTODAG_H 16 #define LLVM_LIB_TARGET_MIPS_MIPSMODULEISELDAGTODAG_H 17 18 #include "Mips.h" 19 #include "MipsSubtarget.h" 20 #include "MipsTargetMachine.h" 21 #include "llvm/CodeGen/SelectionDAGISel.h" 22 23 24 //===----------------------------------------------------------------------===// 25 // Instruction Selector Implementation 26 //===----------------------------------------------------------------------===// 27 28 //===----------------------------------------------------------------------===// 29 // MipsModuleDAGToDAGISel - MIPS specific code to select MIPS machine 30 // instructions for SelectionDAG operations. 31 //===----------------------------------------------------------------------===// 32 namespace llvm { 33 34 class MipsModuleDAGToDAGISel : public MachineFunctionPass { 35 public: 36 37 static char ID; 38 MipsModuleDAGToDAGISel(MipsTargetMachine & TM_)39 explicit MipsModuleDAGToDAGISel(MipsTargetMachine &TM_) 40 : MachineFunctionPass(ID), TM(TM_) {} 41 42 // Pass Name getPassName()43 const char *getPassName() const override { 44 return "MIPS DAG->DAG Pattern Instruction Selection"; 45 } 46 47 bool runOnMachineFunction(MachineFunction &MF) override; 48 49 protected: 50 MipsTargetMachine &TM; 51 }; 52 53 /// createMipsISelDag - This pass converts a legalized DAG into a 54 /// MIPS-specific DAG, ready for instruction scheduling. 55 FunctionPass *createMipsModuleISelDag(MipsTargetMachine &TM); 56 } 57 58 #endif 59