LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Namespaces | Macros | Typedefs | Enumerations | Functions | Variables
Mips16HardFloat.cpp File Reference
#include "Mips16HardFloat.h"
#include "llvm/IR/Module.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.

Namespaces

 llvm
 List of target independent CodeGen pass IDs.
 

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 void inlineAsmOut (LLVMContext &C, StringRef AsmString, BasicBlock *BB)
 
static FPReturnVariant whichFPReturnVariant (Type *T)
 
static FPParamVariant whichFPParamVariantNeeded (Function &F)
 
static bool needsFPStubFromParams (Function &F)
 
static bool needsFPReturnHelper (Function &F)
 
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 MipsSubtarget &Subtarget)
 
static bool isIntrinsicInline (Function *F)
 
static bool fixupFPReturnAndCall (Function &F, Module *M, const MipsSubtarget &Subtarget)
 
static void createFPFnStub (Function *F, Module *M, FPParamVariant PV, const MipsSubtarget &Subtarget)
 
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 14 of file Mips16HardFloat.cpp.

Typedef Documentation

Definition at line 96 of file Mips16HardFloat.cpp.

Enumeration Type Documentation

Enumerator
FSig 
FFSig 
FDSig 
DSig 
DDSig 
DFSig 
NoSig 

Definition at line 89 of file Mips16HardFloat.cpp.

Enumerator
FRet 
DRet 
CFRet 
CDRet 
NoFPRet 

Definition at line 56 of file Mips16HardFloat.cpp.

Function Documentation

static void assureFPCallStub ( Function F,
Module M,
const MipsSubtarget Subtarget 
)
static
static void createFPFnStub ( Function F,
Module M,
FPParamVariant  PV,
const MipsSubtarget Subtarget 
)
static
static bool fixupFPReturnAndCall ( Function F,
Module M,
const MipsSubtarget Subtarget 
)
static
static void inlineAsmOut ( LLVMContext C,
StringRef  AsmString,
BasicBlock BB 
)
static
static bool isIntrinsicInline ( Function F)
static

Definition at line 350 of file Mips16HardFloat.cpp.

References llvm::array_endof(), and llvm::Value::getName().

Referenced by fixupFPReturnAndCall().

static bool needsFPHelperFromSig ( Function F)
static

Definition at line 170 of file Mips16HardFloat.cpp.

References needsFPReturnHelper(), and needsFPStubFromParams().

Referenced by fixupFPReturnAndCall().

static bool needsFPReturnHelper ( Function F)
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 180 of file Mips16HardFloat.cpp.

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

Referenced by needsFPStubFromParams(), and whichFPReturnVariant().

const Type::TypeID FloatTyID = Type::FloatTyID

Definition at line 97 of file Mips16HardFloat.cpp.

Referenced by needsFPStubFromParams(), and whichFPReturnVariant().

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 327 of file Mips16HardFloat.cpp.