diff options
author | shadchin <shadchin@yandex-team.ru> | 2022-02-10 16:44:30 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:44:30 +0300 |
commit | 2598ef1d0aee359b4b6d5fdd1758916d5907d04f (patch) | |
tree | 012bb94d777798f1f56ac1cec429509766d05181 /contrib/libs/llvm12/include/llvm/Analysis/DivergenceAnalysis.h | |
parent | 6751af0b0c1b952fede40b19b71da8025b5d8bcf (diff) | |
download | ydb-2598ef1d0aee359b4b6d5fdd1758916d5907d04f.tar.gz |
Restoring authorship annotation for <shadchin@yandex-team.ru>. Commit 1 of 2.
Diffstat (limited to 'contrib/libs/llvm12/include/llvm/Analysis/DivergenceAnalysis.h')
-rw-r--r-- | contrib/libs/llvm12/include/llvm/Analysis/DivergenceAnalysis.h | 62 |
1 files changed, 31 insertions, 31 deletions
diff --git a/contrib/libs/llvm12/include/llvm/Analysis/DivergenceAnalysis.h b/contrib/libs/llvm12/include/llvm/Analysis/DivergenceAnalysis.h index b92ae823de..6c84f9034b 100644 --- a/contrib/libs/llvm12/include/llvm/Analysis/DivergenceAnalysis.h +++ b/contrib/libs/llvm12/include/llvm/Analysis/DivergenceAnalysis.h @@ -66,10 +66,10 @@ public: /// \brief Mark \p UniVal as a value that is always uniform. void addUniformOverride(const Value &UniVal); - /// \brief Mark \p DivVal as a value that is always divergent. Will not do so - /// if `isAlwaysUniform(DivVal)`. - /// \returns Whether the tracked divergence state of \p DivVal changed. - bool markDivergent(const Value &DivVal); + /// \brief Mark \p DivVal as a value that is always divergent. Will not do so + /// if `isAlwaysUniform(DivVal)`. + /// \returns Whether the tracked divergence state of \p DivVal changed. + bool markDivergent(const Value &DivVal); /// \brief Propagate divergence to all instructions in the region. /// Divergence is seeded by calls to \p markDivergent. @@ -85,36 +85,36 @@ public: /// \brief Whether \p Val is divergent at its definition. bool isDivergent(const Value &Val) const; - /// \brief Whether \p U is divergent. Uses of a uniform value can be - /// divergent. + /// \brief Whether \p U is divergent. Uses of a uniform value can be + /// divergent. bool isDivergentUse(const Use &U) const; void print(raw_ostream &OS, const Module *) const; private: - /// \brief Mark \p Term as divergent and push all Instructions that become - /// divergent as a result on the worklist. - void analyzeControlDivergence(const Instruction &Term); - /// \brief Mark all phi nodes in \p JoinBlock as divergent and push them on - /// the worklist. - void taintAndPushPhiNodes(const BasicBlock &JoinBlock); - - /// \brief Identify all Instructions that become divergent because \p DivExit - /// is a divergent loop exit of \p DivLoop. Mark those instructions as - /// divergent and push them on the worklist. - void propagateLoopExitDivergence(const BasicBlock &DivExit, - const Loop &DivLoop); - - /// \brief Internal implementation function for propagateLoopExitDivergence. - void analyzeLoopExitDivergence(const BasicBlock &DivExit, - const Loop &OuterDivLoop); - - /// \brief Mark all instruction as divergent that use a value defined in \p - /// OuterDivLoop. Push their users on the worklist. - void analyzeTemporalDivergence(const Instruction &I, - const Loop &OuterDivLoop); - - /// \brief Push all users of \p Val (in the region) to the worklist. + /// \brief Mark \p Term as divergent and push all Instructions that become + /// divergent as a result on the worklist. + void analyzeControlDivergence(const Instruction &Term); + /// \brief Mark all phi nodes in \p JoinBlock as divergent and push them on + /// the worklist. + void taintAndPushPhiNodes(const BasicBlock &JoinBlock); + + /// \brief Identify all Instructions that become divergent because \p DivExit + /// is a divergent loop exit of \p DivLoop. Mark those instructions as + /// divergent and push them on the worklist. + void propagateLoopExitDivergence(const BasicBlock &DivExit, + const Loop &DivLoop); + + /// \brief Internal implementation function for propagateLoopExitDivergence. + void analyzeLoopExitDivergence(const BasicBlock &DivExit, + const Loop &OuterDivLoop); + + /// \brief Mark all instruction as divergent that use a value defined in \p + /// OuterDivLoop. Push their users on the worklist. + void analyzeTemporalDivergence(const Instruction &I, + const Loop &OuterDivLoop); + + /// \brief Push all users of \p Val (in the region) to the worklist. void pushUsers(const Value &I); /// \brief Whether \p Val is divergent when read in \p ObservingBlock. @@ -125,7 +125,7 @@ private: /// /// (see markBlockJoinDivergent). bool isJoinDivergent(const BasicBlock &Block) const { - return DivergentJoinBlocks.contains(&Block); + return DivergentJoinBlocks.contains(&Block); } private: @@ -150,7 +150,7 @@ private: DenseSet<const Value *> UniformOverrides; // Blocks with joining divergent control from different predecessors. - DenseSet<const BasicBlock *> DivergentJoinBlocks; // FIXME Deprecated + DenseSet<const BasicBlock *> DivergentJoinBlocks; // FIXME Deprecated // Detected/marked divergent values. DenseSet<const Value *> DivergentValues; |