|
| | CacheAnalysis (const ValueMap< const CallInst *, SmallPtrSet< const CallInst *, 1 > > &allocationsWithGuaranteedFree, const ValueMap< Value *, GradientUtils::Rematerializer > &rematerializableAllocations, TypeResults &TR, AAResults &AA, Function *oldFunc, ScalarEvolution &SE, LoopInfo &OrigLI, DominatorTree &OrigDT, TargetLibraryInfo &TLI, const SmallPtrSetImpl< BasicBlock * > &unnecessaryBlocks, bool subsequent_calls_may_write, const std::vector< bool > &overwritten_args, DerivativeMode mode, bool omp) |
| |
| bool | is_origin_overwritten (Value *obj) |
| | Whether the memory at obj may be overwritten after this function returns.
|
| |
| bool | is_overwritten_argument (Value *obj) |
| |
| bool | is_value_mustcache_from_origin (Value *obj) |
| |
| bool | is_load_uncacheable (Instruction &li) |
| |
| std::map< Instruction *, bool > | compute_uncacheable_load_map () |
| |
| std::pair< bool, std::vector< bool > > | compute_overwritten_args_for_one_callsite (CallInst *callsite_op) |
| |
| std::map< CallInst *, std::pair< bool, const std::vector< bool > > > | compute_overwritten_args_for_callsites () |
| |
|
| static bool | mayModify (AAResults &AA, Instruction *I, const MemoryLocation &loc) |
| | Whether I may modify the memory at loc.
|
| |
Definition at line 189 of file EnzymeLogic.cpp.
◆ CacheAnalysis()
| CacheAnalysis::CacheAnalysis |
( |
const ValueMap< const CallInst *, SmallPtrSet< const CallInst *, 1 > > & | allocationsWithGuaranteedFree, |
|
|
const ValueMap< Value *, GradientUtils::Rematerializer > & | rematerializableAllocations, |
|
|
TypeResults & | TR, |
|
|
AAResults & | AA, |
|
|
Function * | oldFunc, |
|
|
ScalarEvolution & | SE, |
|
|
LoopInfo & | OrigLI, |
|
|
DominatorTree & | OrigDT, |
|
|
TargetLibraryInfo & | TLI, |
|
|
const SmallPtrSetImpl< BasicBlock * > & | unnecessaryBlocks, |
|
|
bool | subsequent_calls_may_write, |
|
|
const std::vector< bool > & | overwritten_args, |
|
|
DerivativeMode | mode, |
|
|
bool | omp ) |
|
inline |
◆ compute_overwritten_args_for_callsites()
| std::map< CallInst *, std::pair< bool, const std::vector< bool > > > CacheAnalysis::compute_overwritten_args_for_callsites |
( |
| ) |
|
|
inline |
◆ compute_overwritten_args_for_one_callsite()
| std::pair< bool, std::vector< bool > > CacheAnalysis::compute_overwritten_args_for_one_callsite |
( |
CallInst * | callsite_op | ) |
|
|
inline |
◆ compute_uncacheable_load_map()
| std::map< Instruction *, bool > CacheAnalysis::compute_uncacheable_load_map |
( |
| ) |
|
|
inline |
◆ is_load_uncacheable()
| bool CacheAnalysis::is_load_uncacheable |
( |
Instruction & | li | ) |
|
|
inline |
◆ is_origin_overwritten()
| bool CacheAnalysis::is_origin_overwritten |
( |
Value * | obj | ) |
|
|
inline |
Whether the memory at obj may be overwritten after this function returns.
Unknown writes (subsequent_calls_may_write) may overwrite any memory not local to this function. Otherwise the caller only wrote to its own uncaptured memory, which this function can only reach through an argument, so only an argument marked overwritten can be.
Definition at line 248 of file EnzymeLogic.cpp.
◆ is_overwritten_argument()
| bool CacheAnalysis::is_overwritten_argument |
( |
Value * | obj | ) |
|
|
inline |
◆ is_value_mustcache_from_origin()
| bool CacheAnalysis::is_value_mustcache_from_origin |
( |
Value * | obj | ) |
|
|
inline |
◆ mayModify()
| static bool CacheAnalysis::mayModify |
( |
AAResults & | AA, |
|
|
Instruction * | I, |
|
|
const MemoryLocation & | loc ) |
|
inlinestatic |
Whether I may modify the memory at loc.
Unless it throws, a LocalReadOnlyOrThrow call writes only memory it allocated, which cannot be loc, and its sret-like arguments.
Definition at line 194 of file EnzymeLogic.cpp.
◆ AA
| AAResults& CacheAnalysis::AA |
◆ allocationsWithGuaranteedFree
| const ValueMap<const CallInst *, SmallPtrSet<const CallInst *, 1> >& CacheAnalysis::allocationsWithGuaranteedFree |
◆ mode
◆ oldFunc
| Function* CacheAnalysis::oldFunc |
◆ omp
◆ OrigDT
| DominatorTree& CacheAnalysis::OrigDT |
◆ OrigLI
| LoopInfo& CacheAnalysis::OrigLI |
◆ overwritten_args
| const std::vector<bool>& CacheAnalysis::overwritten_args |
◆ rematerializableAllocations
◆ SE
| ScalarEvolution& CacheAnalysis::SE |
◆ seen
| std::map<Value *, bool> CacheAnalysis::seen |
◆ seen_argument
| std::map<Value *, bool> CacheAnalysis::seen_argument |
◆ subsequent_calls_may_write
| const bool CacheAnalysis::subsequent_calls_may_write |
◆ TLI
| TargetLibraryInfo& CacheAnalysis::TLI |
◆ TR
◆ unnecessaryBlocks
| const SmallPtrSetImpl<BasicBlock *>& CacheAnalysis::unnecessaryBlocks |
The documentation for this struct was generated from the following file: