LLVM API Documentation
#include <IntrinsicLowering.h>
Inheritance diagram for llvm::DefaultIntrinsicLowering:
Public Member Functions | |
virtual void | AddPrototypes (Module &M) |
virtual void | LowerIntrinsicCall (CallInst *CI) |
Definition at line 69 of file IntrinsicLowering.h.
void DefaultIntrinsicLowering::AddPrototypes | ( | Module & | M | ) | [virtual] |
AddPrototypes - This method, if called, causes all of the prototypes that might be needed by an intrinsic lowering implementation to be inserted into the module specified.
Implements llvm::IntrinsicLowering.
Definition at line 85 of file IntrinsicLowering.cpp.
References llvm::Module::begin(), llvm::Type::BoolTy, llvm::Type::DoubleTy, E, llvm::Module::end(), EnsureFunctionExists(), llvm::Type::FloatTy, llvm::PointerType::get(), llvm::Type::IntTy, llvm::Intrinsic::isunordered_f32, llvm::Intrinsic::isunordered_f64, llvm::Intrinsic::longjmp, M, llvm::Intrinsic::memcpy_i32, llvm::Intrinsic::memcpy_i64, llvm::Intrinsic::memmove_i32, llvm::Intrinsic::memmove_i64, llvm::Intrinsic::memset_i32, llvm::Intrinsic::memset_i64, llvm::Type::SByteTy, llvm::Intrinsic::setjmp, llvm::Intrinsic::siglongjmp, llvm::Intrinsic::sqrt_f32, llvm::Intrinsic::sqrt_f64, and llvm::Type::VoidTy.
void DefaultIntrinsicLowering::LowerIntrinsicCall | ( | CallInst * | CI | ) | [virtual] |
LowerIntrinsicCall - This method returns the LLVM function which should be used to implement the specified intrinsic function call. If an intrinsic function must be implemented by the code generator (such as va_start), this function should print a message and abort.
Otherwise, if an intrinsic function call can be lowered, the code to implement it (often a call to a non-intrinsic function) is inserted _after_ the call instruction and the call is deleted. The caller must be capable of handling this kind of change.
Implements llvm::IntrinsicLowering.
Definition at line 289 of file IntrinsicLowering.cpp.
References llvm::Intrinsic::bswap_i16, llvm::Intrinsic::bswap_i32, llvm::Intrinsic::bswap_i64, llvm::BinaryOperator::create(), llvm::BinaryOperator::createNot(), llvm::Intrinsic::ctlz_i16, llvm::Intrinsic::ctlz_i32, llvm::Intrinsic::ctlz_i64, llvm::Intrinsic::ctlz_i8, llvm::Intrinsic::ctpop_i16, llvm::Intrinsic::ctpop_i32, llvm::Intrinsic::ctpop_i64, llvm::Intrinsic::ctpop_i8, llvm::Intrinsic::cttz_i16, llvm::Intrinsic::cttz_i32, llvm::Intrinsic::cttz_i64, llvm::Intrinsic::cttz_i8, llvm::Intrinsic::dbg_declare, llvm::Intrinsic::dbg_func_start, llvm::Intrinsic::dbg_region_end, llvm::Intrinsic::dbg_region_start, llvm::Intrinsic::dbg_stoppoint, llvm::Type::DoubleTy, llvm::Instruction::eraseFromParent(), llvm::Type::FloatTy, llvm::Intrinsic::frameaddress, llvm::ConstantUInt::get(), llvm::ConstantPointerNull::get(), llvm::ConstantInt::get(), llvm::CallInst::getCalledFunction(), llvm::Function::getIntrinsicID(), llvm::Value::getName(), llvm::Constant::getNullValue(), llvm::User::getOperand(), llvm::Value::getType(), llvm::Type::IntTy, llvm::Intrinsic::isunordered_f32, llvm::Intrinsic::isunordered_f64, llvm::Intrinsic::longjmp, LowerBSWAP(), LowerCTLZ(), LowerCTPOP(), llvm::Intrinsic::memcpy_i32, llvm::Intrinsic::memcpy_i64, llvm::Intrinsic::memmove_i32, llvm::Intrinsic::memmove_i64, llvm::Intrinsic::memset_i32, llvm::Intrinsic::memset_i64, llvm::Intrinsic::not_intrinsic, llvm::User::op_begin(), llvm::User::op_end(), llvm::Intrinsic::pcmarker, llvm::Intrinsic::prefetch, R, llvm::Intrinsic::readcyclecounter, llvm::Value::replaceAllUsesWith(), ReplaceCallWith(), llvm::Intrinsic::returnaddress, llvm::Intrinsic::setjmp, llvm::Intrinsic::siglongjmp, llvm::Intrinsic::sigsetjmp, llvm::Intrinsic::sqrt_f32, llvm::Intrinsic::sqrt_f64, Src, llvm::Intrinsic::stackrestore, llvm::Intrinsic::stacksave, llvm::Type::ULongTy, llvm::Value::use_empty(), V, and llvm::Type::VoidTy.