Skip to content

Commit a779a16

Browse files
committed
[OpenCL] Remove unused extensions
Many non-language extensions are defined but also unused. This patch removes them with their tests as they do not require compiler support. The cl_khr_select_fprounding_mode extension is also removed because it has been deprecated since OpenCL 1.1 and Clang doesn't have any specific support for it. The cl_khr_context_abort extension is only referred to in "The OpenCL Specification", version 1.2 and 2.0, in Table 4.3, but no specification is provided in "The OpenCL Extension Specification" for these versions. Because it is both unused in Clang and lacks specification, this extension is removed. The following extensions are platform extensions that bring new OpenCL APIs but do not impact the kernel language nor require compiler support. They are therefore removed. - cl_khr_gl_sharing, introduced in OpenCL 1.0 - cl_khr_icd, introduced in OpenCL 1.2 - cl_khr_gl_event, introduced in OpenCL 1.1 Note: this extension adds a new API to create cl_event but it also specifies that these can only be used by clEnqueueAcquireGLObjects. Hence, they cannot be used on the device side and the extension does not impact the kernel language. - cl_khr_d3d10_sharing, introduced in OpenCL 1.1 - cl_khr_d3d11_sharing, introduced in OpenCL 1.2 - cl_khr_dx9_media_sharing, introduced in OpenCL 1.2 - cl_khr_image2d_from_buffer, introduced in OpenCL 1.2 - cl_khr_initialize_memory, introduced in OpenCL 1.2 - cl_khr_gl_depth_images, introduced in OpenCL 1.2 Note: this extension is related to cl_khr_depth_images but only the latter adds new features to the kernel language. - cl_khr_spir, introduced in OpenCL 1.2 - cl_khr_egl_event, introduced in OpenCL 1.2 Note: this extension adds a new API to create cl_event but it also specifies that these can only be used by clEnqueueAcquire* API functions. Hence, they cannot be used on the device side and the extension does not impact the kernel language. - cl_khr_egl_image, introduced in OpenCL 1.2 - cl_khr_terminate_context, introduced in OpenCL 1.2 The minimum required OpenCL version used in OpenCLExtensions.def for these extensions is not always correct. Removing these address that issue. Reviewed By: Anastasia Differential Revision: https://reviews.llvm.org/D89372
1 parent b2524eb commit a779a16

File tree

7 files changed

+10
-424
lines changed

7 files changed

+10
-424
lines changed

clang/include/clang/Basic/OpenCLExtensions.def

Lines changed: 10 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,16 @@
2323
// core - minimum OpenCL version when the extension becomes optional core
2424
// feature or core feature. ~0U indicates not a core feature or an
2525
// optional core feature.
26+
//
27+
// As per The OpenCL Extension Specification, Section 1.2, in this file, an
28+
// extension is defined if and only it either:
29+
// * affects the OpenCL language semantics or its syntax,
30+
// * adds built-in functions to the language.
31+
//
32+
// For such an extension, a preprocessor #define that matches the extension
33+
// name must be created and a #pragma is required if and only if the
34+
// compilation flow is impacted, e.g. due to a difference of syntax or
35+
// semantics in the language compared to the core standard.
2636

2737
#ifndef OPENCLEXT_INTERNAL
2838
#ifndef OPENCLEXT
@@ -34,8 +44,6 @@
3444

3545
// OpenCL 1.0.
3646
OPENCLEXT_INTERNAL(cl_khr_3d_image_writes, 100, 200)
37-
// fprounding mode is special since it is not mentioned beyond 1.0
38-
OPENCLEXT_INTERNAL(cl_khr_select_fprounding_mode, 100, 110)
3947
OPENCLEXT_INTERNAL(cl_khr_byte_addressable_store, 100, 110)
4048
OPENCLEXT_INTERNAL(cl_khr_fp16, 100, ~0U)
4149
OPENCLEXT_INTERNAL(cl_khr_fp64, 100, 120)
@@ -45,35 +53,19 @@ OPENCLEXT_INTERNAL(cl_khr_local_int32_base_atomics, 100, 110)
4553
OPENCLEXT_INTERNAL(cl_khr_local_int32_extended_atomics, 100, 110)
4654
OPENCLEXT_INTERNAL(cl_khr_int64_base_atomics, 100, ~0U)
4755
OPENCLEXT_INTERNAL(cl_khr_int64_extended_atomics, 100, ~0U)
48-
OPENCLEXT_INTERNAL(cl_khr_gl_sharing, 100, ~0U)
49-
OPENCLEXT_INTERNAL(cl_khr_icd, 100, ~0U)
50-
51-
// OpenCL 1.1.
52-
OPENCLEXT_INTERNAL(cl_khr_gl_event, 110, ~0U)
53-
OPENCLEXT_INTERNAL(cl_khr_d3d10_sharing, 110, ~0U)
5456

5557
// EMBEDDED_PROFILE
5658
OPENCLEXT_INTERNAL(cles_khr_int64, 110, ~0U)
5759

5860
// OpenCL 1.2.
59-
OPENCLEXT_INTERNAL(cl_khr_context_abort, 120, ~0U)
60-
OPENCLEXT_INTERNAL(cl_khr_d3d11_sharing, 120, ~0U)
6161
OPENCLEXT_INTERNAL(cl_khr_depth_images, 120, ~0U)
62-
OPENCLEXT_INTERNAL(cl_khr_dx9_media_sharing, 120, ~0U)
63-
OPENCLEXT_INTERNAL(cl_khr_image2d_from_buffer, 120, ~0U)
64-
OPENCLEXT_INTERNAL(cl_khr_initialize_memory, 120, ~0U)
65-
OPENCLEXT_INTERNAL(cl_khr_gl_depth_images, 120, ~0U)
6662
OPENCLEXT_INTERNAL(cl_khr_gl_msaa_sharing, 120, ~0U)
67-
OPENCLEXT_INTERNAL(cl_khr_spir, 120, ~0U)
6863

6964
// OpenCL 2.0.
70-
OPENCLEXT_INTERNAL(cl_khr_egl_event, 200, ~0U)
71-
OPENCLEXT_INTERNAL(cl_khr_egl_image, 200, ~0U)
7265
OPENCLEXT_INTERNAL(cl_khr_mipmap_image, 200, ~0U)
7366
OPENCLEXT_INTERNAL(cl_khr_mipmap_image_writes, 200, ~0U)
7467
OPENCLEXT_INTERNAL(cl_khr_srgb_image_writes, 200, ~0U)
7568
OPENCLEXT_INTERNAL(cl_khr_subgroups, 200, ~0U)
76-
OPENCLEXT_INTERNAL(cl_khr_terminate_context, 200, ~0U)
7769
OPENCLEXT_INTERNAL(cl_khr_subgroup_extended_types, 200, ~0U)
7870
OPENCLEXT_INTERNAL(cl_khr_subgroup_non_uniform_vote, 200, ~0U)
7971
OPENCLEXT_INTERNAL(cl_khr_subgroup_ballot, 200, ~0U)

clang/lib/Basic/Targets/AMDGPU.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -285,7 +285,6 @@ class LLVM_LIBRARY_VISIBILITY AMDGPUTargetInfo final : public TargetInfo {
285285
void setSupportedOpenCLOpts() override {
286286
auto &Opts = getSupportedOpenCLOpts();
287287
Opts.support("cl_clang_storage_class_specifiers");
288-
Opts.support("cl_khr_icd");
289288

290289
bool IsAMDGCN = isAMDGCN(getTriple());
291290

clang/lib/Basic/Targets/NVPTX.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,8 +128,6 @@ class LLVM_LIBRARY_VISIBILITY NVPTXTargetInfo : public TargetInfo {
128128
void setSupportedOpenCLOpts() override {
129129
auto &Opts = getSupportedOpenCLOpts();
130130
Opts.support("cl_clang_storage_class_specifiers");
131-
Opts.support("cl_khr_gl_sharing");
132-
Opts.support("cl_khr_icd");
133131

134132
Opts.support("cl_khr_fp64");
135133
Opts.support("cl_khr_byte_addressable_store");

clang/test/Misc/amdgcn.languageOptsOpenCL.cl

Lines changed: 0 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -29,17 +29,6 @@
2929
#endif
3030
#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable
3131

32-
#ifdef cl_khr_gl_sharing
33-
#error "Incorrect cl_khr_gl_sharing define"
34-
#endif
35-
#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable
36-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_sharing' - ignoring}}
37-
38-
#ifndef cl_khr_icd
39-
#error "Missing cl_khr_icd define"
40-
#endif
41-
#pragma OPENCL EXTENSION cl_khr_icd: enable
42-
4332
// Core features in CL 1.1
4433

4534
#ifndef cl_khr_byte_addressable_store
@@ -82,13 +71,6 @@
8271
// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_extended_atomics' is core feature or supported optional core feature - ignoring}}
8372
#endif
8473

85-
#ifdef cl_khr_select_fprounding_mode
86-
#error "Incorrect cl_khr_select_fprounding_mode define"
87-
#endif
88-
#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode: enable
89-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_select_fprounding_mode' - ignoring}}
90-
91-
9274
// Core feature in CL 1.2
9375
#ifndef cl_khr_fp64
9476
#error "Missing cl_khr_fp64 define"
@@ -107,80 +89,12 @@
10789
// expected-warning@-2{{OpenCL extension 'cl_khr_3d_image_writes' is core feature or supported optional core feature - ignoring}}
10890
#endif
10991

110-
111-
112-
#ifdef cl_khr_gl_event
113-
#error "Incorrect cl_khr_gl_event define"
114-
#endif
115-
#pragma OPENCL EXTENSION cl_khr_gl_event: enable
116-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_event' - ignoring}}
117-
118-
#ifdef cl_khr_d3d10_sharing
119-
#error "Incorrect cl_khr_d3d10_sharing define"
120-
#endif
121-
#pragma OPENCL EXTENSION cl_khr_d3d10_sharing: enable
122-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d10_sharing' - ignoring}}
123-
124-
#ifdef cl_khr_context_abort
125-
#error "Incorrect cl_context_abort define"
126-
#endif
127-
#pragma OPENCL EXTENSION cl_khr_context_abort: enable
128-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_context_abort' - ignoring}}
129-
130-
#ifdef cl_khr_d3d11_sharing
131-
#error "Incorrect cl_khr_d3d11_sharing define"
132-
#endif
133-
#pragma OPENCL EXTENSION cl_khr_d3d11_sharing: enable
134-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d11_sharing' - ignoring}}
135-
136-
#ifdef cl_khr_dx9_media_sharing
137-
#error "Incorrect cl_khr_dx9_media_sharing define"
138-
#endif
139-
#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing: enable
140-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_dx9_media_sharing' - ignoring}}
141-
142-
#ifdef cl_khr_image2d_from_buffer
143-
#error "Incorrect cl_khr_image2d_from_buffer define"
144-
#endif
145-
#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer: enable
146-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_image2d_from_buffer' - ignoring}}
147-
148-
#ifdef cl_khr_initialize_memory
149-
#error "Incorrect cl_khr_initialize_memory define"
150-
#endif
151-
#pragma OPENCL EXTENSION cl_khr_initialize_memory: enable
152-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_initialize_memory' - ignoring}}
153-
154-
#ifdef cl_khr_gl_depth_images
155-
#error "Incorrect cl_khr_gl_depth_images define"
156-
#endif
157-
#pragma OPENCL EXTENSION cl_khr_gl_depth_images: enable
158-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_depth_images' - ignoring}}
159-
16092
#ifdef cl_khr_gl_msaa_sharing
16193
#error "Incorrect cl_khr_gl_msaa_sharing define"
16294
#endif
16395
#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing: enable
16496
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_msaa_sharing' - ignoring}}
16597

166-
#ifdef cl_khr_spir
167-
#error "Incorrect cl_khr_spir define"
168-
#endif
169-
#pragma OPENCL EXTENSION cl_khr_spir: enable
170-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_spir' - ignoring}}
171-
172-
#ifdef cl_khr_egl_event
173-
#error "Incorrect cl_khr_egl_event define"
174-
#endif
175-
#pragma OPENCL EXTENSION cl_khr_egl_event: enable
176-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_event' - ignoring}}
177-
178-
#ifdef cl_khr_egl_image
179-
#error "Incorrect cl_khr_egl_image define"
180-
#endif
181-
#pragma OPENCL EXTENSION cl_khr_egl_image: enable
182-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_image' - ignoring}}
183-
18498
#if (__OPENCL_C_VERSION__ >= 200)
18599
#ifndef cl_khr_mipmap_image
186100
#error "Missing cl_khr_mipmap_image define"
@@ -211,12 +125,6 @@
211125
#endif
212126
#pragma OPENCL EXTENSION cl_khr_subgroups: enable
213127

214-
#ifdef cl_khr_terminate_context
215-
#error "Incorrect cl_khr_terminate_context define"
216-
#endif
217-
#pragma OPENCL EXTENSION cl_khr_terminate_context: enable
218-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_terminate_context' - ignoring}}
219-
220128
#ifndef cl_amd_media_ops
221129
#error "Missing cl_amd_media_ops define"
222130
#endif

clang/test/Misc/nvptx.languageOptsOpenCL.cl

Lines changed: 0 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,6 @@
4040
#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable
4141
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_int64_extended_atomics' - ignoring}}
4242

43-
#ifndef cl_khr_gl_sharing
44-
#error "Missing cl_khr_gl_sharing define"
45-
#endif
46-
#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable
47-
48-
#ifndef cl_khr_icd
49-
#error "Missing cl_khr_icd define"
50-
#endif
51-
#pragma OPENCL EXTENSION cl_khr_icd: enable
52-
5343
// Core features in CL 1.1
5444

5545
#ifndef cl_khr_byte_addressable_store
@@ -92,16 +82,6 @@
9282
// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_extended_atomics' is core feature or supported optional core feature - ignoring}}
9383
#endif
9484

95-
#if (__OPENCL_C_VERSION__ < 110)
96-
// Deprecated above 1.0
97-
#ifdef cl_khr_select_fprounding_mode
98-
#error "Incorrect cl_khr_select_fprounding_mode define"
99-
#endif
100-
#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode: enable
101-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_select_fprounding_mode' - ignoring}}
102-
#endif
103-
104-
10585
// Core feature in CL 1.2
10686
#ifndef cl_khr_fp64
10787
#error "Missing cl_khr_fp64 define"
@@ -118,80 +98,12 @@
11898
#pragma OPENCL EXTENSION cl_khr_3d_image_writes: enable
11999
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_3d_image_writes' - ignoring}}
120100

121-
122-
123-
#ifdef cl_khr_gl_event
124-
#error "Incorrect cl_khr_gl_event define"
125-
#endif
126-
#pragma OPENCL EXTENSION cl_khr_gl_event: enable
127-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_event' - ignoring}}
128-
129-
#ifdef cl_khr_d3d10_sharing
130-
#error "Incorrect cl_khr_d3d10_sharing define"
131-
#endif
132-
#pragma OPENCL EXTENSION cl_khr_d3d10_sharing: enable
133-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d10_sharing' - ignoring}}
134-
135-
#ifdef cl_khr_context_abort
136-
#error "Incorrect cl_context_abort define"
137-
#endif
138-
#pragma OPENCL EXTENSION cl_khr_context_abort: enable
139-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_context_abort' - ignoring}}
140-
141-
#ifdef cl_khr_d3d11_sharing
142-
#error "Incorrect cl_khr_d3d11_sharing define"
143-
#endif
144-
#pragma OPENCL EXTENSION cl_khr_d3d11_sharing: enable
145-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d11_sharing' - ignoring}}
146-
147-
#ifdef cl_khr_dx9_media_sharing
148-
#error "Incorrect cl_khr_dx9_media_sharing define"
149-
#endif
150-
#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing: enable
151-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_dx9_media_sharing' - ignoring}}
152-
153-
#ifdef cl_khr_image2d_from_buffer
154-
#error "Incorrect cl_khr_image2d_from_buffer define"
155-
#endif
156-
#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer: enable
157-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_image2d_from_buffer' - ignoring}}
158-
159-
#ifdef cl_khr_initialize_memory
160-
#error "Incorrect cl_khr_initialize_memory define"
161-
#endif
162-
#pragma OPENCL EXTENSION cl_khr_initialize_memory: enable
163-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_initialize_memory' - ignoring}}
164-
165-
#ifdef cl_khr_gl_depth_images
166-
#error "Incorrect cl_khr_gl_depth_images define"
167-
#endif
168-
#pragma OPENCL EXTENSION cl_khr_gl_depth_images: enable
169-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_depth_images' - ignoring}}
170-
171101
#ifdef cl_khr_gl_msaa_sharing
172102
#error "Incorrect cl_khr_gl_msaa_sharing define"
173103
#endif
174104
#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing: enable
175105
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_msaa_sharing' - ignoring}}
176106

177-
#ifdef cl_khr_spir
178-
#error "Incorrect cl_khr_spir define"
179-
#endif
180-
#pragma OPENCL EXTENSION cl_khr_spir: enable
181-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_spir' - ignoring}}
182-
183-
#ifdef cl_khr_egl_event
184-
#error "Incorrect cl_khr_egl_event define"
185-
#endif
186-
#pragma OPENCL EXTENSION cl_khr_egl_event: enable
187-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_event' - ignoring}}
188-
189-
#ifdef cl_khr_egl_image
190-
#error "Missing cl_khr_egl_image define"
191-
#endif
192-
#pragma OPENCL EXTENSION cl_khr_egl_image: enable
193-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_image' - ignoring}}
194-
195107
#ifdef cl_khr_srgb_image_writes
196108
#error "Incorrect cl_khr_srgb_image_writes define"
197109
#endif
@@ -204,8 +116,3 @@
204116
#pragma OPENCL EXTENSION cl_khr_subgroups: enable
205117
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_subgroups' - ignoring}}
206118

207-
#ifdef cl_khr_terminate_context
208-
#error "Incorrect cl_khr_terminate_context define"
209-
#endif
210-
#pragma OPENCL EXTENSION cl_khr_terminate_context: enable
211-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_terminate_context' - ignoring}}

0 commit comments

Comments
 (0)