[PATCH] D147116: [RFC] Introduce convergence control intrinsics

Sameer Sahasrabuddhe via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Mar 28 23:58:42 PDT 2023


sameerds created this revision.
Herald added subscribers: jdoerfert, hiraditya.
Herald added a project: All.
sameerds requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

This is a continuation of the original attempt in:
https://reviews.llvm.org/D85603

This change also obsoletes an earlier attempt at restarting the work on
convergence tokens:
https://reviews.llvm.org/D104504

Based on concepts originally outlined by
Nicolai Haehnle <nicolai.haehnle at amd.com>

Changes relative to D85603 <https://reviews.llvm.org/D85603>:

1. Clean up the definition of a "convergent operation", a convergent call and convergent function.
2. Clean up the relationship between dynamic instances, sets of threads and convergence tokens.
3. Redistribute the formal rules into the definitions of the convergence intrinsics.
4. Expand on the semantics of entering a function from outside LLVM, and the environment-defined outcome of the entry intrinsic.
5. Replace the term "cycle" with "closed path". The static rules are defined in terms of closed paths, and then a relation is established with cycles.
6. Specify that if a function contains a controlled convergent operation, then all convergent operations in that function must be controlled.
7. Describe an optional procedure to infer tokens for uncontrolled convergent operations.
8. Introduce controlled maximal convergence-before and controlled m-converged property as an update to the original properties in UniformityAnalysis


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D147116

Files:
  llvm/docs/ConvergenceAndUniformity.rst
  llvm/docs/ConvergentOperations.rst
  llvm/docs/LangRef.rst
  llvm/docs/Reference.rst
  llvm/docs/convergence-heart.png
  llvm/include/llvm/ADT/GenericCycleImpl.h
  llvm/include/llvm/ADT/GenericCycleInfo.h
  llvm/include/llvm/Analysis/CycleAnalysis.h
  llvm/include/llvm/IR/CycleInfo.h
  llvm/include/llvm/IR/Intrinsics.td
  llvm/include/llvm/IR/LLVMContext.h
  llvm/lib/Analysis/CycleAnalysis.cpp
  llvm/lib/IR/CMakeLists.txt
  llvm/lib/IR/CycleInfo.cpp
  llvm/lib/IR/LLVMContext.cpp
  llvm/lib/IR/Verifier.cpp
  llvm/test/Bitcode/operand-bundles-bc-analyzer.ll
  llvm/test/Verifier/convergencectrl-invalid.ll
  llvm/test/Verifier/convergencectrl-valid.ll

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D147116.509224.patch
Type: text/x-patch
Size: 100712 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230329/21bad673/attachment-0001.bin>


More information about the llvm-commits mailing list