Enzyme main
Loading...
Searching...
No Matches
TruncateGenerator Class Reference
Inheritance diagram for TruncateGenerator:
Collaboration diagram for TruncateGenerator:

Public Member Functions

 TruncateGenerator (ValueToValueMapTy &originalToNewFn, FloatTruncation truncation, Function *oldFunc, Function *newFunc, EnzymeLogic &Logic)
 
void checkHandled (llvm::Instruction &inst)
 
void handleTrunc ()
 
void hendleIntToFloat ()
 
void handleFloatToInt ()
 
void visitInstruction (llvm::Instruction &inst)
 
Value * truncate (IRBuilder<> &B, Value *v)
 
Value * expand (IRBuilder<> &B, Value *v)
 
void todo (llvm::Instruction &I)
 
void visitAllocaInst (llvm::AllocaInst &I)
 
void visitICmpInst (llvm::ICmpInst &I)
 
void visitFCmpInst (llvm::FCmpInst &CI)
 
void visitLoadInst (llvm::LoadInst &LI)
 
void visitStoreInst (llvm::StoreInst &SI)
 
void visitGetElementPtrInst (llvm::GetElementPtrInst &gep)
 
void visitPHINode (llvm::PHINode &phi)
 
void visitCastInst (llvm::CastInst &CI)
 
void visitSelectInst (llvm::SelectInst &SI)
 
void visitExtractElementInst (llvm::ExtractElementInst &EEI)
 
void visitInsertElementInst (llvm::InsertElementInst &EEI)
 
void visitShuffleVectorInst (llvm::ShuffleVectorInst &EEI)
 
void visitExtractValueInst (llvm::ExtractValueInst &EEI)
 
void visitInsertValueInst (llvm::InsertValueInst &EEI)
 
void visitBinaryOperator (llvm::BinaryOperator &BO)
 
void visitMemSetInst (llvm::MemSetInst &MS)
 
void visitMemSetCommon (llvm::CallInst &MS)
 
void visitMemTransferInst (llvm::MemTransferInst &MTI)
 
void visitMemTransferCommon (llvm::Intrinsic::ID ID, llvm::MaybeAlign srcAlign, llvm::MaybeAlign dstAlign, llvm::CallInst &MTI, llvm::Value *orig_dst, llvm::Value *orig_src, llvm::Value *new_size, llvm::Value *isVolatile)
 
void visitFenceInst (llvm::FenceInst &FI)
 
bool handleIntrinsic (llvm::CallInst &CI, Intrinsic::ID ID)
 
void visitIntrinsicInst (llvm::IntrinsicInst &II)
 
void visitReturnInst (llvm::ReturnInst &I)
 
void visitBranchInst (llvm::BranchInst &I)
 
void visitSwitchInst (llvm::SwitchInst &I)
 
void visitUnreachableInst (llvm::UnreachableInst &I)
 
void visitLoadLike (llvm::Instruction &I, llvm::MaybeAlign alignment, llvm::Value *mask=nullptr, llvm::Value *orig_maskInit=nullptr)
 
void visitCommonStore (llvm::Instruction &I, llvm::Value *orig_ptr, llvm::Value *orig_val, llvm::MaybeAlign prevalign, bool isVolatile, llvm::AtomicOrdering ordering, llvm::SyncScope::ID syncScope, llvm::Value *mask)
 
bool handleAdjointForIntrinsic (llvm::Intrinsic::ID ID, llvm::Instruction &I, llvm::SmallVectorImpl< llvm::Value * > &orig_ops)
 
llvm::Value * getNewFromOriginal (llvm::Value *v)
 
llvm::Instruction * getNewFromOriginal (llvm::Instruction *v)
 
bool handleKnownCalls (llvm::CallInst &call, llvm::Function *called, llvm::StringRef funcName, llvm::CallInst *const newCall)
 
Value * GetShadow (RequestContext &ctx, Value *v)
 
void visitCallInst (llvm::CallInst &CI)
 
void visitFPTruncInst (FPTruncInst &I)
 
void visitFPExtInst (FPExtInst &I)
 
void visitFPToUIInst (FPToUIInst &I)
 
void visitFPToSIInst (FPToSIInst &I)
 
void visitUIToFPInst (UIToFPInst &I)
 
void visitSIToFPInst (SIToFPInst &I)
 
- Public Member Functions inherited from TruncateUtils
 TruncateUtils (FloatTruncation truncation, Module *M)
 
Type * getFromType ()
 
Type * getToType ()
 
CallInst * createFPRTConstCall (llvm::IRBuilderBase &B, Value *V)
 
CallInst * createFPRTNewCall (llvm::IRBuilderBase &B, Value *V)
 
CallInst * createFPRTGetCall (llvm::IRBuilderBase &B, Value *V)
 
CallInst * createFPRTDeleteCall (llvm::IRBuilderBase &B, Value *V)
 
CallInst * createFPRTOpCall (llvm::IRBuilderBase &B, llvm::Instruction &I, llvm::Type *RetTy, SmallVectorImpl< Value * > &ArgsIn)
 

Additional Inherited Members

- Protected Attributes inherited from TruncateUtils
FloatTruncation truncation
 
llvm::Module * M
 
Type * fromType
 
Type * toType
 
LLVMContext & ctx
 

Detailed Description

Definition at line 5311 of file EnzymeLogic.cpp.

Constructor & Destructor Documentation

◆ TruncateGenerator()

TruncateGenerator::TruncateGenerator ( ValueToValueMapTy & originalToNewFn,
FloatTruncation truncation,
Function * oldFunc,
Function * newFunc,
EnzymeLogic & Logic )
inline

Definition at line 5323 of file EnzymeLogic.cpp.

Member Function Documentation

◆ checkHandled()

void TruncateGenerator::checkHandled ( llvm::Instruction & inst)
inline

Definition at line 5331 of file EnzymeLogic.cpp.

◆ expand()

Value * TruncateGenerator::expand ( IRBuilder<> & B,
Value * v )
inline

Definition at line 5371 of file EnzymeLogic.cpp.

◆ getNewFromOriginal() [1/2]

llvm::Instruction * TruncateGenerator::getNewFromOriginal ( llvm::Instruction * v)
inline

Definition at line 5653 of file EnzymeLogic.cpp.

◆ getNewFromOriginal() [2/2]

llvm::Value * TruncateGenerator::getNewFromOriginal ( llvm::Value * v)
inline

Definition at line 5647 of file EnzymeLogic.cpp.

◆ GetShadow()

Value * TruncateGenerator::GetShadow ( RequestContext & ctx,
Value * v )
inline

Definition at line 5663 of file EnzymeLogic.cpp.

◆ handleAdjointForIntrinsic()

bool TruncateGenerator::handleAdjointForIntrinsic ( llvm::Intrinsic::ID ID,
llvm::Instruction & I,
llvm::SmallVectorImpl< llvm::Value * > & orig_ops )
inline

Definition at line 5615 of file EnzymeLogic.cpp.

◆ handleFloatToInt()

void TruncateGenerator::handleFloatToInt ( )

◆ handleIntrinsic()

bool TruncateGenerator::handleIntrinsic ( llvm::CallInst & CI,
Intrinsic::ID ID )
inline

Definition at line 5546 of file EnzymeLogic.cpp.

◆ handleKnownCalls()

bool TruncateGenerator::handleKnownCalls ( llvm::CallInst & call,
llvm::Function * called,
llvm::StringRef funcName,
llvm::CallInst *const newCall )
inline

Definition at line 5657 of file EnzymeLogic.cpp.

◆ handleTrunc()

void TruncateGenerator::handleTrunc ( )

◆ hendleIntToFloat()

void TruncateGenerator::hendleIntToFloat ( )

◆ todo()

void TruncateGenerator::todo ( llvm::Instruction & I)
inline

Definition at line 5382 of file EnzymeLogic.cpp.

◆ truncate()

Value * TruncateGenerator::truncate ( IRBuilder<> & B,
Value * v )
inline

Definition at line 5358 of file EnzymeLogic.cpp.

◆ visitAllocaInst()

void TruncateGenerator::visitAllocaInst ( llvm::AllocaInst & I)
inline

Definition at line 5397 of file EnzymeLogic.cpp.

◆ visitBinaryOperator()

void TruncateGenerator::visitBinaryOperator ( llvm::BinaryOperator & BO)
inline

Definition at line 5482 of file EnzymeLogic.cpp.

◆ visitBranchInst()

void TruncateGenerator::visitBranchInst ( llvm::BranchInst & I)
inline

Definition at line 5598 of file EnzymeLogic.cpp.

◆ visitCallInst()

void TruncateGenerator::visitCallInst ( llvm::CallInst & CI)
inline

Definition at line 5671 of file EnzymeLogic.cpp.

◆ visitCastInst()

void TruncateGenerator::visitCastInst ( llvm::CastInst & CI)
inline

Definition at line 5444 of file EnzymeLogic.cpp.

◆ visitCommonStore()

void TruncateGenerator::visitCommonStore ( llvm::Instruction & I,
llvm::Value * orig_ptr,
llvm::Value * orig_val,
llvm::MaybeAlign prevalign,
bool isVolatile,
llvm::AtomicOrdering ordering,
llvm::SyncScope::ID syncScope,
llvm::Value * mask )
inline

Definition at line 5607 of file EnzymeLogic.cpp.

◆ visitExtractElementInst()

void TruncateGenerator::visitExtractElementInst ( llvm::ExtractElementInst & EEI)
inline

Definition at line 5477 of file EnzymeLogic.cpp.

◆ visitExtractValueInst()

void TruncateGenerator::visitExtractValueInst ( llvm::ExtractValueInst & EEI)
inline

Definition at line 5480 of file EnzymeLogic.cpp.

◆ visitFCmpInst()

void TruncateGenerator::visitFCmpInst ( llvm::FCmpInst & CI)
inline

Definition at line 5399 of file EnzymeLogic.cpp.

◆ visitFenceInst()

void TruncateGenerator::visitFenceInst ( llvm::FenceInst & FI)
inline

Definition at line 5544 of file EnzymeLogic.cpp.

◆ visitFPExtInst()

void TruncateGenerator::visitFPExtInst ( FPExtInst & I)
inline

Definition at line 5695 of file EnzymeLogic.cpp.

◆ visitFPToSIInst()

void TruncateGenerator::visitFPToSIInst ( FPToSIInst & I)
inline

Definition at line 5697 of file EnzymeLogic.cpp.

◆ visitFPToUIInst()

void TruncateGenerator::visitFPToUIInst ( FPToUIInst & I)
inline

Definition at line 5696 of file EnzymeLogic.cpp.

◆ visitFPTruncInst()

void TruncateGenerator::visitFPTruncInst ( FPTruncInst & I)
inline

Definition at line 5694 of file EnzymeLogic.cpp.

◆ visitGetElementPtrInst()

void TruncateGenerator::visitGetElementPtrInst ( llvm::GetElementPtrInst & gep)
inline

Definition at line 5442 of file EnzymeLogic.cpp.

◆ visitICmpInst()

void TruncateGenerator::visitICmpInst ( llvm::ICmpInst & I)
inline

Definition at line 5398 of file EnzymeLogic.cpp.

◆ visitInsertElementInst()

void TruncateGenerator::visitInsertElementInst ( llvm::InsertElementInst & EEI)
inline

Definition at line 5478 of file EnzymeLogic.cpp.

◆ visitInsertValueInst()

void TruncateGenerator::visitInsertValueInst ( llvm::InsertValueInst & EEI)
inline

Definition at line 5481 of file EnzymeLogic.cpp.

◆ visitInstruction()

void TruncateGenerator::visitInstruction ( llvm::Instruction & inst)
inline

Definition at line 5343 of file EnzymeLogic.cpp.

◆ visitIntrinsicInst()

void TruncateGenerator::visitIntrinsicInst ( llvm::IntrinsicInst & II)
inline

Definition at line 5592 of file EnzymeLogic.cpp.

◆ visitLoadInst()

void TruncateGenerator::visitLoadInst ( llvm::LoadInst & LI)
inline

Definition at line 5432 of file EnzymeLogic.cpp.

◆ visitLoadLike()

void TruncateGenerator::visitLoadLike ( llvm::Instruction & I,
llvm::MaybeAlign alignment,
llvm::Value * mask = nullptr,
llvm::Value * orig_maskInit = nullptr )
inline

Definition at line 5601 of file EnzymeLogic.cpp.

◆ visitMemSetCommon()

void TruncateGenerator::visitMemSetCommon ( llvm::CallInst & MS)
inline

Definition at line 5528 of file EnzymeLogic.cpp.

◆ visitMemSetInst()

void TruncateGenerator::visitMemSetInst ( llvm::MemSetInst & MS)
inline

Definition at line 5527 of file EnzymeLogic.cpp.

◆ visitMemTransferCommon()

void TruncateGenerator::visitMemTransferCommon ( llvm::Intrinsic::ID ID,
llvm::MaybeAlign srcAlign,
llvm::MaybeAlign dstAlign,
llvm::CallInst & MTI,
llvm::Value * orig_dst,
llvm::Value * orig_src,
llvm::Value * new_size,
llvm::Value * isVolatile )
inline

Definition at line 5538 of file EnzymeLogic.cpp.

◆ visitMemTransferInst()

void TruncateGenerator::visitMemTransferInst ( llvm::MemTransferInst & MTI)
inline

Definition at line 5529 of file EnzymeLogic.cpp.

◆ visitPHINode()

void TruncateGenerator::visitPHINode ( llvm::PHINode & phi)
inline

Definition at line 5443 of file EnzymeLogic.cpp.

◆ visitReturnInst()

void TruncateGenerator::visitReturnInst ( llvm::ReturnInst & I)
inline

Definition at line 5596 of file EnzymeLogic.cpp.

◆ visitSelectInst()

void TruncateGenerator::visitSelectInst ( llvm::SelectInst & SI)
inline

Definition at line 5456 of file EnzymeLogic.cpp.

◆ visitShuffleVectorInst()

void TruncateGenerator::visitShuffleVectorInst ( llvm::ShuffleVectorInst & EEI)
inline

Definition at line 5479 of file EnzymeLogic.cpp.

◆ visitSIToFPInst()

void TruncateGenerator::visitSIToFPInst ( SIToFPInst & I)
inline

Definition at line 5699 of file EnzymeLogic.cpp.

◆ visitStoreInst()

void TruncateGenerator::visitStoreInst ( llvm::StoreInst & SI)
inline

Definition at line 5436 of file EnzymeLogic.cpp.

◆ visitSwitchInst()

void TruncateGenerator::visitSwitchInst ( llvm::SwitchInst & I)
inline

Definition at line 5599 of file EnzymeLogic.cpp.

◆ visitUIToFPInst()

void TruncateGenerator::visitUIToFPInst ( UIToFPInst & I)
inline

Definition at line 5698 of file EnzymeLogic.cpp.

◆ visitUnreachableInst()

void TruncateGenerator::visitUnreachableInst ( llvm::UnreachableInst & I)
inline

Definition at line 5600 of file EnzymeLogic.cpp.


The documentation for this class was generated from the following file: