Skip to content
  • Konstantin Zhuravlyov's avatar
    Enhance synchscope representation · bb80d3e1
    Konstantin Zhuravlyov authored
      OpenCL 2.0 introduces the notion of memory scopes in atomic operations to
      global and local memory. These scopes restrict how synchronization is
      achieved, which can result in improved performance.
    
      This change extends existing notion of synchronization scopes in LLVM to
      support arbitrary scopes expressed as target-specific strings, in addition to
      the already defined scopes (single thread, system).
    
      The LLVM IR and MIR syntax for expressing synchronization scopes has changed
      to use *syncscope("<scope>")*, where <scope> can be "singlethread" (this
      replaces *singlethread* keyword), or a target-specific name. As before, if
      the scope is not specified, it defaults to CrossThread/System scope.
    
      Implementation details:
        - Mapping from synchronization scope name/string to synchronization scope id
          is stored in LLVM context;
        - CrossThread/System and SingleThread scopes are pre-defined to efficiently
          check for known scopes without comparing strings;
        - Synchronization scope names are stored in SYNC_SCOPE_NAMES_BLOCK in
          the bitcode.
    
    Differential Revision: https://reviews.llvm.org/D21723
    
    llvm-svn: 307722
    bb80d3e1
Loading