|
| static std::string | to_string (QueryType mode) |
| |
| bool | DifferentialUseAnalysis::is_use_directly_needed_in_reverse (const GradientUtils *gutils, const llvm::Value *val, DerivativeMode mode, const llvm::Instruction *user, const llvm::SmallPtrSetImpl< llvm::BasicBlock * > &oldUnreachable, QueryType shadow, bool *recursiveUse=nullptr) |
| | Determine if a value is needed directly to compute the adjoint of the given instruction user.
|
| |
| template<QueryType VT, bool OneLevel = false> |
| bool | DifferentialUseAnalysis::is_value_needed_in_reverse (const GradientUtils *gutils, const llvm::Value *inst, DerivativeMode mode, std::map< UsageKey, bool > &seen, const llvm::SmallPtrSetImpl< llvm::BasicBlock * > &oldUnreachable) |
| |
| template<QueryType VT> |
| static bool | DifferentialUseAnalysis::is_value_needed_in_reverse (const GradientUtils *gutils, const llvm::Value *inst, DerivativeMode mode, const llvm::SmallPtrSetImpl< llvm::BasicBlock * > &oldUnreachable) |
| |
| void | DifferentialUseAnalysis::dump (std::map< Node, std::set< Node > > &G) |
| |
| void | DifferentialUseAnalysis::bfs (const std::map< Node, std::set< Node > > &G, const llvm::SetVector< llvm::Value * > &Recompute, std::map< Node, Node > &parent) |
| |
| int | DifferentialUseAnalysis::cmpLoopNest (llvm::Loop *prev, llvm::Loop *next) |
| |
| void | DifferentialUseAnalysis::minCut (const llvm::DataLayout &DL, llvm::LoopInfo &OrigLI, const llvm::SetVector< llvm::Value * > &Recomputes, const llvm::SetVector< llvm::Value * > &Intermediates, llvm::SetVector< llvm::Value * > &Required, llvm::SetVector< llvm::Value * > &MinReq, const GradientUtils *gutils, llvm::TargetLibraryInfo &TLI) |
| |
| | DifferentialUseAnalysis::__attribute__ ((always_inline)) static inline void forEachDirectInsertUser(llvm |
| |
| bool | DifferentialUseAnalysis::callShouldNotUseDerivative (const GradientUtils *gutils, llvm::CallBase &orig, QueryType qtype, const llvm::Value *val) |
| | Return whether or not this is a constant and should use reverse pass.
|
| |