1 //===---- Mips16HardFloat.h for Mips16 Hard Float --------===// 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 phase which implements part of the floating point 11 // interoperability between Mips16 and Mips32 code. 12 // 13 //===----------------------------------------------------------------------===// 14 15 #ifndef LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOAT_H 16 #define LLVM_LIB_TARGET_MIPS_MIPS16HARDFLOAT_H 17 18 #include "MCTargetDesc/MipsMCTargetDesc.h" 19 #include "MipsTargetMachine.h" 20 #include "llvm/Pass.h" 21 #include "llvm/Target/TargetMachine.h" 22 23 using namespace llvm; 24 25 namespace llvm { 26 27 class Mips16HardFloat : public ModulePass { 28 public: 29 static char ID; 30 Mips16HardFloat(MipsTargetMachine & TM_)31 Mips16HardFloat(MipsTargetMachine &TM_) : ModulePass(ID), TM(TM_) {} 32 getPassName()33 const char *getPassName() const override { return "MIPS16 Hard Float Pass"; } 34 bool runOnModule(Module &M) override; 35 36 protected: 37 const MipsTargetMachine &TM; 38 }; 39 40 ModulePass *createMips16HardFloat(MipsTargetMachine &TM); 41 42 } 43 #endif 44