Skip to content

Commit efdd6ef

Browse files
authored
[SYCL-PTX] Add missing async and barrier builtins (#1801)
Add missing async and barrier builtins. Update the forward declaration to be in sync with the SPIRVBuiltins.td Add lit test infrastructure for libclc Signed-off-by: Victor Lomuller <[email protected]>
1 parent 4f0a3df commit efdd6ef

23 files changed

+2647
-109
lines changed

clang/lib/Sema/SemaLookup.cpp

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -908,8 +908,11 @@ bool Sema::LookupBuiltin(LookupResult &R) {
908908
*this, 0, R, II, Index.first - 1, Index.second,
909909
[this](const SPIRVBuiltin::BuiltinStruct &,
910910
FunctionDecl &NewBuiltin) {
911-
NewBuiltin.addAttr(
912-
SYCLDeviceAttr::CreateImplicit(this->Context));
911+
if (!this->getLangOpts().CPlusPlus)
912+
NewBuiltin.addAttr(OverloadableAttr::CreateImplicit(Context));
913+
if (this->getLangOpts().SYCLIsDevice)
914+
NewBuiltin.addAttr(
915+
SYCLDeviceAttr::CreateImplicit(this->Context));
913916
});
914917
return true;
915918
}

libclc/CMakeLists.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,13 @@ set( LIBCLC_TARGETS_ALL
4545
nvptx--nvidiacl
4646
nvptx64--nvidiacl
4747
)
48+
set( LIBCLC_TEST_TARGETS_ALL
49+
nvptx--nvidiacl
50+
nvptx64--nvidiacl
51+
)
4852

4953
set( LIBCLC_ROOT_DIR ${CMAKE_CURRENT_SOURCE_DIR} )
54+
set( LIBCLC_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR} )
5055

5156
set( LIBCLC_TARGETS_TO_BUILD "all"
5257
CACHE STRING "Semicolon-separated list of targets to build, or 'all'." )
@@ -65,6 +70,14 @@ endif()
6570

6671
list( SORT LIBCLC_TARGETS_TO_BUILD )
6772

73+
set(LIBCLC_TARGET_TO_TEST)
74+
75+
foreach ( t ${LIBCLC_TEST_TARGETS_ALL})
76+
if( ${t} IN_LIST LIBCLC_TARGETS_TO_BUILD )
77+
list( APPEND LIBCLC_TARGET_TO_TEST "${t}" )
78+
endif(t)
79+
endforeach(t)
80+
6881
execute_process( COMMAND ${LLVM_CONFIG} "--system-libs"
6982
OUTPUT_VARIABLE LLVM_SYSTEM_LIBS
7083
OUTPUT_STRIP_TRAILING_WHITESPACE )
@@ -261,3 +274,5 @@ install(DIRECTORY ${LIBCLC_LIBRARY_OUTPUT_INTDIR}
261274
DESTINATION lib${LLVM_LIBDIR_SUFFIX}
262275
COMPONENT clc-builtins
263276
FILES_MATCHING PATTERN "clc-*")
277+
278+
add_subdirectory(test)

libclc/generic/include/clc/async/gentype.inc

Lines changed: 130 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,16 @@
1111
#undef __CLC_GENTYPE_MANGLED
1212
#undef __CLC_GENTYPE
1313

14+
#ifdef __CLC_GEN_VEC3
15+
#define __CLC_GENTYPE char3
16+
#define __CLC_GENTYPE_U uchar3
17+
#define __CLC_GENTYPE_MANGLED Dv3_c
18+
#include __CLC_BODY
19+
#undef __CLC_GENTYPE_MANGLED
20+
#undef __CLC_GENTYPE_U
21+
#undef __CLC_GENTYPE
22+
#endif
23+
1424
#define __CLC_GENTYPE char4
1525
#define __CLC_GENTYPE_MANGLED Dv4_c
1626
#include __CLC_BODY
@@ -29,6 +39,46 @@
2939
#undef __CLC_GENTYPE_MANGLED
3040
#undef __CLC_GENTYPE
3141

42+
#ifndef __CLC_NO_SCHAR
43+
#define __CLC_GENTYPE schar
44+
#define __CLC_GENTYPE_MANGLED a
45+
#include __CLC_BODY
46+
#undef __CLC_GENTYPE_MANGLED
47+
#undef __CLC_GENTYPE
48+
49+
#define __CLC_GENTYPE schar2
50+
#define __CLC_GENTYPE_MANGLED Dv2_a
51+
#include __CLC_BODY
52+
#undef __CLC_GENTYPE_MANGLED
53+
#undef __CLC_GENTYPE
54+
55+
#ifdef __CLC_GEN_VEC3
56+
#define __CLC_GENTYPE schar3
57+
#define __CLC_GENTYPE_MANGLED Dv3_a
58+
#include __CLC_BODY
59+
#undef __CLC_GENTYPE_MANGLED
60+
#undef __CLC_GENTYPE
61+
#endif
62+
63+
#define __CLC_GENTYPE schar4
64+
#define __CLC_GENTYPE_MANGLED Dv4_a
65+
#include __CLC_BODY
66+
#undef __CLC_GENTYPE_MANGLED
67+
#undef __CLC_GENTYPE
68+
69+
#define __CLC_GENTYPE schar8
70+
#define __CLC_GENTYPE_MANGLED Dv8_a
71+
#include __CLC_BODY
72+
#undef __CLC_GENTYPE_MANGLED
73+
#undef __CLC_GENTYPE
74+
75+
#define __CLC_GENTYPE schar16
76+
#define __CLC_GENTYPE_MANGLED Dv16_a
77+
#include __CLC_BODY
78+
#undef __CLC_GENTYPE_MANGLED
79+
#undef __CLC_GENTYPE
80+
#endif
81+
3282
#define __CLC_GENTYPE uchar
3383
#define __CLC_GENTYPE_MANGLED h
3484
#include __CLC_BODY
@@ -41,6 +91,14 @@
4191
#undef __CLC_GENTYPE_MANGLED
4292
#undef __CLC_GENTYPE
4393

94+
#ifdef __CLC_GEN_VEC3
95+
#define __CLC_GENTYPE uchar3
96+
#define __CLC_GENTYPE_MANGLED Dv3_h
97+
#include __CLC_BODY
98+
#undef __CLC_GENTYPE_MANGLED
99+
#undef __CLC_GENTYPE
100+
#endif
101+
44102
#define __CLC_GENTYPE uchar4
45103
#define __CLC_GENTYPE_MANGLED Dv4_h
46104
#include __CLC_BODY
@@ -71,6 +129,14 @@
71129
#undef __CLC_GENTYPE_MANGLED
72130
#undef __CLC_GENTYPE
73131

132+
#ifdef __CLC_GEN_VEC3
133+
#define __CLC_GENTYPE short3
134+
#define __CLC_GENTYPE_MANGLED Dv3_s
135+
#include __CLC_BODY
136+
#undef __CLC_GENTYPE_MANGLED
137+
#undef __CLC_GENTYPE
138+
#endif
139+
74140
#define __CLC_GENTYPE short4
75141
#define __CLC_GENTYPE_MANGLED Dv4_s
76142
#include __CLC_BODY
@@ -101,6 +167,14 @@
101167
#undef __CLC_GENTYPE_MANGLED
102168
#undef __CLC_GENTYPE
103169

170+
#ifdef __CLC_GEN_VEC3
171+
#define __CLC_GENTYPE ushort3
172+
#define __CLC_GENTYPE_MANGLED Dv3_t
173+
#include __CLC_BODY
174+
#undef __CLC_GENTYPE_MANGLED
175+
#undef __CLC_GENTYPE
176+
#endif
177+
104178
#define __CLC_GENTYPE ushort4
105179
#define __CLC_GENTYPE_MANGLED Dv4_t
106180
#include __CLC_BODY
@@ -131,6 +205,14 @@
131205
#undef __CLC_GENTYPE_MANGLED
132206
#undef __CLC_GENTYPE
133207

208+
#ifdef __CLC_GEN_VEC3
209+
#define __CLC_GENTYPE int3
210+
#define __CLC_GENTYPE_MANGLED Dv3_i
211+
#include __CLC_BODY
212+
#undef __CLC_GENTYPE_MANGLED
213+
#undef __CLC_GENTYPE
214+
#endif
215+
134216
#define __CLC_GENTYPE int4
135217
#define __CLC_GENTYPE_MANGLED Dv4_i
136218
#include __CLC_BODY
@@ -161,6 +243,14 @@
161243
#undef __CLC_GENTYPE_MANGLED
162244
#undef __CLC_GENTYPE
163245

246+
#ifdef __CLC_GEN_VEC3
247+
#define __CLC_GENTYPE uint3
248+
#define __CLC_GENTYPE_MANGLED Dv3_j
249+
#include __CLC_BODY
250+
#undef __CLC_GENTYPE_MANGLED
251+
#undef __CLC_GENTYPE
252+
#endif
253+
164254
#define __CLC_GENTYPE uint4
165255
#define __CLC_GENTYPE_MANGLED Dv4_j
166256
#include __CLC_BODY
@@ -191,6 +281,14 @@
191281
#undef __CLC_GENTYPE_MANGLED
192282
#undef __CLC_GENTYPE
193283

284+
#ifdef __CLC_GEN_VEC3
285+
#define __CLC_GENTYPE float3
286+
#define __CLC_GENTYPE_MANGLED Dv3_f
287+
#include __CLC_BODY
288+
#undef __CLC_GENTYPE_MANGLED
289+
#undef __CLC_GENTYPE
290+
#endif
291+
194292
#define __CLC_GENTYPE float4
195293
#define __CLC_GENTYPE_MANGLED Dv4_f
196294
#include __CLC_BODY
@@ -221,6 +319,14 @@
221319
#undef __CLC_GENTYPE_MANGLED
222320
#undef __CLC_GENTYPE
223321

322+
#ifdef __CLC_GEN_VEC3
323+
#define __CLC_GENTYPE long3
324+
#define __CLC_GENTYPE_MANGLED Dv3_l
325+
#include __CLC_BODY
326+
#undef __CLC_GENTYPE_MANGLED
327+
#undef __CLC_GENTYPE
328+
#endif
329+
224330
#define __CLC_GENTYPE long4
225331
#define __CLC_GENTYPE_MANGLED Dv4_l
226332
#include __CLC_BODY
@@ -251,6 +357,14 @@
251357
#undef __CLC_GENTYPE_MANGLED
252358
#undef __CLC_GENTYPE
253359

360+
#ifdef __CLC_GEN_VEC3
361+
#define __CLC_GENTYPE ulong3
362+
#define __CLC_GENTYPE_MANGLED Dv3_m
363+
#include __CLC_BODY
364+
#undef __CLC_GENTYPE_MANGLED
365+
#undef __CLC_GENTYPE
366+
#endif
367+
254368
#define __CLC_GENTYPE ulong4
255369
#define __CLC_GENTYPE_MANGLED Dv4_m
256370
#include __CLC_BODY
@@ -284,6 +398,14 @@
284398
#undef __CLC_GENTYPE_MANGLED
285399
#undef __CLC_GENTYPE
286400

401+
#ifdef __CLC_GEN_VEC3
402+
#define __CLC_GENTYPE double3
403+
#define __CLC_GENTYPE_MANGLED Dv3_d
404+
#include __CLC_BODY
405+
#undef __CLC_GENTYPE_MANGLED
406+
#undef __CLC_GENTYPE
407+
#endif
408+
287409
#define __CLC_GENTYPE double4
288410
#define __CLC_GENTYPE_MANGLED Dv4_d
289411
#include __CLC_BODY
@@ -319,6 +441,14 @@
319441
#undef __CLC_GENTYPE_MANGLED
320442
#undef __CLC_GENTYPE
321443

444+
#ifdef __CLC_GEN_VEC3
445+
#define __CLC_GENTYPE half3
446+
#define __CLC_GENTYPE_MANGLED Dv3_h
447+
#include __CLC_BODY
448+
#undef __CLC_GENTYPE_MANGLED
449+
#undef __CLC_GENTYPE
450+
#endif
451+
322452
#define __CLC_GENTYPE half4
323453
#define __CLC_GENTYPE_MANGLED Dv4_Dh
324454
#include __CLC_BODY

libclc/generic/include/spirv/async/async_work_group_strided_copy.h

Lines changed: 0 additions & 38 deletions
This file was deleted.

libclc/generic/include/spirv/async/async_work_group_strided_copy.inc

Lines changed: 0 additions & 12 deletions
This file was deleted.

libclc/generic/include/spirv/async/prefetch.h

Lines changed: 0 additions & 11 deletions
This file was deleted.

libclc/generic/include/spirv/async/prefetch.inc

Lines changed: 0 additions & 9 deletions
This file was deleted.

libclc/generic/include/spirv/explicit_fence/explicit_memory_fence.h

Lines changed: 0 additions & 9 deletions
This file was deleted.

libclc/generic/include/spirv/spirv.h

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -196,18 +196,6 @@
196196
#include <spirv/relational/select.h>
197197
#include <spirv/relational/signbit.h>
198198

199-
/* 6.11.8 Synchronization Functions */
200-
#include <spirv/synchronization/barrier.h>
201-
202-
/* 6.11.9 Explicit Memory Fence Functions */
203-
#include <spirv/explicit_fence/explicit_memory_fence.h>
204-
205-
/* 6.11.10 Async Copy and Prefetch Functions */
206-
/* #include <spirv/async/async_work_group_copy.h> -- Explicitly omitted from SPIR-V interface. */
207-
#include <spirv/async/async_work_group_strided_copy.h>
208-
#include <spirv/async/prefetch.h>
209-
#include <spirv/async/wait_group_events.h>
210-
211199
/* 6.11.11 Atomic Functions */
212200
#include <spirv/atomic/atomic_add.h>
213201
#include <spirv/atomic/atomic_and.h>

0 commit comments

Comments
 (0)