1 #ifndef CPPAD_CG_LANGUAGE_INCLUDED 2 #define CPPAD_CG_LANGUAGE_INCLUDED 31 using ScopeIDType =
typename CodeHandler<Base>::ScopeIDType;
85 const std::set<const Node*>& indexes;
87 const std::set<RandomIndexPattern*>& indexRandomPatterns;
89 const std::vector<IndexPattern*>& loopDependentIndexPatterns;
91 const std::vector<IndexPattern*>& loopIndependentIndexPatterns;
115 const std::vector<Node*>& vo,
116 const std::vector<std::set<Node*>>& variableDependencies,
118 const std::map<size_t, size_t>& atomicId2Index,
119 const std::map<size_t, std::string>& atomicId2Name,
120 const std::vector<int>& atomicMaxForward,
121 const std::vector<int>& atomicMaxReverse,
123 const std::set<const Node*>& indexes,
124 const std::set<RandomIndexPattern*>& idxRandomPatterns,
125 const std::vector<IndexPattern*>& dependentIndexPatterns,
126 const std::vector<IndexPattern*>& independentIndexPatterns,
133 minTemporaryVarID(minTempVID),
136 variableDependencies(variableDependencies),
138 atomicFunctionId2Index(atomicId2Index),
139 atomicFunctionId2Name(atomicId2Name),
140 atomicFunctionsMaxForward(atomicMaxForward),
141 atomicFunctionsMaxReverse(atomicMaxReverse),
144 indexRandomPatterns(idxRandomPatterns),
145 loopDependentIndexPatterns(dependentIndexPatterns),
146 loopIndependentIndexPatterns(independentIndexPatterns),
147 totalUseCount(totalUseCount),
149 auxIterationIndexOp(auxIterationIndexOp),
150 zeroDependents(zero) {
165 virtual void generateSourceCode(std::ostream& out,
176 virtual bool createsNewVariable(
const Node& op,
178 size_t opCount)
const = 0;
180 virtual bool requiresVariableArgument(
enum CGOpCode op,
181 size_t argIndex)
const = 0;
187 virtual bool requiresVariableDependencies()
const = 0;
const std::map< size_t, std::string > & atomicFunctionId2Name
const bool zeroDependents
const CodeHandlerVector< Base, size_t > & varId
const std::vector< int > & atomicFunctionsMaxReverse
IndexOperationNode< Base > & auxIterationIndexOp
const CodeHandlerVector< Base, ScopeIDType > & scope
const std::vector< Node * > & independent
const std::map< size_t, size_t > & atomicFunctionId2Index
const CodeHandlerVector< Base, size_t > & totalUseCount
const std::vector< int > & atomicFunctionsMaxForward
VariableNameGenerator< Base > & nameGen
const ArrayView< CG< Base > > & dependent
const std::vector< std::set< Node * > > & variableDependencies
const std::vector< Node * > & variableOrder