LLVM API Documentation

Namespaces | Defines | Typedefs | Enumerations | Functions | Variables
Mips16HardFloat.cpp File Reference
#include "Mips16HardFloat.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.

Namespaces

namespace  llvm
 

List of target independent CodeGen pass IDs.


Defines

#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 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 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 []

Define Documentation

#define DEBUG_TYPE   "mips16-hard-float"

Definition at line 22 of file Mips16HardFloat.cpp.


Typedef Documentation

Definition at line 98 of file Mips16HardFloat.cpp.


Enumeration Type Documentation

Enumerator:
FSig 
FFSig 
FDSig 
DSig 
DDSig 
DFSig 
NoSig 

Definition at line 91 of file Mips16HardFloat.cpp.

Enumerator:
FRet 
DRet 
CFRet 
CDRet 
NoFPRet 

Definition at line 58 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]
static bool needsFPHelperFromSig ( Function F) [static]

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

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

Referenced by assureFPCallStub(), and createFPFnStub().

static FPReturnVariant whichFPReturnVariant ( Type T) [static]

Variable Documentation

Definition at line 100 of file Mips16HardFloat.cpp.

Referenced by needsFPStubFromParams(), and whichFPReturnVariant().

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