jhuber6 created this revision. jhuber6 added reviewers: ebevhan, arsenm, JonChesterfield, jdoerfert, tianshilei1992, tra, yaxunl, rjmccall. Herald added subscribers: jeroen.dobbelaere, Naghasan, ldrumm, arichardson, Anastasia. Herald added a reviewer: aaron.ballman. Herald added a project: All. jhuber6 requested review of this revision. Herald added subscribers: cfe-commits, wangpc, wdng. Herald added a project: clang.
We provide these OpenCL attributes for specifying address spaces. These more or less map directly to the versions described by the backend documentation. However, when using these for more generic reasons, the `opencl` keyword doesn't help since this is more tied to the backend. This patch adds an alias to just call it `addrspace_` instead of `opencl_`. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D156816 Files: clang/include/clang/Basic/Attr.td clang/include/clang/Basic/AttrDocs.td Index: clang/include/clang/Basic/AttrDocs.td =================================================================== --- clang/include/clang/Basic/AttrDocs.td +++ clang/include/clang/Basic/AttrDocs.td @@ -3818,7 +3818,7 @@ def OpenCLAddressSpaceGenericDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__generic, generic, [[clang::opencl_generic]]"; + let Heading = "__generic, generic, [[clang::addrspace_generic]], [[clang::opencl_generic]]"; let Content = [{ The generic address space attribute is only available with OpenCL v2.0 and later. It can be used with pointer types. Variables in global and local scope and @@ -3831,7 +3831,7 @@ def OpenCLAddressSpaceConstantDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__constant, constant, [[clang::opencl_constant]]"; + let Heading = "__constant, constant, [[clang::addrspace_constant]], [[clang::opencl_constant]]"; let Content = [{ The constant address space attribute signals that an object is located in a constant (non-modifiable) memory region. It is available to all work items. @@ -3843,7 +3843,7 @@ def OpenCLAddressSpaceGlobalDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__global, global, [[clang::opencl_global]]"; + let Heading = "__global, global, [[clang::addrspace_global]], [[clang::opencl_global]]"; let Content = [{ The global address space attribute specifies that an object is allocated in global memory, which is accessible by all work items. The content stored in this @@ -3881,7 +3881,7 @@ def OpenCLAddressSpaceLocalDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__local, local, [[clang::opencl_local]]"; + let Heading = "__local, local, [[clang::addrspace_local]], [[clang::opencl_local]]"; let Content = [{ The local address space specifies that an object is allocated in the local (work group) memory area, which is accessible to all work items in the same work @@ -3894,7 +3894,7 @@ def OpenCLAddressSpacePrivateDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__private, private, [[clang::opencl_private]]"; + let Heading = "__private, private, [[clang::addrspace_private]], [[clang::opencl_private]]"; let Content = [{ The private address space specifies that an object is allocated in the private (work item) memory. Other work items cannot access the same memory area and its Index: clang/include/clang/Basic/Attr.td =================================================================== --- clang/include/clang/Basic/Attr.td +++ clang/include/clang/Basic/Attr.td @@ -1344,13 +1344,13 @@ def OpenCLPrivateAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__private">, CustomKeyword<"private">, - Clang<"opencl_private">]; - let Documentation = [OpenCLAddressSpacePrivateDocs]; + Clang<"opencl_private">, Clang<"addrspace_private">]; + let Documentation = [kpenCLAddressSpacePrivateDocs]; } def OpenCLGlobalAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__global">, CustomKeyword<"global">, - Clang<"opencl_global">]; + Clang<"opencl_global">, Clang<"addrspace_global">]; let Documentation = [OpenCLAddressSpaceGlobalDocs]; } @@ -1366,19 +1366,19 @@ def OpenCLLocalAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__local">, CustomKeyword<"local">, - Clang<"opencl_local">]; + Clang<"opencl_local", Clang<"addrspace_local">>]; let Documentation = [OpenCLAddressSpaceLocalDocs]; } def OpenCLConstantAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__constant">, CustomKeyword<"constant">, - Clang<"opencl_constant">]; + Clang<"opencl_constant", Clang<"addrspace_constant">>]; let Documentation = [OpenCLAddressSpaceConstantDocs]; } def OpenCLGenericAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__generic">, CustomKeyword<"generic">, - Clang<"opencl_generic">]; + Clang<"opencl_generic", Clang<"addrspace_generic">>]; let Documentation = [OpenCLAddressSpaceGenericDocs]; }
Index: clang/include/clang/Basic/AttrDocs.td =================================================================== --- clang/include/clang/Basic/AttrDocs.td +++ clang/include/clang/Basic/AttrDocs.td @@ -3818,7 +3818,7 @@ def OpenCLAddressSpaceGenericDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__generic, generic, [[clang::opencl_generic]]"; + let Heading = "__generic, generic, [[clang::addrspace_generic]], [[clang::opencl_generic]]"; let Content = [{ The generic address space attribute is only available with OpenCL v2.0 and later. It can be used with pointer types. Variables in global and local scope and @@ -3831,7 +3831,7 @@ def OpenCLAddressSpaceConstantDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__constant, constant, [[clang::opencl_constant]]"; + let Heading = "__constant, constant, [[clang::addrspace_constant]], [[clang::opencl_constant]]"; let Content = [{ The constant address space attribute signals that an object is located in a constant (non-modifiable) memory region. It is available to all work items. @@ -3843,7 +3843,7 @@ def OpenCLAddressSpaceGlobalDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__global, global, [[clang::opencl_global]]"; + let Heading = "__global, global, [[clang::addrspace_global]], [[clang::opencl_global]]"; let Content = [{ The global address space attribute specifies that an object is allocated in global memory, which is accessible by all work items. The content stored in this @@ -3881,7 +3881,7 @@ def OpenCLAddressSpaceLocalDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__local, local, [[clang::opencl_local]]"; + let Heading = "__local, local, [[clang::addrspace_local]], [[clang::opencl_local]]"; let Content = [{ The local address space specifies that an object is allocated in the local (work group) memory area, which is accessible to all work items in the same work @@ -3894,7 +3894,7 @@ def OpenCLAddressSpacePrivateDocs : Documentation { let Category = DocOpenCLAddressSpaces; - let Heading = "__private, private, [[clang::opencl_private]]"; + let Heading = "__private, private, [[clang::addrspace_private]], [[clang::opencl_private]]"; let Content = [{ The private address space specifies that an object is allocated in the private (work item) memory. Other work items cannot access the same memory area and its Index: clang/include/clang/Basic/Attr.td =================================================================== --- clang/include/clang/Basic/Attr.td +++ clang/include/clang/Basic/Attr.td @@ -1344,13 +1344,13 @@ def OpenCLPrivateAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__private">, CustomKeyword<"private">, - Clang<"opencl_private">]; - let Documentation = [OpenCLAddressSpacePrivateDocs]; + Clang<"opencl_private">, Clang<"addrspace_private">]; + let Documentation = [kpenCLAddressSpacePrivateDocs]; } def OpenCLGlobalAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__global">, CustomKeyword<"global">, - Clang<"opencl_global">]; + Clang<"opencl_global">, Clang<"addrspace_global">]; let Documentation = [OpenCLAddressSpaceGlobalDocs]; } @@ -1366,19 +1366,19 @@ def OpenCLLocalAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__local">, CustomKeyword<"local">, - Clang<"opencl_local">]; + Clang<"opencl_local", Clang<"addrspace_local">>]; let Documentation = [OpenCLAddressSpaceLocalDocs]; } def OpenCLConstantAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__constant">, CustomKeyword<"constant">, - Clang<"opencl_constant">]; + Clang<"opencl_constant", Clang<"addrspace_constant">>]; let Documentation = [OpenCLAddressSpaceConstantDocs]; } def OpenCLGenericAddressSpace : TypeAttr { let Spellings = [CustomKeyword<"__generic">, CustomKeyword<"generic">, - Clang<"opencl_generic">]; + Clang<"opencl_generic", Clang<"addrspace_generic">>]; let Documentation = [OpenCLAddressSpaceGenericDocs]; }
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits