LLVM API Documentation
#include <IntrinsicLowering.h>
Public Member Functions | |
| IntrinsicLowering (const TargetData &td) | |
| void | AddPrototypes (Module &M) |
| void | LowerIntrinsicCall (CallInst *CI) |
Definition at line 26 of file IntrinsicLowering.h.
| llvm::IntrinsicLowering::IntrinsicLowering | ( | const TargetData & | td | ) | [inline, explicit] |
Definition at line 29 of file IntrinsicLowering.h.
| void IntrinsicLowering::AddPrototypes | ( | Module & | M | ) |
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.
Definition at line 84 of file IntrinsicLowering.cpp.
References llvm::Module::begin(), llvm::Intrinsic::cos, E, llvm::Module::end(), EnsureFPIntrinsicsExist(), EnsureFunctionExists(), llvm::Intrinsic::exp, llvm::Intrinsic::exp2, llvm::TargetData::getIntPtrType(), llvm::Module::getOrInsertFunction(), llvm::PointerType::getUnqual(), llvm::Type::Int32Ty, llvm::Type::Int8Ty, llvm::Intrinsic::log, llvm::Intrinsic::log10, llvm::Intrinsic::log2, llvm::Intrinsic::longjmp, llvm::Intrinsic::memcpy, llvm::Intrinsic::memmove, llvm::Intrinsic::memset, llvm::Intrinsic::pow, llvm::Intrinsic::setjmp, llvm::Intrinsic::siglongjmp, llvm::Intrinsic::sin, llvm::Intrinsic::sqrt, and llvm::Type::VoidTy.
| void IntrinsicLowering::LowerIntrinsicCall | ( | CallInst * | CI | ) |
LowerIntrinsicCall - This method replaces a call with 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.
Definition at line 654 of file IntrinsicLowering.cpp.
References llvm::Intrinsic::bswap, llvm::cerr(), llvm::BinaryOperator::CreateNot(), llvm::Intrinsic::ctlz, llvm::Intrinsic::ctpop, llvm::Intrinsic::cttz, llvm::Intrinsic::dbg_declare, llvm::Intrinsic::dbg_func_start, llvm::Intrinsic::dbg_region_end, llvm::Intrinsic::dbg_region_start, llvm::Intrinsic::dbg_stoppoint, llvm::Intrinsic::eh_exception, llvm::Intrinsic::eh_selector_i32, llvm::Intrinsic::eh_selector_i64, llvm::Intrinsic::eh_typeid_for_i32, llvm::Intrinsic::eh_typeid_for_i64, llvm::Instruction::eraseFromParent(), llvm::Intrinsic::exp, llvm::Intrinsic::exp2, llvm::Intrinsic::flt_rounds, llvm::Intrinsic::frameaddress, llvm::ConstantPointerNull::get(), llvm::ConstantInt::get(), llvm::CallInst::getCalledFunction(), llvm::TargetData::getIntPtrType(), llvm::Function::getIntrinsicID(), llvm::Value::getName(), llvm::Constant::getNullValue(), llvm::User::getOperand(), llvm::Type::getPrimitiveSizeInBits(), llvm::Value::getType(), llvm::Type::Int32Ty, llvm::Type::Int64Ty, llvm::Intrinsic::log, llvm::Intrinsic::log10, llvm::Intrinsic::log2, llvm::Intrinsic::longjmp, LowerBSWAP(), LowerCTLZ(), LowerCTPOP(), LowerPartSelect(), LowerPartSet(), llvm::Intrinsic::memcpy, llvm::Intrinsic::memmove, llvm::Intrinsic::memset, llvm::Intrinsic::not_intrinsic, llvm::User::op_begin(), llvm::User::op_end(), llvm::Intrinsic::part_select, llvm::Intrinsic::part_set, llvm::Intrinsic::pcmarker, llvm::Intrinsic::pow, llvm::Intrinsic::prefetch, llvm::Intrinsic::readcyclecounter, llvm::Value::replaceAllUsesWith(), ReplaceCallWith(), ReplaceFPIntrinsicWithCall(), llvm::Intrinsic::returnaddress, llvm::Intrinsic::setjmp, llvm::Intrinsic::siglongjmp, llvm::Intrinsic::sigsetjmp, llvm::Intrinsic::sqrt, Src, llvm::Intrinsic::stackrestore, llvm::Intrinsic::stacksave, llvm::Value::use_empty(), V, llvm::Intrinsic::var_annotation, and llvm::Type::VoidTy.
Referenced by llvm::Interpreter::visitCallSite().