LLVM API Documentation

llvm::DefaultIntrinsicLowering Struct Reference

#include <IntrinsicLowering.h>

Inheritance diagram for llvm::DefaultIntrinsicLowering:

Inheritance graph
[legend]
Collaboration diagram for llvm::DefaultIntrinsicLowering:

Collaboration graph
[legend]
List of all members.

Public Member Functions

virtual void AddPrototypes (Module &M)
virtual void LowerIntrinsicCall (CallInst *CI)

Detailed Description

DefaultIntrinsicLower - This is the default intrinsic lowering pass which is used if no other one is specified. Custom intrinsic lowering implementations should pass any unhandled intrinsics to this implementation to allow for future extensibility.

Definition at line 69 of file IntrinsicLowering.h.


Member Function Documentation

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.


The documentation for this struct was generated from the following files: