LLVM
15.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(), BB, 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, M, NoFPRet, llvm::GlobalObject::setSection(), swapFPIntParams(), TM, whichFPParamVariantNeeded(), and whichFPReturnVariant().
Referenced by fixupFPReturnAndCall().
|
static |
Definition at line 443 of file Mips16HardFloat.cpp.
References llvm::Function::addFnAttr(), BB, Context, llvm::BasicBlock::Create(), llvm::Function::Create(), emitInlineAsm(), F, llvm::Function::getContext(), llvm::GlobalValue::InternalLinkage, llvm::AArch64CC::LE, M, llvm::GlobalObject::setSection(), swapFPIntParams(), and TM.
|
static |
Definition at line 46 of file Mips16HardFloat.cpp.
References llvm::InlineAsm::AD_ATT, BB, 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(), BB, llvm::CallInst::Create(), F, llvm::Value::getType(), llvm::Type::getVoidTy(), I, isIntrinsicInline(), M, Modified, needsFPHelperFromSig(), needsFPReturnHelper(), NoFPRet, TM, and whichFPReturnVariant().
|
static |
Definition at line 370 of file Mips16HardFloat.cpp.
References llvm::sys::path::begin(), llvm::sys::path::end(), F, and IntrinsicInline.
Referenced by fixupFPReturnAndCall().
|
static |
Definition at line 180 of file Mips16HardFloat.cpp.
References F, needsFPReturnHelper(), and needsFPStubFromParams().
Referenced by fixupFPReturnAndCall().
|
static |
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().
|
static |
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 481 of file Mips16HardFloat.cpp.
References llvm::errs(), F, 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().