LLVM
12.0.0git
|
#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/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) |
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 [] |
#define DEBUG_TYPE "mips16-hard-float" |
Definition at line 24 of file Mips16HardFloat.cpp.
using TypeID = Type::TypeID |
Definition at line 102 of file Mips16HardFloat.cpp.
enum FPParamVariant |
Enumerator | |
---|---|
FSig | |
FFSig | |
FDSig | |
DSig | |
DDSig | |
DFSig | |
NoSig |
Definition at line 96 of file Mips16HardFloat.cpp.
enum FPReturnVariant |
Enumerator | |
---|---|
FRet | |
DRet | |
CFRet | |
CDRet | |
NoFPRet |
Definition at line 63 of file Mips16HardFloat.cpp.
|
static |
Definition at line 256 of file Mips16HardFloat.cpp.
References llvm::Function::addFnAttr(), CDRet, CFRet, Context, llvm::BasicBlock::Create(), llvm::Function::Create(), DRet, emitInlineAsm(), F(), FRet, llvm::Function::getReturnType(), llvm::GlobalValue::InternalLinkage, llvm::GlobalValue::isDeclaration(), llvm::AArch64CC::LE, NoFPRet, llvm::GlobalObject::setSection(), swapFPIntParams(), llvm::SystemZISD::TM, whichFPParamVariantNeeded(), and whichFPReturnVariant().
Referenced by fixupFPReturnAndCall().
|
static |
Definition at line 446 of file Mips16HardFloat.cpp.
References llvm::Function::addFnAttr(), Context, llvm::BasicBlock::Create(), llvm::Function::Create(), emitInlineAsm(), F(), llvm::Function::getContext(), llvm::GlobalValue::InternalLinkage, llvm::AArch64CC::LE, llvm::GlobalObject::setSection(), swapFPIntParams(), and llvm::SystemZISD::TM.
|
static |
Definition at line 46 of file Mips16HardFloat.cpp.
References llvm::InlineAsm::AD_ATT, C, llvm::CallInst::Create(), llvm::InlineAsm::get(), llvm::FunctionType::get(), and llvm::Type::getVoidTy().
Referenced by assureFPCallStub(), and createFPFnStub().
|
static |
Definition at line 377 of file Mips16HardFloat.cpp.
References assureFPCallStub(), C, llvm::CallInst::Create(), F(), llvm::AttributeList::FunctionIndex, llvm::Value::getType(), llvm::Type::getVoidTy(), I, isIntrinsicInline(), Modified, needsFPHelperFromSig(), needsFPReturnHelper(), NoFPRet, llvm::SystemZISD::TM, and whichFPReturnVariant().
Definition at line 370 of file Mips16HardFloat.cpp.
References llvm::sys::path::begin(), llvm::sys::path::end(), F(), and IntrinsicInline.
Referenced by fixupFPReturnAndCall().
Definition at line 180 of file Mips16HardFloat.cpp.
References F(), needsFPReturnHelper(), and needsFPStubFromParams().
Referenced by fixupFPReturnAndCall().
Definition at line 170 of file Mips16HardFloat.cpp.
References F(), NoFPRet, and whichFPReturnVariant().
Referenced by fixupFPReturnAndCall(), and needsFPHelperFromSig().
|
static |
Definition at line 175 of file Mips16HardFloat.cpp.
References llvm::FunctionType::getReturnType(), NoFPRet, and whichFPReturnVariant().
Definition at line 156 of file Mips16HardFloat.cpp.
References llvm::Type::DoubleTyID, F(), llvm::Type::FloatTyID, and llvm::Type::getTypeID().
Referenced by needsFPHelperFromSig().
|
static |
Definition at line 484 of file Mips16HardFloat.cpp.
References B, llvm::errs(), F(), llvm::AttributeList::FunctionIndex, and LLVM_DEBUG.
|
static |
Definition at line 186 of file Mips16HardFloat.cpp.
References DDSig, DFSig, DSig, FDSig, FFSig, FSig, llvm::AArch64CC::LE, MI, and NoSig.
Referenced by assureFPCallStub(), and createFPFnStub().
|
static |
Definition at line 106 of file Mips16HardFloat.cpp.
References DDSig, DFSig, DoubleTyID, DSig, F(), FDSig, FFSig, FloatTyID, FSig, llvm_unreachable, and NoSig.
Referenced by assureFPCallStub().
|
static |
Definition at line 70 of file Mips16HardFloat.cpp.
References CDRet, CFRet, llvm::Type::DoubleTyID, DRet, llvm::Type::FloatTyID, FRet, NoFPRet, llvm::ARM_MB::ST, and llvm::Type::StructTyID.
Referenced by assureFPCallStub(), fixupFPReturnAndCall(), and needsFPReturnHelper().
const Type::TypeID DoubleTyID = Type::DoubleTyID |
Definition at line 104 of file Mips16HardFloat.cpp.
Referenced by whichFPParamVariantNeeded().
const Type::TypeID FloatTyID = Type::FloatTyID |
Definition at line 103 of file Mips16HardFloat.cpp.
Referenced by whichFPParamVariantNeeded().
Definition at line 348 of file Mips16HardFloat.cpp.
Referenced by isIntrinsicInline().