1251607Sdim//===----------------------------------------------------------------------===// 2251607Sdim// Instruction Selector Subtarget Control 3251607Sdim//===----------------------------------------------------------------------===// 4251607Sdim 5251607Sdim//===----------------------------------------------------------------------===// 6251607Sdim// This file defines a pass used to change the subtarget for the 7251607Sdim// Mips Instruction selector. 8251607Sdim// 9251607Sdim//===----------------------------------------------------------------------===// 10251607Sdim 11288943Sdim#include "Mips.h" 12288943Sdim#include "MipsTargetMachine.h" 13251607Sdim#include "llvm/Support/Debug.h" 14251607Sdim#include "llvm/Support/raw_ostream.h" 15251607Sdim 16288943Sdimusing namespace llvm; 17288943Sdim 18276479Sdim#define DEBUG_TYPE "mips-isel" 19276479Sdim 20288943Sdimnamespace { 21288943Sdim class MipsModuleDAGToDAGISel : public MachineFunctionPass { 22288943Sdim public: 23288943Sdim static char ID; 24251607Sdim 25288943Sdim explicit MipsModuleDAGToDAGISel(MipsTargetMachine &TM_) 26288943Sdim : MachineFunctionPass(ID), TM(TM_) {} 27288943Sdim 28288943Sdim // Pass Name 29288943Sdim const char *getPassName() const override { 30288943Sdim return "MIPS DAG->DAG Pattern Instruction Selection"; 31288943Sdim } 32288943Sdim 33288943Sdim bool runOnMachineFunction(MachineFunction &MF) override; 34288943Sdim 35288943Sdim protected: 36288943Sdim MipsTargetMachine &TM; 37288943Sdim }; 38288943Sdim 39288943Sdim char MipsModuleDAGToDAGISel::ID = 0; 40288943Sdim} 41288943Sdim 42251607Sdimbool MipsModuleDAGToDAGISel::runOnMachineFunction(MachineFunction &MF) { 43251607Sdim DEBUG(errs() << "In MipsModuleDAGToDAGISel::runMachineFunction\n"); 44276479Sdim TM.resetSubtarget(&MF); 45251607Sdim return false; 46251607Sdim} 47251607Sdim 48288943Sdimllvm::FunctionPass *llvm::createMipsModuleISelDagPass(MipsTargetMachine &TM) { 49251607Sdim return new MipsModuleDAGToDAGISel(TM); 50251607Sdim} 51