Skip to content

Commit ee37fce

Browse files
authored
[SYCL][CUDA] Enable cl_khr_3d_image_writes OpenCL extension for NVPTX targets (#1977)
Enable cl_khr_3d_image_writes so that builtin for that image type can be implemented properly.
1 parent 58a0ea7 commit ee37fce

File tree

2 files changed

+41
-38
lines changed

2 files changed

+41
-38
lines changed

clang/lib/Basic/Targets/NVPTX.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,8 @@ static const int NVPTXDWARFAddrSpaceMap[] = {
4646
-1, // Default, opencl_private or opencl_generic - not defined
4747
5, // opencl_global
4848
-1,
49-
8, // opencl_local or cuda_shared
50-
4, // opencl_constant or cuda_constant
49+
8, // opencl_local or cuda_shared
50+
4, // opencl_constant or cuda_constant
5151
};
5252

5353
class LLVM_LIBRARY_VISIBILITY NVPTXTargetInfo : public TargetInfo {
@@ -144,6 +144,7 @@ class LLVM_LIBRARY_VISIBILITY NVPTXTargetInfo : public TargetInfo {
144144
Opts.support("cl_khr_int64_base_atomics");
145145
Opts.support("cl_khr_int64_extended_atomics");
146146
Opts.support("cl_khr_fp16");
147+
Opts.support("cl_khr_3d_image_writes");
147148
}
148149

149150
/// \returns If a target requires an address within a target specific address

clang/test/Misc/nvptx.languageOptsOpenCL.cl

+38-36
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
#ifndef cl_clang_storage_class_specifiers
2121
#error "Missing cl_clang_storage_class_specifiers define"
2222
#endif
23-
#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers: enable
23+
#pragma OPENCL EXTENSION cl_clang_storage_class_specifiers : enable
2424

2525
// TODO: Temporarily disabling the following test as a work around for the
2626
// SYCL codepath until the cl_khr_fp16 is restricted to only the sycldevice triple.
@@ -29,8 +29,7 @@
2929
// #ifdef cl_khr_fp16
3030
// #error "Incorrect cl_khr_fp16 define"
3131
// #endif
32-
#pragma OPENCL EXTENSION cl_khr_fp16: enable
33-
// expected warning@-1{{unsupported OpenCL extension 'cl_khr_fp16' - ignoring}}
32+
#pragma OPENCL EXTENSION cl_khr_fp16 : enable
3433

3534
// TODO: Temporarily disabling the following two tests as a work around for the
3635
// SYCL codepath until the cl_khr_int64_base_atomics and
@@ -39,63 +38,63 @@
3938
//#ifdef cl_khr_int64_base_atomics
4039
//#error "Incorrect cl_khr_int64_base_atomics define"
4140
//#endif
42-
#pragma OPENCL EXTENSION cl_khr_int64_base_atomics: enable
41+
#pragma OPENCL EXTENSION cl_khr_int64_base_atomics : enable
4342
// expectedwarning@-1{{unsupported OpenCL extension 'cl_khr_int64_base_atomics' - ignoring}}
4443

4544
//#ifdef cl_khr_int64_extended_atomics
4645
//#error "Incorrect cl_khr_int64_extended_atomics define"
4746
//#endif
48-
#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics: enable
47+
#pragma OPENCL EXTENSION cl_khr_int64_extended_atomics : enable
4948
// expectedwarning@-1{{unsupported OpenCL extension 'cl_khr_int64_extended_atomics' - ignoring}}
5049

5150
#ifndef cl_khr_gl_sharing
5251
#error "Missing cl_khr_gl_sharing define"
5352
#endif
54-
#pragma OPENCL EXTENSION cl_khr_gl_sharing: enable
53+
#pragma OPENCL EXTENSION cl_khr_gl_sharing : enable
5554

5655
#ifndef cl_khr_icd
5756
#error "Missing cl_khr_icd define"
5857
#endif
59-
#pragma OPENCL EXTENSION cl_khr_icd: enable
58+
#pragma OPENCL EXTENSION cl_khr_icd : enable
6059

6160
// Core features in CL 1.1
6261

6362
#ifndef cl_khr_byte_addressable_store
6463
#error "Missing cl_khr_byte_addressable_store define"
6564
#endif
66-
#pragma OPENCL EXTENSION cl_khr_byte_addressable_store: enable
65+
#pragma OPENCL EXTENSION cl_khr_byte_addressable_store : enable
6766
#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES
6867
// expected-warning@-2{{OpenCL extension 'cl_khr_byte_addressable_store' is core feature or supported optional core feature - ignoring}}
6968
#endif
7069

7170
#ifndef cl_khr_global_int32_base_atomics
7271
#error "Missing cl_khr_global_int32_base_atomics define"
7372
#endif
74-
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics: enable
73+
#pragma OPENCL EXTENSION cl_khr_global_int32_base_atomics : enable
7574
#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES
7675
// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_base_atomics' is core feature or supported optional core feature - ignoring}}
7776
#endif
7877

7978
#ifndef cl_khr_global_int32_extended_atomics
8079
#error "Missing cl_khr_global_int32_extended_atomics define"
8180
#endif
82-
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics: enable
81+
#pragma OPENCL EXTENSION cl_khr_global_int32_extended_atomics : enable
8382
#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES
8483
// expected-warning@-2{{OpenCL extension 'cl_khr_global_int32_extended_atomics' is core feature or supported optional core feature - ignoring}}
8584
#endif
8685

8786
#ifndef cl_khr_local_int32_base_atomics
8887
#error "Missing cl_khr_local_int32_base_atomics define"
8988
#endif
90-
#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics: enable
89+
#pragma OPENCL EXTENSION cl_khr_local_int32_base_atomics : enable
9190
#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES
9291
// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_base_atomics' is core feature or supported optional core feature - ignoring}}
9392
#endif
9493

9594
#ifndef cl_khr_local_int32_extended_atomics
9695
#error "Missing cl_khr_local_int32_extended_atomics define"
9796
#endif
98-
#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics: enable
97+
#pragma OPENCL EXTENSION cl_khr_local_int32_extended_atomics : enable
9998
#if (__OPENCL_C_VERSION__ >= 110) && defined TEST_CORE_FEATURES
10099
// expected-warning@-2{{OpenCL extension 'cl_khr_local_int32_extended_atomics' is core feature or supported optional core feature - ignoring}}
101100
#endif
@@ -105,115 +104,118 @@
105104
#ifdef cl_khr_select_fprounding_mode
106105
#error "Incorrect cl_khr_select_fprounding_mode define"
107106
#endif
108-
#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode: enable
107+
#pragma OPENCL EXTENSION cl_khr_select_fprounding_mode : enable
109108
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_select_fprounding_mode' - ignoring}}
110109
#endif
111110

112-
113111
// Core feature in CL 1.2
114112
#ifndef cl_khr_fp64
115113
#error "Missing cl_khr_fp64 define"
116114
#endif
117-
#pragma OPENCL EXTENSION cl_khr_fp64: enable
115+
#pragma OPENCL EXTENSION cl_khr_fp64 : enable
118116
#if (__OPENCL_C_VERSION__ >= 120) && defined TEST_CORE_FEATURES
119117
// expected-warning@-2{{OpenCL extension 'cl_khr_fp64' is core feature or supported optional core feature - ignoring}}
120118
#endif
121119

120+
// TODO: Temporarily disabling the following test as a work around for the
121+
// SYCL codepath until the cl_khr_3d_image_writes is restricted to
122+
// only the sycldevice triple.
123+
122124
// Core feature in CL 2.0, but not supported on nvptx
123-
#ifdef cl_khr_3d_image_writes
124-
#error "Incorrect cl_khr_3d_image_writes define"
125+
// #ifdef cl_khr_3d_image_writes
126+
// #error "Incorrect cl_khr_3d_image_writes define"
127+
// #endif
128+
#pragma OPENCL EXTENSION cl_khr_3d_image_writes : enable
129+
#if (__OPENCL_C_VERSION__ >= 200) && defined TEST_CORE_FEATURES
130+
// expected-warning@-2{{OpenCL extension 'cl_khr_3d_image_writes' is core feature or supported optional core feature - ignoring}}
125131
#endif
126-
#pragma OPENCL EXTENSION cl_khr_3d_image_writes: enable
127-
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_3d_image_writes' - ignoring}}
128-
129-
130132

131133
#ifdef cl_khr_gl_event
132134
#error "Incorrect cl_khr_gl_event define"
133135
#endif
134-
#pragma OPENCL EXTENSION cl_khr_gl_event: enable
136+
#pragma OPENCL EXTENSION cl_khr_gl_event : enable
135137
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_event' - ignoring}}
136138

137139
#ifdef cl_khr_d3d10_sharing
138140
#error "Incorrect cl_khr_d3d10_sharing define"
139141
#endif
140-
#pragma OPENCL EXTENSION cl_khr_d3d10_sharing: enable
142+
#pragma OPENCL EXTENSION cl_khr_d3d10_sharing : enable
141143
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d10_sharing' - ignoring}}
142144

143145
#ifdef cl_khr_context_abort
144146
#error "Incorrect cl_context_abort define"
145147
#endif
146-
#pragma OPENCL EXTENSION cl_khr_context_abort: enable
148+
#pragma OPENCL EXTENSION cl_khr_context_abort : enable
147149
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_context_abort' - ignoring}}
148150

149151
#ifdef cl_khr_d3d11_sharing
150152
#error "Incorrect cl_khr_d3d11_sharing define"
151153
#endif
152-
#pragma OPENCL EXTENSION cl_khr_d3d11_sharing: enable
154+
#pragma OPENCL EXTENSION cl_khr_d3d11_sharing : enable
153155
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_d3d11_sharing' - ignoring}}
154156

155157
#ifdef cl_khr_dx9_media_sharing
156158
#error "Incorrect cl_khr_dx9_media_sharing define"
157159
#endif
158-
#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing: enable
160+
#pragma OPENCL EXTENSION cl_khr_dx9_media_sharing : enable
159161
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_dx9_media_sharing' - ignoring}}
160162

161163
#ifdef cl_khr_image2d_from_buffer
162164
#error "Incorrect cl_khr_image2d_from_buffer define"
163165
#endif
164-
#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer: enable
166+
#pragma OPENCL EXTENSION cl_khr_image2d_from_buffer : enable
165167
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_image2d_from_buffer' - ignoring}}
166168

167169
#ifdef cl_khr_initialize_memory
168170
#error "Incorrect cl_khr_initialize_memory define"
169171
#endif
170-
#pragma OPENCL EXTENSION cl_khr_initialize_memory: enable
172+
#pragma OPENCL EXTENSION cl_khr_initialize_memory : enable
171173
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_initialize_memory' - ignoring}}
172174

173175
#ifdef cl_khr_gl_depth_images
174176
#error "Incorrect cl_khr_gl_depth_images define"
175177
#endif
176-
#pragma OPENCL EXTENSION cl_khr_gl_depth_images: enable
178+
#pragma OPENCL EXTENSION cl_khr_gl_depth_images : enable
177179
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_depth_images' - ignoring}}
178180

179181
#ifdef cl_khr_gl_msaa_sharing
180182
#error "Incorrect cl_khr_gl_msaa_sharing define"
181183
#endif
182-
#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing: enable
184+
#pragma OPENCL EXTENSION cl_khr_gl_msaa_sharing : enable
183185
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_gl_msaa_sharing' - ignoring}}
184186

185187
#ifdef cl_khr_spir
186188
#error "Incorrect cl_khr_spir define"
187189
#endif
188-
#pragma OPENCL EXTENSION cl_khr_spir: enable
190+
#pragma OPENCL EXTENSION cl_khr_spir : enable
189191
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_spir' - ignoring}}
190192

191193
#ifdef cl_khr_egl_event
192194
#error "Incorrect cl_khr_egl_event define"
193195
#endif
194-
#pragma OPENCL EXTENSION cl_khr_egl_event: enable
196+
#pragma OPENCL EXTENSION cl_khr_egl_event : enable
195197
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_event' - ignoring}}
196198

197199
#ifdef cl_khr_egl_image
198200
#error "Missing cl_khr_egl_image define"
199201
#endif
200-
#pragma OPENCL EXTENSION cl_khr_egl_image: enable
202+
#pragma OPENCL EXTENSION cl_khr_egl_image : enable
201203
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_egl_image' - ignoring}}
202204

203205
#ifdef cl_khr_srgb_image_writes
204206
#error "Incorrect cl_khr_srgb_image_writes define"
205207
#endif
206-
#pragma OPENCL EXTENSION cl_khr_srgb_image_writes: enable
208+
#pragma OPENCL EXTENSION cl_khr_srgb_image_writes : enable
207209
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_srgb_image_writes' - ignoring}}
208210

209211
#ifdef cl_khr_subgroups
210212
#error "Incorrect cl_khr_subgroups define"
211213
#endif
212-
#pragma OPENCL EXTENSION cl_khr_subgroups: enable
214+
#pragma OPENCL EXTENSION cl_khr_subgroups : enable
213215
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_subgroups' - ignoring}}
214216

215217
#ifdef cl_khr_terminate_context
216218
#error "Incorrect cl_khr_terminate_context define"
217219
#endif
218-
#pragma OPENCL EXTENSION cl_khr_terminate_context: enable
220+
#pragma OPENCL EXTENSION cl_khr_terminate_context : enable
219221
// expected-warning@-1{{unsupported OpenCL extension 'cl_khr_terminate_context' - ignoring}}

0 commit comments

Comments
 (0)