clang 20.0.0git
Public Types | Public Member Functions | List of all members
clang::AtomicScopeOpenCLModel Class Reference

Defines the synch scope model for OpenCL. More...

#include "clang/Basic/SyncScope.h"

Inheritance diagram for clang::AtomicScopeOpenCLModel:
Inheritance graph
[legend]

Public Types

enum  ID {
  WorkGroup = 1 , Device = 2 , AllSVMDevices = 3 , SubGroup = 4 ,
  Last = SubGroup
}
 The enum values match the pre-defined macros __OPENCL_MEMORY_SCOPE_*, which are used to define memory_scope_* enums in opencl-c-base.h. More...
 

Public Member Functions

 AtomicScopeOpenCLModel ()
 
SyncScope map (unsigned S) const override
 Maps language specific synch scope values to internal SyncScope enum.
 
bool isValid (unsigned S) const override
 Check if the compile-time constant synch scope value is valid.
 
ArrayRef< unsignedgetRuntimeValues () const override
 Get all possible synch scope values that might be encountered at runtime for the current language.
 
unsigned getFallBackValue () const override
 If atomic builtin function is called with invalid synch scope value at runtime, it will fall back to a valid synch scope value returned by this function.
 
- Public Member Functions inherited from clang::AtomicScopeModel
virtual ~AtomicScopeModel ()
 
virtual SyncScope map (unsigned S) const =0
 Maps language specific synch scope values to internal SyncScope enum.
 
virtual bool isValid (unsigned S) const =0
 Check if the compile-time constant synch scope value is valid.
 
virtual ArrayRef< unsignedgetRuntimeValues () const =0
 Get all possible synch scope values that might be encountered at runtime for the current language.
 
virtual unsigned getFallBackValue () const =0
 If atomic builtin function is called with invalid synch scope value at runtime, it will fall back to a valid synch scope value returned by this function.
 

Additional Inherited Members

- Static Public Member Functions inherited from clang::AtomicScopeModel
static std::unique_ptr< AtomicScopeModelcreate (AtomicScopeModelKind K)
 Create an atomic scope model by AtomicScopeModelKind.
 

Detailed Description

Defines the synch scope model for OpenCL.

Definition at line 124 of file SyncScope.h.

Member Enumeration Documentation

◆ ID

The enum values match the pre-defined macros __OPENCL_MEMORY_SCOPE_*, which are used to define memory_scope_* enums in opencl-c-base.h.

Enumerator
WorkGroup 
Device 
AllSVMDevices 
SubGroup 
Last 

Definition at line 129 of file SyncScope.h.

Constructor & Destructor Documentation

◆ AtomicScopeOpenCLModel()

clang::AtomicScopeOpenCLModel::AtomicScopeOpenCLModel ( )
inline

Definition at line 137 of file SyncScope.h.

Member Function Documentation

◆ getFallBackValue()

unsigned clang::AtomicScopeOpenCLModel::getFallBackValue ( ) const
inlineoverridevirtual

If atomic builtin function is called with invalid synch scope value at runtime, it will fall back to a valid synch scope value returned by this function.

Implements clang::AtomicScopeModel.

Definition at line 166 of file SyncScope.h.

References AllSVMDevices.

◆ getRuntimeValues()

ArrayRef< unsigned > clang::AtomicScopeOpenCLModel::getRuntimeValues ( ) const
inlineoverridevirtual

Get all possible synch scope values that might be encountered at runtime for the current language.

Implements clang::AtomicScopeModel.

Definition at line 158 of file SyncScope.h.

References AllSVMDevices, Device, Last, SubGroup, and WorkGroup.

◆ isValid()

bool clang::AtomicScopeOpenCLModel::isValid ( unsigned  S) const
inlineoverridevirtual

Check if the compile-time constant synch scope value is valid.

Implements clang::AtomicScopeModel.

Definition at line 153 of file SyncScope.h.

References Last, and WorkGroup.

◆ map()

SyncScope clang::AtomicScopeOpenCLModel::map ( unsigned  S) const
inlineoverridevirtual

Maps language specific synch scope values to internal SyncScope enum.

Implements clang::AtomicScopeModel.

Definition at line 139 of file SyncScope.h.

References AllSVMDevices, Device, clang::OpenCLAllSVMDevices, clang::OpenCLDevice, clang::OpenCLSubGroup, clang::OpenCLWorkGroup, SubGroup, and WorkGroup.


The documentation for this class was generated from the following file: