LLVM 20.0.0git
Functions
IntrinsicLowering.cpp File Reference
#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 CallInstReplaceCallWith (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 ValueLowerBSWAP (LLVMContext &Context, Value *V, Instruction *IP)
 Emit the code to lower bswap of V before the specified instruction IP.
 
static ValueLowerCTPOP (LLVMContext &Context, Value *V, Instruction *IP)
 Emit the code to lower ctpop of V before the specified instruction IP.
 
static ValueLowerCTLZ (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)
 

Function Documentation

◆ LowerBSWAP()

static Value * LowerBSWAP ( LLVMContext Context,
Value V,
Instruction IP 
)
static

◆ LowerCTLZ()

static Value * LowerCTLZ ( LLVMContext Context,
Value V,
Instruction IP 
)
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().

◆ LowerCTPOP()

static Value * LowerCTPOP ( LLVMContext Context,
Value V,
Instruction IP 
)
static

◆ ReplaceCallWith()

template<class ArgIt >
static CallInst * ReplaceCallWith ( const char NewFn,
CallInst CI,
ArgIt  ArgBegin,
ArgIt  ArgEnd,
Type RetTy 
)
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().

◆ ReplaceFPIntrinsicWithCall()

static void ReplaceFPIntrinsicWithCall ( CallInst CI,
const char Fname,
const char Dname,
const char LDname 
)
static