.. java:import:: fr.inria.tapenade.analysis DataFlowAnalyzer .. java:import:: fr.inria.tapenade.representation ILUtils .. java:import:: fr.inria.tapenade.representation Instruction .. java:import:: fr.inria.tapenade.representation InstructionMask .. java:import:: fr.inria.tapenade.representation IterDescriptor .. java:import:: fr.inria.tapenade.representation NewSymbolHolder .. java:import:: fr.inria.tapenade.representation RefDescriptor .. java:import:: fr.inria.tapenade.representation SymbolDecl .. java:import:: fr.inria.tapenade.representation SymbolTable .. java:import:: fr.inria.tapenade.representation SymbolTableConstants .. java:import:: fr.inria.tapenade.representation TapEnv .. java:import:: fr.inria.tapenade.representation TapList .. java:import:: fr.inria.tapenade.representation Unit .. java:import:: fr.inria.tapenade.representation VariableDecl .. java:import:: fr.inria.tapenade.representation WrapperTypeSpec .. java:import:: fr.inria.tapenade.representation ZoneInfo .. java:import:: fr.inria.tapenade.utils BoolVector .. java:import:: fr.inria.tapenade.utils ILLang .. java:import:: fr.inria.tapenade.utils TapIntList .. java:import:: fr.inria.tapenade.utils Tree NewBlockGraphNode ================= .. java:package:: fr.inria.tapenade.differentiation :noindex: .. java:type:: public final class NewBlockGraphNode Fields ------ assignedRef ^^^^^^^^^^^ .. java:field:: protected Tree assignedRef :outertype: NewBlockGraphNode The variable that must be assigned or incremented by the final instruction. backFlow ^^^^^^^^ .. java:field:: public TapList backFlow :outertype: NewBlockGraphNode diffInstruction ^^^^^^^^^^^^^^^ .. java:field:: protected Instruction diffInstruction :outertype: NewBlockGraphNode The final Instruction that will be generated for this node. diffValue ^^^^^^^^^ .. java:field:: protected Tree diffValue :outertype: NewBlockGraphNode The expression that is assigned or added into the assigned tree. flow ^^^^ .. java:field:: public TapList flow :outertype: NewBlockGraphNode fromInclude ^^^^^^^^^^^ .. java:field:: protected Instruction fromInclude :outertype: NewBlockGraphNode When srcInstruction comes from an include, the include'ing Instruction. iReplic ^^^^^^^ .. java:field:: protected int iReplic :outertype: NewBlockGraphNode The replica number that was used to build "assignedRef" from "primRecv". kind ^^^^ .. java:field:: protected int kind :outertype: NewBlockGraphNode The general kind of the final Tree. In {PLAIN, INCREMENT_VARIABLE, SET_VARIABLE}. multiDir ^^^^^^^^ .. java:field:: protected boolean multiDir :outertype: NewBlockGraphNode true if node must run in multi-dir style, i.e. in a loop on directions. nbDeps ^^^^^^ .. java:field:: public int nbDeps :outertype: NewBlockGraphNode overwritesUsed ^^^^^^^^^^^^^^ .. java:field:: protected boolean overwritesUsed :outertype: NewBlockGraphNode True if this instruction reads a value that it then overwrites. Default is true because this is safest. plainTrees ^^^^^^^^^^ .. java:field:: protected TapList plainTrees :outertype: NewBlockGraphNode When the trees are created at NewBlockGraphNode creation time (e.g. for kind==PLAIN, as opposed to kind==SET_VARIABLE or INCREMENT_VARIABLE) this field holds the list of these trees. This holds only one Tree at the beginning, but may hold several trees after node's are merged. preComments ^^^^^^^^^^^ .. java:field:: protected Tree preComments :outertype: NewBlockGraphNode The prefix comments that must be attached to the future Instruction of this node. postfix comments are always null. preCommentsBlock ^^^^^^^^^^^^^^^^ .. java:field:: protected Tree preCommentsBlock :outertype: NewBlockGraphNode The prefix comments that must be attached to the future Instruction of this node. postfix comments are always null. primRecv ^^^^^^^^ .. java:field:: protected Tree primRecv :outertype: NewBlockGraphNode The primal variable whose diff is "assignedRef". rank ^^^^ .. java:field:: public int rank :outertype: NewBlockGraphNode srcInstruction ^^^^^^^^^^^^^^ .. java:field:: protected Instruction srcInstruction :outertype: NewBlockGraphNode subOrder ^^^^^^^^ .. java:field:: public int subOrder :outertype: NewBlockGraphNode text ^^^^ .. java:field:: public String text :outertype: NewBlockGraphNode tree ^^^^ .. java:field:: protected Tree tree :outertype: NewBlockGraphNode The final Tree of the instruction for this Node. May be given at creation time (e.g. when kind==PLAIN) Alternatively, may be null (e.g. when kind==SET_VARIABLE or INCREMENT_VARIABLE) and will be deduced from the contents of whereMask, assigned, and diffValue. whereMask ^^^^^^^^^ .. java:field:: protected InstructionMask whereMask :outertype: NewBlockGraphNode The where context that must be applied to the final tree. Constructors ------------ NewBlockGraphNode ^^^^^^^^^^^^^^^^^ .. java:constructor:: protected NewBlockGraphNode(int kind, Tree tree, boolean multiDir, Instruction srcInstruction, InstructionMask whereMask) :outertype: NewBlockGraphNode Methods ------- attachCommentsToTree ^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void attachCommentsToTree() :outertype: NewBlockGraphNode buildInstruction ^^^^^^^^^^^^^^^^ .. java:method:: protected void buildInstruction(SymbolTable srcSymbolTable, SymbolTable bwdSymbolTable, DifferentiationEnv adEnv, Unit diffUnit) :outertype: NewBlockGraphNode fuseWith ^^^^^^^^ .. java:method:: protected boolean fuseWith(NewBlockGraphNode otherNode) :outertype: NewBlockGraphNode Fuses this node with the "otherNode". :return: true when this node must disappear and be merged into "otherNode". @return false when "otherNode" must disappear and be merged into this node. gatherMultiInstructions ^^^^^^^^^^^^^^^^^^^^^^^ .. java:method:: protected void gatherMultiInstructions(SymbolTable diffSymbolTable, Unit diffUnit, NewSymbolHolder dirIndexSymbolHolder, IterDescriptor multiDirIterDescriptor) :outertype: NewBlockGraphNode hasManyInstructions ^^^^^^^^^^^^^^^^^^^ .. java:method:: protected boolean hasManyInstructions() :outertype: NewBlockGraphNode interestingFuseWith ^^^^^^^^^^^^^^^^^^^ .. java:method:: protected boolean interestingFuseWith(NewBlockGraphNode otherNode, NewBlockGraph thisGraph) :outertype: NewBlockGraphNode :return: true if the fusion of "this" followed by "otherNode" is possible and profitable. recomputeText ^^^^^^^^^^^^^ .. java:method:: protected void recomputeText() :outertype: NewBlockGraphNode toString ^^^^^^^^ .. java:method:: @Override public String toString() :outertype: NewBlockGraphNode