LLVM  3.7.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 (const FunctionType &FT)
 
static bool needsFPHelperFromSig (Function &F)
 
static void swapFPIntParams (FPParamVariant PV, Module *M, InlineAsmHelper &IAH, 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 * IntrinsicInline []
 

Macro Definition Documentation

#define DEBUG_TYPE   "mips16-hard-float"

Definition at line 24 of file Mips16HardFloat.cpp.

Typedef Documentation

Definition at line 111 of file Mips16HardFloat.cpp.

Enumeration Type Documentation

Enumerator
FSig 
FFSig 
FDSig 
DSig 
DDSig 
DFSig 
NoSig 

Definition at line 104 of file Mips16HardFloat.cpp.

Enumerator
FRet 
DRet 
CFRet 
CDRet 
NoFPRet 

Definition at line 71 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 190 of file Mips16HardFloat.cpp.

References needsFPReturnHelper(), and needsFPStubFromParams().

Referenced by fixupFPReturnAndCall().

static bool needsFPReturnHelper ( Function F)
static
static bool needsFPReturnHelper ( const FunctionType FT)
static
static bool needsFPStubFromParams ( Function F)
static
static void removeUseSoftFloat ( Function F)
static
static void swapFPIntParams ( FPParamVariant  PV,
Module M,
InlineAsmHelper &  IAH,
bool  LE,
bool  ToFP 
)
static

Definition at line 198 of file Mips16HardFloat.cpp.

References DDSig, DFSig, DSig, FDSig, FFSig, FSig, llvm::AArch64CC::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 113 of file Mips16HardFloat.cpp.

Referenced by whichFPParamVariantNeeded().

const Type::TypeID FloatTyID = Type::FloatTyID

Definition at line 112 of file Mips16HardFloat.cpp.

Referenced by whichFPParamVariantNeeded().

const char* 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 346 of file Mips16HardFloat.cpp.

Referenced by isIntrinsicInline().