#include "MipsTargetMachine.h"
#include "llvm/CodeGen/TargetPassConfig.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Value.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ModRef.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <string>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "mips16-hard-float" |
Typedefs | |
using | TypeID =Type::TypeID |
Enumerations | |
enum | FPReturnVariant { FRet,DRet,CFRet,CDRet, NoFPRet } |
enum | FPParamVariant { FSig,FFSig,FDSig,DSig, DDSig,DFSig,NoSig } |
Functions | |
static void | emitInlineAsm (LLVMContext &C,BasicBlock *BB,StringRef AsmText) |
staticFPReturnVariant | whichFPReturnVariant (Type *T) |
staticFPParamVariant | whichFPParamVariantNeeded (Function &F) |
staticbool | needsFPStubFromParams (Function &F) |
staticbool | needsFPReturnHelper (Function &F) |
staticbool | needsFPReturnHelper (FunctionType &FT) |
staticbool | needsFPHelperFromSig (Function &F) |
static std::string | swapFPIntParams (FPParamVariant PV,Module *M,bool LE,bool ToFP) |
static void | assureFPCallStub (Function &F,Module *M,constMipsTargetMachine &TM) |
staticbool | isIntrinsicInline (Function *F) |
staticbool | fixupFPReturnAndCall (Function &F,Module *M,constMipsTargetMachine &TM) |
static void | createFPFnStub (Function *F,Module *M,FPParamVariant PV,constMipsTargetMachine &TM) |
static void | removeUseSoftFloat (Function &F) |
Variables | |
constType::TypeID | FloatTyID = Type::FloatTyID |
constType::TypeID | DoubleTyID = Type::DoubleTyID |
staticconstchar *const | IntrinsicInline [] |
#define DEBUG_TYPE "mips16-hard-float" |
Definition at line25 of fileMips16HardFloat.cpp.
usingTypeID =Type::TypeID |
Definition at line103 of fileMips16HardFloat.cpp.
enumFPParamVariant |
Enumerator | |
---|---|
FSig | |
FFSig | |
FDSig | |
DSig | |
DDSig | |
DFSig | |
NoSig |
Definition at line97 of fileMips16HardFloat.cpp.
enumFPReturnVariant |
Enumerator | |
---|---|
FRet | |
DRet | |
CFRet | |
CDRet | |
NoFPRet |
Definition at line64 of fileMips16HardFloat.cpp.
| static |
Definition at line257 of fileMips16HardFloat.cpp.
Referencesllvm::Function::addFnAttr(),CDRet,CFRet,llvm::Function::Create(),llvm::BasicBlock::Create(),DRet,emitInlineAsm(),F,FRet,llvm::Function::getReturnType(),llvm::GlobalValue::isDeclaration(),Name,NoFPRet,llvm::GlobalObject::setSection(),swapFPIntParams(),whichFPParamVariantNeeded(), andwhichFPReturnVariant().
Referenced byfixupFPReturnAndCall().
| static |
Definition at line445 of fileMips16HardFloat.cpp.
Referencesllvm::Function::addFnAttr(),llvm::Function::Create(),llvm::BasicBlock::Create(),emitInlineAsm(),F,llvm::Function::getContext(),Name,llvm::GlobalObject::setSection(), andswapFPIntParams().
| static |
Definition at line47 of fileMips16HardFloat.cpp.
Referencesllvm::InlineAsm::AD_ATT,llvm::CallingConv::C,llvm::CallInst::Create(),llvm::InlineAsm::get(), andllvm::Type::getVoidTy().
Referenced byassureFPCallStub(), andcreateFPFnStub().
| static |
Definition at line378 of fileMips16HardFloat.cpp.
ReferencesA,assureFPCallStub(),llvm::CallingConv::C,llvm::CallInst::Create(),F,llvm::Value::getType(),llvm::Type::getVoidTy(),llvm::Attribute::getWithMemoryEffects(),I,isIntrinsicInline(),Modified,Name,needsFPHelperFromSig(),needsFPReturnHelper(),NoFPRet,llvm::MemoryEffectsBase< LocationEnum >::none(), andwhichFPReturnVariant().
Definition at line371 of fileMips16HardFloat.cpp.
ReferencesF, andIntrinsicInline.
Referenced byfixupFPReturnAndCall().
Definition at line181 of fileMips16HardFloat.cpp.
ReferencesF,needsFPReturnHelper(), andneedsFPStubFromParams().
Referenced byfixupFPReturnAndCall().
Definition at line171 of fileMips16HardFloat.cpp.
ReferencesF,NoFPRet, andwhichFPReturnVariant().
Referenced byfixupFPReturnAndCall(), andneedsFPHelperFromSig().
| static |
Definition at line176 of fileMips16HardFloat.cpp.
ReferencesNoFPRet, andwhichFPReturnVariant().
Definition at line157 of fileMips16HardFloat.cpp.
Referencesllvm::Type::DoubleTyID,F,llvm::Type::FloatTyID, andllvm::Type::getTypeID().
Referenced byneedsFPHelperFromSig().
| static |
Definition at line483 of fileMips16HardFloat.cpp.
Referencesllvm::errs(),F, andLLVM_DEBUG.
| static |
Definition at line187 of fileMips16HardFloat.cpp.
ReferencesDDSig,DFSig,DSig,FDSig,FFSig,FSig,MI, andNoSig.
Referenced byassureFPCallStub(), andcreateFPFnStub().
| static |
Definition at line107 of fileMips16HardFloat.cpp.
ReferencesDDSig,DFSig,DoubleTyID,DSig,F,FDSig,FFSig,FloatTyID,FSig,llvm_unreachable, andNoSig.
Referenced byassureFPCallStub().
| static |
Definition at line71 of fileMips16HardFloat.cpp.
ReferencesCDRet,CFRet,llvm::Type::DoubleTyID,DRet,llvm::Type::FloatTyID,FRet,NoFPRet, andllvm::Type::StructTyID.
Referenced byassureFPCallStub(),fixupFPReturnAndCall(), andneedsFPReturnHelper().
constType::TypeID DoubleTyID = Type::DoubleTyID |
Definition at line105 of fileMips16HardFloat.cpp.
Referenced bywhichFPParamVariantNeeded().
constType::TypeID FloatTyID = Type::FloatTyID |
Definition at line104 of fileMips16HardFloat.cpp.
Referenced bywhichFPParamVariantNeeded().
Definition at line349 of fileMips16HardFloat.cpp.
Referenced byisIntrinsicInline().