LLVM 20.0.0git
|
#include "llvm/CodeGen/IntrinsicLowering.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/IR/Constants.h"
#include "llvm/IR/DataLayout.h"
#include "llvm/IR/DerivedTypes.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Module.h"
#include "llvm/IR/Type.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/raw_ostream.h"
Go to the source code of this file.
Functions | |
template<class ArgIt > | |
static CallInst * | ReplaceCallWith (const char *NewFn, CallInst *CI, ArgIt ArgBegin, ArgIt ArgEnd, Type *RetTy) |
This function is used when we want to lower an intrinsic call to a call of an external function. | |
static Value * | LowerBSWAP (LLVMContext &Context, Value *V, Instruction *IP) |
Emit the code to lower bswap of V before the specified instruction IP. | |
static Value * | LowerCTPOP (LLVMContext &Context, Value *V, Instruction *IP) |
Emit the code to lower ctpop of V before the specified instruction IP. | |
static Value * | LowerCTLZ (LLVMContext &Context, Value *V, Instruction *IP) |
Emit the code to lower ctlz of V before the specified instruction IP. | |
static void | ReplaceFPIntrinsicWithCall (CallInst *CI, const char *Fname, const char *Dname, const char *LDname) |
|
static |
Emit the code to lower bswap of V before the specified instruction IP.
Definition at line 53 of file IntrinsicLowering.cpp.
References assert(), llvm::IRBuilderBase::CreateAnd(), llvm::IRBuilderBase::CreateLShr(), llvm::IRBuilderBase::CreateOr(), llvm::IRBuilderBase::CreateShl(), and llvm_unreachable.
Referenced by llvm::IntrinsicLowering::LowerIntrinsicCall().
|
static |
Emit the code to lower ctlz of V before the specified instruction IP.
Definition at line 187 of file IntrinsicLowering.cpp.
References llvm::IRBuilderBase::CreateLShr(), llvm::IRBuilderBase::CreateNot(), llvm::IRBuilderBase::CreateOr(), and LowerCTPOP().
Referenced by llvm::IntrinsicLowering::LowerIntrinsicCall(), and llvm::X86TargetLowering::LowerOperation().
|
static |
Emit the code to lower ctpop of V before the specified instruction IP.
Definition at line 148 of file IntrinsicLowering.cpp.
References assert(), llvm::IRBuilderBase::CreateAdd(), llvm::IRBuilderBase::CreateAnd(), llvm::IRBuilderBase::CreateLShr(), LHS, and RHS.
Referenced by LowerCTLZ(), llvm::IntrinsicLowering::LowerIntrinsicCall(), llvm::ARMTargetLowering::LowerOperation(), and llvm::X86TargetLowering::LowerOperation().
|
static |
This function is used when we want to lower an intrinsic call to a call of an external function.
This handles hard cases such as when there was already a prototype for the external function, but that prototype doesn't match the arguments we expect to pass in.
Definition at line 30 of file IntrinsicLowering.cpp.
References llvm::IRBuilderBase::CreateCall(), llvm::ilist_node_impl< OptionsT >::getIterator(), llvm::Instruction::getModule(), llvm::Value::getName(), llvm::ilist_detail::node_parent_access< NodeTy, ParentTy >::getParent(), I, llvm::Value::replaceAllUsesWith(), RetTy, llvm::Value::setName(), and llvm::Value::use_empty().
Referenced by llvm::IntrinsicLowering::LowerIntrinsicCall(), and ReplaceFPIntrinsicWithCall().
|
static |
Definition at line 202 of file IntrinsicLowering.cpp.
References llvm::CallBase::arg_begin(), llvm::CallBase::arg_end(), llvm::Type::DoubleTyID, llvm::Type::FloatTyID, llvm::Type::FP128TyID, llvm::CallBase::getArgOperand(), llvm::Value::getContext(), llvm::Type::getDoubleTy(), llvm::Type::getFloatTy(), llvm::Value::getType(), llvm::Type::getTypeID(), llvm_unreachable, llvm::Type::PPC_FP128TyID, ReplaceCallWith(), and llvm::Type::X86_FP80TyID.
Referenced by llvm::IntrinsicLowering::LowerIntrinsicCall().