Enzyme main
Loading...
Searching...
No Matches
AugmentedReturn Class Reference

return structtype if recursive function More...

#include "MLIR/Interfaces/EnzymeLogic.h"

Collaboration diagram for AugmentedReturn:

Public Member Functions

 AugmentedReturn (llvm::Function *fn, llvm::Type *tapeType, std::map< std::pair< llvm::Instruction *, CacheType >, int > tapeIndices, std::map< AugmentedStruct, int > returns, std::map< llvm::CallInst *, std::pair< bool, const std::vector< bool > > > overwritten_args_map, std::map< llvm::Instruction *, bool > can_modref_map, const std::vector< DIFFE_TYPE > &constant_args, bool shadowReturnUsed)
 

Public Attributes

llvm::Function * fn
 
llvm::Type * tapeType
 return structtype if recursive function
 
std::map< std::pair< llvm::Instruction *, CacheType >, int > tapeIndices
 
std::map< const llvm::CallInst *, const AugmentedReturn * > subaugmentations
 Map from original call to sub augmentation data.
 
std::map< AugmentedStruct, int > returns
 Map from information desired from a augmented return to its index in the returned struct.
 
std::map< llvm::CallInst *, std::pair< bool, const std::vector< bool > > > overwritten_args_map
 
std::map< llvm::Instruction *, bool > can_modref_map
 
std::set< ssize_t > tapeIndiciesToFree
 
const std::vector< DIFFE_TYPE > constant_args
 
bool shadowReturnUsed
 
std::set< const llvm::Value * > primalUnnecessaryValues
 The augmented pass's unnecessary values and recompute decisions, which determine whether it used the primal of a value.
 
std::map< const llvm::Value *, bool > primalKnownRecomputeHeuristic
 
bool isComplete
 

Detailed Description

return structtype if recursive function

Definition at line 100 of file EnzymeLogic.h.

Constructor & Destructor Documentation

◆ AugmentedReturn()

AugmentedReturn::AugmentedReturn ( llvm::Function * fn,
llvm::Type * tapeType,
std::map< std::pair< llvm::Instruction *, CacheType >, int > tapeIndices,
std::map< AugmentedStruct, int > returns,
std::map< llvm::CallInst *, std::pair< bool, const std::vector< bool > > > overwritten_args_map,
std::map< llvm::Instruction *, bool > can_modref_map,
const std::vector< DIFFE_TYPE > & constant_args,
bool shadowReturnUsed )
inline

Definition at line 135 of file EnzymeLogic.h.

Member Data Documentation

◆ can_modref_map

std::map<llvm::Instruction *, bool> AugmentedReturn::can_modref_map

Definition at line 118 of file EnzymeLogic.h.

◆ constant_args

const std::vector<DIFFE_TYPE> AugmentedReturn::constant_args

◆ fn

llvm::Function* AugmentedReturn::fn

◆ isComplete

bool AugmentedReturn::isComplete

Definition at line 133 of file EnzymeLogic.h.

◆ overwritten_args_map

std::map<llvm::CallInst *, std::pair<bool, const std::vector<bool> > > AugmentedReturn::overwritten_args_map

Definition at line 116 of file EnzymeLogic.h.

◆ primalKnownRecomputeHeuristic

std::map<const llvm::Value *, bool> AugmentedReturn::primalKnownRecomputeHeuristic

Definition at line 131 of file EnzymeLogic.h.

◆ primalUnnecessaryValues

std::set<const llvm::Value *> AugmentedReturn::primalUnnecessaryValues

The augmented pass's unnecessary values and recompute decisions, which determine whether it used the primal of a value.

The reverse pass of split mode answers that question from these, as its own analysis can differ, e.g. when only the augmented function returns the primal.

Definition at line 130 of file EnzymeLogic.h.

◆ returns

std::map<AugmentedStruct, int> AugmentedReturn::returns

Map from information desired from a augmented return to its index in the returned struct.

Definition at line 113 of file EnzymeLogic.h.

Referenced by AdjointGenerator::recursivelyHandleSubfunction(), and AdjointGenerator::visitOMPCall().

◆ shadowReturnUsed

bool AugmentedReturn::shadowReturnUsed

Definition at line 124 of file EnzymeLogic.h.

◆ subaugmentations

std::map<const llvm::CallInst *, const AugmentedReturn *> AugmentedReturn::subaugmentations

Map from original call to sub augmentation data.

Definition at line 109 of file EnzymeLogic.h.

Referenced by AdjointGenerator::recursivelyHandleSubfunction(), AdjointGenerator::visitCallInst(), and AdjointGenerator::visitOMPCall().

◆ tapeIndices

std::map<std::pair<llvm::Instruction *, CacheType>, int> AugmentedReturn::tapeIndices

◆ tapeIndiciesToFree

std::set<ssize_t> AugmentedReturn::tapeIndiciesToFree

Definition at line 120 of file EnzymeLogic.h.

Referenced by AdjointGenerator::visitOMPCall().

◆ tapeType

llvm::Type* AugmentedReturn::tapeType

return structtype if recursive function

Definition at line 104 of file EnzymeLogic.h.

Referenced by AdjointGenerator::recursivelyHandleSubfunction(), and AdjointGenerator::visitOMPCall().


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