LLVM  4.0.0
Macros | Typedefs | Enumerations | Functions | Variables
Mips16HardFloat.cpp File Reference
#include "MipsTargetMachine.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <string>
Include dependency graph for Mips16HardFloat.cpp:

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "mips16-hard-float"
 

Typedefs

typedef Type::TypeID TypeID
 

Enumerations

enum  FPReturnVariant {
  FRet, DRet, CFRet, CDRet,
  NoFPRet
}
 
enum  FPParamVariant {
  FSig, FFSig, FDSig, DSig,
  DDSig, DFSig, NoSig
}
 

Functions

static FPReturnVariant whichFPReturnVariant (Type *T)
 
static FPParamVariant whichFPParamVariantNeeded (Function &F)
 
static bool needsFPStubFromParams (Function &F)
 
static bool needsFPReturnHelper (Function &F)
 
static bool needsFPReturnHelper (FunctionType &FT)
 
static bool needsFPHelperFromSig (Function &F)
 
static std::string swapFPIntParams (FPParamVariant PV, Module *M, bool LE, bool ToFP)
 
static void assureFPCallStub (Function &F, Module *M, const MipsTargetMachine &TM)
 
static bool isIntrinsicInline (Function *F)
 
static bool fixupFPReturnAndCall (Function &F, Module *M, const MipsTargetMachine &TM)
 
static void createFPFnStub (Function *F, Module *M, FPParamVariant PV, const MipsTargetMachine &TM)
 
static void removeUseSoftFloat (Function &F)
 

Variables

const Type::TypeID FloatTyID = Type::FloatTyID
 
const Type::TypeID DoubleTyID = Type::DoubleTyID
 
static const char *const IntrinsicInline []
 

Macro Definition Documentation

#define DEBUG_TYPE   "mips16-hard-float"

Definition at line 24 of file Mips16HardFloat.cpp.

Typedef Documentation

Definition at line 100 of file Mips16HardFloat.cpp.

Enumeration Type Documentation

Enumerator
FSig 
FFSig 
FDSig 
DSig 
DDSig 
DFSig 
NoSig 

Definition at line 93 of file Mips16HardFloat.cpp.

Enumerator
FRet 
DRet 
CFRet 
CDRet 
NoFPRet 

Definition at line 60 of file Mips16HardFloat.cpp.

Function Documentation

static void assureFPCallStub ( Function F,
Module M,
const MipsTargetMachine TM 
)
static
static void createFPFnStub ( Function F,
Module M,
FPParamVariant  PV,
const MipsTargetMachine TM 
)
static
static bool fixupFPReturnAndCall ( Function F,
Module M,
const MipsTargetMachine TM 
)
static
static bool isIntrinsicInline ( Function F)
static
static bool needsFPHelperFromSig ( Function F)
static

Definition at line 179 of file Mips16HardFloat.cpp.

References needsFPReturnHelper(), and needsFPStubFromParams().

Referenced by fixupFPReturnAndCall().

static bool needsFPReturnHelper ( Function F)
static
static bool needsFPReturnHelper ( FunctionType FT)
static
static bool needsFPStubFromParams ( Function F)
static
static void removeUseSoftFloat ( Function F)
static
static std::string swapFPIntParams ( FPParamVariant  PV,
Module M,
bool  LE,
bool  ToFP 
)
static

Definition at line 187 of file Mips16HardFloat.cpp.

References DDSig, DFSig, DSig, FDSig, FFSig, FSig, MI, and NoSig.

Referenced by assureFPCallStub(), and createFPFnStub().

static FPParamVariant whichFPParamVariantNeeded ( Function F)
static
static FPReturnVariant whichFPReturnVariant ( Type T)
static

Variable Documentation

const Type::TypeID DoubleTyID = Type::DoubleTyID

Definition at line 102 of file Mips16HardFloat.cpp.

Referenced by whichFPParamVariantNeeded().

const Type::TypeID FloatTyID = Type::FloatTyID

Definition at line 101 of file Mips16HardFloat.cpp.

Referenced by whichFPParamVariantNeeded().

const char* const IntrinsicInline[]
static
Initial value:
= {
"fabs", "fabsf",
"llvm.ceil.f32", "llvm.ceil.f64",
"llvm.copysign.f32", "llvm.copysign.f64",
"llvm.cos.f32", "llvm.cos.f64",
"llvm.exp.f32", "llvm.exp.f64",
"llvm.exp2.f32", "llvm.exp2.f64",
"llvm.fabs.f32", "llvm.fabs.f64",
"llvm.floor.f32", "llvm.floor.f64",
"llvm.fma.f32", "llvm.fma.f64",
"llvm.log.f32", "llvm.log.f64",
"llvm.log10.f32", "llvm.log10.f64",
"llvm.nearbyint.f32", "llvm.nearbyint.f64",
"llvm.pow.f32", "llvm.pow.f64",
"llvm.powi.f32", "llvm.powi.f64",
"llvm.rint.f32", "llvm.rint.f64",
"llvm.round.f32", "llvm.round.f64",
"llvm.sin.f32", "llvm.sin.f64",
"llvm.sqrt.f32", "llvm.sqrt.f64",
"llvm.trunc.f32", "llvm.trunc.f64",
}

Definition at line 353 of file Mips16HardFloat.cpp.

Referenced by isIntrinsicInline().