Enzyme main
Loading...
Searching...
No Matches
DiffeGradientUtils Member List

This is the complete list of members for DiffeGradientUtils, including all inherited members.

ACCacheUtilityprotected
addReverseBlock(llvm::BasicBlock *currentBlock, llvm::Twine const &name, bool forkCache=true, bool push=true)GradientUtils
addToDiffe(llvm::Value *val, llvm::Value *dif, llvm::IRBuilder<> &BuilderM, llvm::Type *addingType, llvm::ArrayRef< llvm::Value * > idxs={}, llvm::Value *mask=nullptr)DiffeGradientUtils
addToDiffe(llvm::Value *val, llvm::Value *dif, llvm::IRBuilder<> &BuilderM, llvm::Type *addingType, unsigned start, unsigned size, llvm::ArrayRef< llvm::Value * > idxs={}, llvm::Value *mask=nullptr, size_t ignoreFirstSlicesToDiff=0)DiffeGradientUtils
addToInvertedPtrDiffe(llvm::Instruction *orig, llvm::Value *origVal, llvm::Type *addingType, unsigned start, unsigned size, llvm::Value *origptr, llvm::Value *dif, llvm::IRBuilder<> &BuilderM, llvm::MaybeAlign align=llvm::MaybeAlign(), llvm::Value *mask=nullptr)DiffeGradientUtils
addToInvertedPtrDiffe(llvm::Instruction *orig, llvm::Value *origVal, TypeTree vd, unsigned size, llvm::Value *origptr, llvm::Value *prediff, llvm::IRBuilder<> &Builder2, llvm::MaybeAlign align=llvm::MaybeAlign(), llvm::Value *premask=nullptr)DiffeGradientUtils
allocationsWithGuaranteedFreeGradientUtils
applyChainRule(llvm::Type *diffType, llvm::IRBuilder<> &Builder, Func rule, Args... args)GradientUtilsinline
applyChainRule(llvm::IRBuilder<> &Builder, Func rule, Args... args)GradientUtilsinline
applyChainRule(llvm::Type *diffType, llvm::ArrayRef< llvm::Constant * > diffs, llvm::IRBuilder<> &Builder, Func rule)GradientUtilsinline
ArgDiffeTypesGradientUtils
assumeDynamicLoopOfSizeOne(llvm::Loop *L) const overrideGradientUtilsvirtual
ATAGradientUtils
AtomicAddGradientUtils
backwardsOnlyShadowsGradientUtils
BlocksDominatingAllReturnsGradientUtils
branchToCorrespondingTarget(llvm::BasicBlock *ctx, llvm::IRBuilder<> &BuilderM, const std::map< llvm::BasicBlock *, std::vector< std::pair< llvm::BasicBlock *, llvm::BasicBlock * > > > &targetToPreds, const std::map< llvm::BasicBlock *, llvm::PHINode * > *replacePHIs=nullptr)GradientUtils
cacheForReverse(llvm::IRBuilder<> &BuilderQ, llvm::Value *malloc, int idx, bool replace=true)GradientUtils
CacheLookupsCacheUtilityprotected
CacheUtility(llvm::TargetLibraryInfo &TLI, llvm::Function *newFunc)CacheUtilityinlineprotected
can_modref_mapGradientUtils
computeForwardingProperties(llvm::Instruction *V)GradientUtils
computeGuaranteedFrees()GradientUtils
computeMinCache()GradientUtils
createCacheForScope(LimitContext ctx, llvm::Type *T, llvm::StringRef name, bool shouldFree, bool allocateInternal=true, llvm::Value *extraSize=nullptr)CacheUtility
CreateFromClone(EnzymeLogic &Logic, DerivativeMode mode, bool runtimeActivity, bool strongZero, unsigned width, llvm::Function *todiff, llvm::TargetLibraryInfo &TLI, TypeAnalysis &TA, FnTypeInfo &oldTypeInfo, DIFFE_TYPE retType, bool shadowReturnArg, bool diffeReturnArg, llvm::ArrayRef< DIFFE_TYPE > constant_args, bool returnTape, bool returnPrimal, llvm::Type *additionalArg, bool omp)DiffeGradientUtilsstatic
GradientUtils::CreateFromClone(EnzymeLogic &Logic, bool runtimeActivity, bool strongZero, unsigned width, llvm::Function *todiff, llvm::TargetLibraryInfo &TLI, TypeAnalysis &TA, FnTypeInfo &oldTypeInfo, DIFFE_TYPE retType, llvm::ArrayRef< DIFFE_TYPE > constant_args, bool returnUsed, bool shadowReturnUsed, std::map< AugmentedStruct, int > &returnMapping, bool omp)GradientUtilsstatic
diffe(llvm::Value *val, llvm::IRBuilder<> &BuilderM)DiffeGradientUtils
differentialAliasScopeGradientUtils
differentialAliasScopeDomainsGradientUtils
differentialsDiffeGradientUtils
DTCacheUtility
dumpPointers()GradientUtils
dumpScope()CacheUtilityinline
ensureLookupCached(llvm::Instruction *inst, bool shouldFree=true, llvm::BasicBlock *scope=nullptr, llvm::MDNode *TBAA=nullptr)GradientUtils
erase(llvm::Instruction *I) overrideGradientUtilsvirtual
eraseFictiousPHIs()GradientUtils
eraseWithPlaceholder(llvm::Instruction *I, llvm::Instruction *orig, const llvm::Twine &suffix="_replacementA", bool erase=true)GradientUtils
extractMeta(llvm::IRBuilder<> &Builder, llvm::Value *Agg, unsigned off, const llvm::Twine &name="")GradientUtilsstatic
extractMeta(llvm::IRBuilder<> &Builder, llvm::Value *Agg, llvm::ArrayRef< unsigned > off, const llvm::Twine &name="", bool fallback=true)GradientUtilsstatic
extractMeta(llvm::Type *T, llvm::ArrayRef< unsigned > off)GradientUtilsstatic
fictiousPHIsGradientUtils
fixLCSSA(llvm::Instruction *inst, llvm::BasicBlock *forwardBlock, bool legalInBlock=false)GradientUtils
forceActiveDetection()GradientUtils
forceAugmentedReturns()GradientUtils
forceContexts()GradientUtils
forwardDeallocationsGradientUtils
freeCache(llvm::BasicBlock *forwardPreheader, const SubLimitType &sublimits, int i, llvm::AllocaInst *alloc, llvm::Type *myType, llvm::ConstantInt *byteSizeOfType, llvm::Value *storeInto, llvm::MDNode *InvariantMD) overrideDiffeGradientUtilsvirtual
FreeMemoryDiffeGradientUtils
getCacheAlignment(unsigned bsize) constCacheUtilityinline
getCachePointer(llvm::Type *T, bool inForwardPass, llvm::IRBuilder<> &BuilderM, LimitContext ctx, llvm::Value *cache, bool storeInInstructionsMap, const llvm::ValueToValueMapTy &available, llvm::Value *extraSize)CacheUtility
getContext(llvm::BasicBlock *BB, LoopContext &lc)GradientUtils
CacheUtility::getContext(llvm::BasicBlock *BB, LoopContext &loopContext, bool ReverseLimit)CacheUtility
getDerivativeAliasScope(const llvm::Value *origptr, ssize_t newptr)GradientUtils
getDifferential(llvm::Value *val)DiffeGradientUtils
getDiffeType(llvm::Value *v, bool foreignFunction) constGradientUtils
getDynamicLoopLimit(llvm::Loop *L, bool ReverseLimit=true)CacheUtility
getForwardBuilder(llvm::IRBuilder<> &Builder2)GradientUtils
getIndex(std::pair< llvm::Instruction *, CacheType > idx, const std::map< std::pair< llvm::Instruction *, CacheType >, int > &mapping, llvm::IRBuilder<> &)GradientUtils
getIndex(std::pair< llvm::Instruction *, CacheType > idx, std::map< std::pair< llvm::Instruction *, CacheType >, int > &mapping, llvm::IRBuilder<> &)GradientUtils
getInvertedBundles(llvm::CallInst *orig, llvm::ArrayRef< ValueType > types, llvm::IRBuilder<> &Builder2, bool lookup, const llvm::ValueToValueMapTy &available=llvm::ValueToValueMapTy())GradientUtils
getNewFromOriginal(const llvm::DebugLoc L) constGradientUtils
getNewFromOriginal(const llvm::Value *originst) constGradientUtils
getNewFromOriginal(const llvm::Instruction *newinst) constGradientUtils
getNewFromOriginal(const llvm::BasicBlock *newinst) constGradientUtils
getNewIfOriginal(llvm::Value *originst) constGradientUtils
GetOrCreateShadowConstant(RequestContext context, EnzymeLogic &Logic, llvm::TargetLibraryInfo &TLI, TypeAnalysis &TA, llvm::Constant *F, DerivativeMode mode, bool runtimeActivity, bool strongZero, unsigned width, bool AtomicAdd)GradientUtilsstatic
GetOrCreateShadowFunction(RequestContext context, EnzymeLogic &Logic, llvm::TargetLibraryInfo &TLI, TypeAnalysis &TA, llvm::Function *F, DerivativeMode mode, bool runtimeActivity, bool strongZero, unsigned width, bool AtomicAdd)GradientUtilsstatic
getOriginalFromNew(const llvm::BasicBlock *newinst) constGradientUtils
getOrInsertConditionalIndex(llvm::Value *val, LoopContext &lc, bool pickTrue)GradientUtils
getOrInsertTotalMultiplicativeProduct(llvm::Value *val, LoopContext &lc)GradientUtils
getReturnDiffeType(llvm::Value *orig, bool *primalReturnUsedP, bool *shadowReturnUsedP, DerivativeMode cmode) constGradientUtils
getReturnDiffeType(llvm::Value *orig, bool *primalReturnUsedP, bool *shadowReturnUsedP) constGradientUtils
getReverseBuilder(llvm::IRBuilder<> &Builder2, bool original=true)GradientUtils
getReverseOrLatchMerge(llvm::BasicBlock *BB, llvm::BasicBlock *branchingBlock)GradientUtils
getShadowType(llvm::Type *ty, unsigned width)GradientUtilsstatic
getShadowType(llvm::Type *ty)GradientUtils
getSubLimits(bool inForwardPass, llvm::IRBuilder<> *RB, LimitContext ctx, llvm::Value *extraSize=nullptr)CacheUtility
getTapeValues() constGradientUtilsinline
getWidth()GradientUtilsinline
GradientUtils(EnzymeLogic &Logic, llvm::Function *newFunc_, llvm::Function *oldFunc_, llvm::TargetLibraryInfo &TLI_, TypeAnalysis &TA_, TypeResults TR_, llvm::ValueToValueMapTy &invertedPointers_, const llvm::SmallPtrSetImpl< llvm::Value * > &constantvalues_, const llvm::SmallPtrSetImpl< llvm::Value * > &activevals_, DIFFE_TYPE ReturnActivity, bool shadowReturnUsed, llvm::ArrayRef< DIFFE_TYPE > ArgDiffeTypes_, llvm::ValueMap< const llvm::Value *, AssertingReplacingVH > &originalToNewFn_, DerivativeMode mode, bool runtimeActivity, bool strongZero, unsigned width, bool omp)GradientUtils
hasUninverted(const llvm::Value *inverted) constGradientUtils
inversionAllocsCacheUtility
invertedPointersGradientUtils
invertPointerM(llvm::Value *val, llvm::IRBuilder<> &BuilderM, bool nullShadow=false)GradientUtils
isConstantInstruction(const llvm::Instruction *inst) constGradientUtils
isConstantValue(llvm::Value *val) constGradientUtils
isInstructionUsedInLoopInduction(llvm::Instruction &I)CacheUtilityinline
isOriginal(const llvm::Value *newinst) constGradientUtils
isOriginal(const llvm::Instruction *newinst) constGradientUtils
isOriginal(const llvm::BasicBlock *newinst) constGradientUtils
isOriginalBlock(const llvm::BasicBlock &BB) constGradientUtils
knownRecomputeHeuristicGradientUtils
lcssaFixesGradientUtils
lcssaPHIToOrigGradientUtils
legalRecompute(const llvm::Value *val, const llvm::ValueToValueMapTy &available, llvm::IRBuilder<> *BuilderM, bool reverse=false, bool legalRecomputeCache=true) constGradientUtils
LICacheUtilityprotected
loadFromCachePointer(llvm::Type *T, llvm::IRBuilder<> &BuilderM, llvm::Value *cptr, llvm::Value *cache)CacheUtilityprotected
LogicGradientUtils
lookupM(llvm::Value *val, llvm::IRBuilder<> &BuilderM, const llvm::ValueToValueMapTy &incoming_availalble=llvm::ValueToValueMapTy(), bool tryLegalRecomputeCheck=true, llvm::BasicBlock *scope=nullptr) overrideGradientUtilsvirtual
lookupValueFromCache(llvm::Type *T, bool inForwardPass, llvm::IRBuilder<> &BuilderM, LimitContext ctx, llvm::Value *cache, bool isi1, const llvm::ValueToValueMapTy &available, llvm::Value *extraSize=nullptr, llvm::Value *extraOffset=nullptr)CacheUtility
loopContextsCacheUtilityprotected
modeGradientUtils
needsCacheWholeAllocation(const llvm::Value *V) constGradientUtils
newBlocksForLoop_cacheGradientUtils
newFuncCacheUtility
newToOriginalFnGradientUtils
notForAnalysisGradientUtils
numThreadsGradientUtils
oldFuncGradientUtils
ompGradientUtils
ompNumThreads()GradientUtils
ompThreadId()GradientUtils
OrigAAGradientUtils
OrigDTGradientUtils
originalBlocksGradientUtils
originalCallsGradientUtils
originalToNewFnGradientUtils
OrigLIGradientUtils
OrigPDTGradientUtils
OrigSEGradientUtils
overwritten_args_map_ptrGradientUtils
postDominatingFreesGradientUtils
recursiveFAdd(llvm::IRBuilder<> &B, llvm::Value *lhs, llvm::Value *rhs, llvm::ArrayRef< unsigned > lhs_off={}, llvm::ArrayRef< unsigned > rhs_off={}, llvm::Value *prev=nullptr, bool vectorLayer=false)GradientUtilsstatic
rematerializableAllocationsGradientUtils
rematerializedLoops_cacheGradientUtils
rematerializedPrimalOrShadowAllocationsGradientUtils
replaceAndRemoveUnwrapCacheFor(llvm::Value *A, llvm::Value *B)GradientUtils
replaceAWithB(llvm::Value *A, llvm::Value *B, bool storeInCache=false) overrideGradientUtilsvirtual
reverseBlocksGradientUtils
reverseBlockToPrimalGradientUtils
runtimeActivityGradientUtils
scopeAllocsCacheUtilityprotected
scopeFreesCacheUtilityprotected
scopeInstructionsCacheUtilityprotected
scopeMapCacheUtilityprotected
SECacheUtilityprotected
setDiffe(llvm::Value *val, llvm::Value *toset, llvm::IRBuilder<> &BuilderM)DiffeGradientUtils
setPtrDiffe(llvm::Instruction *orig, llvm::Value *ptr, llvm::Value *newval, llvm::IRBuilder<> &BuilderM, llvm::MaybeAlign align, unsigned start, unsigned size, bool isVolatile, llvm::AtomicOrdering ordering, llvm::SyncScope::ID syncScope, llvm::Value *mask, llvm::ArrayRef< llvm::Metadata * > noAlias, llvm::ArrayRef< llvm::Metadata * > scopes, bool needs_post_cache=false)GradientUtils
setTape(llvm::Value *newtape)GradientUtils
shadowReturnUsedGradientUtils
shouldRecompute(const llvm::Value *val, const llvm::ValueToValueMapTy &available, llvm::IRBuilder<> *BuilderM)GradientUtils
storeInstructionInCache(LimitContext ctx, llvm::IRBuilder<> &BuilderM, llvm::Value *val, llvm::AllocaInst *cache, llvm::MDNode *TBAA=nullptr)CacheUtility
storeInstructionInCache(LimitContext ctx, llvm::Instruction *inst, llvm::AllocaInst *cache, llvm::MDNode *TBAA=nullptr)CacheUtility
strongZeroGradientUtils
SubLimitType typedefCacheUtility
TAGradientUtils
TapesToPreventRecomputationGradientUtils
tidGradientUtils
TLICacheUtility
TRGradientUtils
unnecessaryIntermediatesGradientUtils
unnecessaryValuesPGradientUtils
unwrapM(llvm::Value *const val, llvm::IRBuilder<> &BuilderM, const llvm::ValueToValueMapTy &available, UnwrapMode unwrapMode, llvm::BasicBlock *scope=nullptr, bool permitCache=true) override finalGradientUtilsvirtual
unwrappedLoadsGradientUtils
usedInRooting(const llvm::CallBase *orig, llvm::ArrayRef< ValueType > types, const llvm::Value *val, bool shadow) constGradientUtils
~CacheUtility()CacheUtilityvirtual