LLVM API Documentation

Functions
IntrinsicLowering.cpp File Reference
#include "llvm/CodeGen/IntrinsicLowering.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/IR/CallSite.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"
Include dependency graph for IntrinsicLowering.cpp:

Go to the source code of this file.

Functions

template<class ArgIt >
static void EnsureFunctionExists (Module &M, const char *Name, ArgIt ArgBegin, ArgIt ArgEnd, Type *RetTy)
static void EnsureFPIntrinsicsExist (Module &M, Function *Fn, const char *FName, const char *DName, const char *LDName)
template<class ArgIt >
static CallInstReplaceCallWith (const char *NewFn, CallInst *CI, ArgIt ArgBegin, ArgIt ArgEnd, Type *RetTy)
static ValueLowerBSWAP (LLVMContext &Context, Value *V, Instruction *IP)
static ValueLowerCTPOP (LLVMContext &Context, Value *V, Instruction *IP)
static ValueLowerCTLZ (LLVMContext &Context, Value *V, Instruction *IP)
static void ReplaceFPIntrinsicWithCall (CallInst *CI, const char *Fname, const char *Dname, const char *LDname)

Function Documentation

static void EnsureFPIntrinsicsExist ( Module M,
Function Fn,
const char *  FName,
const char *  DName,
const char *  LDName 
) [static]
template<class ArgIt >
static void EnsureFunctionExists ( Module M,
const char *  Name,
ArgIt  ArgBegin,
ArgIt  ArgEnd,
Type RetTy 
) [static]
static Value* LowerBSWAP ( LLVMContext Context,
Value V,
Instruction IP 
) [static]
static Value* LowerCTLZ ( LLVMContext Context,
Value V,
Instruction IP 
) [static]

LowerCTLZ - Emit the code to lower ctlz of V before the specified instruction IP.

Definition at line 302 of file IntrinsicLowering.cpp.

References llvm::ConstantInt::get(), llvm::Instruction::getParent(), llvm::Type::getPrimitiveSizeInBits(), llvm::Value::getType(), and LowerCTPOP().

Referenced by llvm::IntrinsicLowering::LowerIntrinsicCall().

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

LowerCTPOP - Emit the code to lower ctpop of V before the specified instruction IP.

Definition at line 262 of file IntrinsicLowering.cpp.

References llvm::ConstantInt::get(), llvm::Instruction::getParent(), llvm::Type::getPrimitiveSizeInBits(), llvm::Value::getType(), and llvm::Type::isIntegerTy().

Referenced by LowerCTLZ(), and llvm::IntrinsicLowering::LowerIntrinsicCall().

template<class ArgIt >
static CallInst* ReplaceCallWith ( const char *  NewFn,
CallInst CI,
ArgIt  ArgBegin,
ArgIt  ArgEnd,
Type RetTy 
) [static]

ReplaceCallWith - 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, and if that prototype doesn't match the arguments we expect to pass in.

Definition at line 65 of file IntrinsicLowering.cpp.

References llvm::FunctionType::get(), llvm::Value::getName(), llvm::Module::getOrInsertFunction(), llvm::Instruction::getParent(), llvm::BasicBlock::getParent(), llvm::GlobalValue::getParent(), I, llvm::Value::replaceAllUsesWith(), llvm::Value::setName(), and llvm::Value::use_empty().

Referenced by llvm::IntrinsicLowering::LowerIntrinsicCall(), and ReplaceFPIntrinsicWithCall().

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