Skip to content

Commit 64b771a

Browse files
authored
[SPIR-V] Enabling SPIR-V builtin lookup in device SYCL mode (#1384)
Enable -fdeclare-spirv-builtins for SYCL device compilation mode For device compilation, SPIR-V builtins are now looked up by the device compiler. They now longer need to be forward declared. [SYCL-PTX] Revert manual mangling of some SPIR-V builtins [SYCL-PTX] Add fmod builtin [SYCL-PTX] Update Atomic mangling Signed-off-by: Victor Lomuller <[email protected]>
1 parent 899600b commit 64b771a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

69 files changed

+692
-845
lines changed

clang/lib/Driver/ToolChains/Clang.cpp

+1
Original file line numberDiff line numberDiff line change
@@ -4086,6 +4086,7 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
40864086
// We want to compile sycl kernels.
40874087
CmdArgs.push_back("-fsycl");
40884088
CmdArgs.push_back("-fsycl-is-device");
4089+
CmdArgs.push_back("-fdeclare-spirv-builtins");
40894090
// Pass the triple of host when doing SYCL
40904091
auto AuxT = llvm::Triple(llvm::sys::getProcessTriple());
40914092
std::string NormalizedTriple = AuxT.normalize();

clang/lib/Sema/SPIRVBuiltins.td

+3-3
Original file line numberDiff line numberDiff line change
@@ -286,16 +286,16 @@ class ConstOCLSPVBuiltin<string _Name, list<Type> _Signature> :
286286

287287
// OpenCL v1.0/1.2/2.0 s6.1.1: Built-in Scalar Data Types.
288288
def Bool : IntType<"bool", QualType<"BoolTy">, 1>;
289-
def TrueChar : IntType<"char", QualType<"CharTy", 0, 1>, 8>;
289+
def TrueChar : IntType<"char", QualType<"CharTy", 0, 1>, 8>;
290290
def Char : IntType<"schar", QualType<"SignedCharTy", 0, 1>, 8>;
291291
def SChar : IntType<"schar", QualType<"SignedCharTy", 0, 1>, 8>;
292292
def UChar : UIntType<"uchar", QualType<"UnsignedCharTy">, 8>;
293293
def Short : IntType<"short", QualType<"ShortTy", 0, 1>, 16>;
294294
def UShort : UIntType<"ushort", QualType<"UnsignedShortTy">, 16>;
295295
def Int : IntType<"int", QualType<"IntTy", 0, 1>, 32>;
296296
def UInt : UIntType<"uint", QualType<"UnsignedIntTy">, 32>;
297-
def Long : IntType<"long", QualType<"LongTy", 0, 1>, 64>;
298-
def ULong : UIntType<"ulong", QualType<"UnsignedLongTy">, 64>;
297+
def Long : IntType<"long", QualType<"getIntTypeForBitwidth(64, true)", 0, 1>, 64>;
298+
def ULong : UIntType<"ulong", QualType<"getIntTypeForBitwidth(64, false)">, 64>;
299299
def Float : FPType<"float", QualType<"FloatTy">, 32>;
300300
def Double : FPType<"double", QualType<"DoubleTy">, 64>;
301301
def Half : FPType<"half", QualType<"Float16Ty">, 16>;

libclc/generic/include/func.h

+1
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@
55
#define _CLC_DECL
66
#define _CLC_DEF __attribute__((always_inline))
77
#define _CLC_INLINE __attribute__((always_inline)) inline
8+
#define _CLC_CONVERGENT __attribute__((convergent))
89

910
#endif // CLC_FUNC

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

+4-8
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,7 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#define FN_NAME __CLC_XCONCAT(_Z22__spirv_GroupAsyncCopyI, __SPIRV_GENTYPE_MANGLED, E9ocl_eventN5__spv5ScopeEPU3, __SPIRV_DST_ADDR_SPACE_MANGLED, T_PU3, __SPIRV_SRC_ADDR_SPACE_MANGLED, S3_mmS0_)
10-
_CLC_DECL event_t FN_NAME (
11-
enum Scope scope,
12-
__SPIRV_DST_ADDR_SPACE __SPIRV_GENTYPE *dst,
13-
const __SPIRV_SRC_ADDR_SPACE __SPIRV_GENTYPE *src,
14-
size_t num_elements,
15-
size_t stride,
16-
event_t event);
9+
_CLC_OVERLOAD _CLC_DECL event_t __spirv_GroupAsyncCopy(
10+
unsigned int scope, __SPIRV_DST_ADDR_SPACE __SPIRV_GENTYPE *dst,
11+
const __SPIRV_SRC_ADDR_SPACE __SPIRV_GENTYPE *src, size_t num_elements,
12+
size_t stride, event_t event);

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

+3-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
10-
_CLC_DEF void _Z23__spirv_GroupWaitEventsN5__spv5ScopeEjP9ocl_event(
11-
enum Scope scope, int num_events, event_t *event_list);
9+
_CLC_OVERLOAD _CLC_DEF void __spirv_GroupWaitEvents(unsigned int scope,
10+
int num_events,
11+
event_t *event_list);

libclc/generic/include/spirv/atomic/atomic_cmpxchg.h

+32-16
Original file line numberDiff line numberDiff line change
@@ -7,22 +7,38 @@
77
//===----------------------------------------------------------------------===//
88

99
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
10-
_CLC_DECL int _Z29__spirv_AtomicCompareExchangePU3AS3iN5__spv5ScopeENS1_19MemorySemanticsMaskES3_ii(
11-
volatile local int *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, int, int);
12-
_CLC_DECL int _Z29__spirv_AtomicCompareExchangePU3AS1iN5__spv5ScopeENS1_19MemorySemanticsMaskES3_ii(
13-
volatile global int *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, int, int);
14-
_CLC_DECL uint _Z29__spirv_AtomicCompareExchangePU3AS3jN5__spv5ScopeENS1_19MemorySemanticsMaskES3_jj(
15-
volatile local uint *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, uint, uint);
16-
_CLC_DECL uint _Z29__spirv_AtomicCompareExchangePU3AS1jN5__spv5ScopeENS1_19MemorySemanticsMaskES3_jj(
17-
volatile global uint *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, uint, uint);
10+
_CLC_DECL int
11+
_Z29__spirv_AtomicCompareExchangePU3AS3iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_ii(
12+
volatile local int *, enum Scope, enum MemorySemanticsMask,
13+
enum MemorySemanticsMask, int, int);
14+
_CLC_DECL int
15+
_Z29__spirv_AtomicCompareExchangePU3AS1iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_ii(
16+
volatile global int *, enum Scope, enum MemorySemanticsMask,
17+
enum MemorySemanticsMask, int, int);
18+
_CLC_DECL uint
19+
_Z29__spirv_AtomicCompareExchangePU3AS3jN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_jj(
20+
volatile local uint *, enum Scope, enum MemorySemanticsMask,
21+
enum MemorySemanticsMask, uint, uint);
22+
_CLC_DECL uint
23+
_Z29__spirv_AtomicCompareExchangePU3AS1jN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_jj(
24+
volatile global uint *, enum Scope, enum MemorySemanticsMask,
25+
enum MemorySemanticsMask, uint, uint);
1826

1927
#ifdef cl_khr_int64_base_atomics
20-
_CLC_DECL long _Z29__spirv_AtomicCompareExchangePU3AS3lN5__spv5ScopeENS1_19MemorySemanticsMaskES3_ll(
21-
volatile local long *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, long, long);
22-
_CLC_DECL long _Z29__spirv_AtomicCompareExchangePU3AS1lN5__spv5ScopeENS1_19MemorySemanticsMaskES3_ll(
23-
volatile global long *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, long, long);
24-
_CLC_DECL unsigned long _Z29__spirv_AtomicCompareExchangePU3AS3mN5__spv5ScopeENS1_19MemorySemanticsMaskES3_mm(
25-
volatile local unsigned long *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, unsigned long, unsigned long);
26-
_CLC_DECL unsigned long _Z29__spirv_AtomicCompareExchangePU3AS1mN5__spv5ScopeENS1_19MemorySemanticsMaskES3_mm(
27-
volatile global unsigned long *, enum Scope, enum MemorySemanticsMask, enum MemorySemanticsMask, unsigned long, unsigned long);
28+
_CLC_DECL long
29+
_Z29__spirv_AtomicCompareExchangePU3AS3lN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_ll(
30+
volatile local long *, enum Scope, enum MemorySemanticsMask,
31+
enum MemorySemanticsMask, long, long);
32+
_CLC_DECL long
33+
_Z29__spirv_AtomicCompareExchangePU3AS1lN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_ll(
34+
volatile global long *, enum Scope, enum MemorySemanticsMask,
35+
enum MemorySemanticsMask, long, long);
36+
_CLC_DECL unsigned long
37+
_Z29__spirv_AtomicCompareExchangePU3AS3mN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_mm(
38+
volatile local unsigned long *, enum Scope, enum MemorySemanticsMask,
39+
enum MemorySemanticsMask, unsigned long, unsigned long);
40+
_CLC_DECL unsigned long
41+
_Z29__spirv_AtomicCompareExchangePU3AS1mN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_mm(
42+
volatile global unsigned long *, enum Scope, enum MemorySemanticsMask,
43+
enum MemorySemanticsMask, unsigned long, unsigned long);
2844
#endif

libclc/generic/include/spirv/atomic/atomic_dec.h

+16-8
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,30 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
_CLC_DECL int _Z24__spirv_AtomicIDecrementPU3AS3iN5__spv5ScopeENS1_19MemorySemanticsMaskE(
9+
_CLC_DECL int
10+
_Z24__spirv_AtomicIDecrementPU3AS3iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1011
volatile local int *, enum Scope, enum MemorySemanticsMask);
11-
_CLC_DECL int _Z24__spirv_AtomicIDecrementPU3AS1iN5__spv5ScopeENS1_19MemorySemanticsMaskE(
12+
_CLC_DECL int
13+
_Z24__spirv_AtomicIDecrementPU3AS1iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1214
volatile global int *, enum Scope, enum MemorySemanticsMask);
13-
_CLC_DECL uint _Z24__spirv_AtomicIDecrementPU3AS3jN5__spv5ScopeENS1_19MemorySemanticsMaskE(
15+
_CLC_DECL uint
16+
_Z24__spirv_AtomicIDecrementPU3AS3jN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1417
volatile local uint *, enum Scope, enum MemorySemanticsMask);
15-
_CLC_DECL uint _Z24__spirv_AtomicIDecrementPU3AS1jN5__spv5ScopeENS1_19MemorySemanticsMaskE(
18+
_CLC_DECL uint
19+
_Z24__spirv_AtomicIDecrementPU3AS1jN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1620
volatile global uint *, enum Scope, enum MemorySemanticsMask);
1721

1822
#ifdef cl_khr_int64_base_atomics
19-
_CLC_DECL long _Z24__spirv_AtomicIDecrementPU3AS3lN5__spv5ScopeENS1_19MemorySemanticsMaskE(
23+
_CLC_DECL long
24+
_Z24__spirv_AtomicIDecrementPU3AS3lN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2025
volatile local long *, enum Scope, enum MemorySemanticsMask);
21-
_CLC_DECL long _Z24__spirv_AtomicIDecrementPU3AS1lN5__spv5ScopeENS1_19MemorySemanticsMaskE(
26+
_CLC_DECL long
27+
_Z24__spirv_AtomicIDecrementPU3AS1lN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2228
volatile global long *, enum Scope, enum MemorySemanticsMask);
23-
_CLC_DECL unsigned long _Z24__spirv_AtomicIDecrementPU3AS3mN5__spv5ScopeENS1_19MemorySemanticsMaskE(
29+
_CLC_DECL unsigned long
30+
_Z24__spirv_AtomicIDecrementPU3AS3mN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2431
volatile local unsigned long *, enum Scope, enum MemorySemanticsMask);
25-
_CLC_DECL unsigned long _Z24__spirv_AtomicIDecrementPU3AS1mN5__spv5ScopeENS1_19MemorySemanticsMaskE(
32+
_CLC_DECL unsigned long
33+
_Z24__spirv_AtomicIDecrementPU3AS1mN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2634
volatile global unsigned long *, enum Scope, enum MemorySemanticsMask);
2735
#endif

libclc/generic/include/spirv/atomic/atomic_decl.inc

+6-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,12 @@
77
//===----------------------------------------------------------------------===//
88

99
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
10-
#define __CLC_DECLARE_ATOMIC(ADDRSPACE, ADDRSPACE_MANGLED, TYPE, TYPE_MANGLED, NAME, NAME_LEN) \
11-
_CLC_DECL TYPE _Z##NAME_LEN##NAME##PU3##ADDRSPACE_MANGLED##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskE##TYPE_MANGLED (volatile ADDRSPACE TYPE *, enum Scope, enum MemorySemanticsMask, TYPE);
10+
#define __CLC_DECLARE_ATOMIC(ADDRSPACE, ADDRSPACE_MANGLED, TYPE, TYPE_MANGLED, \
11+
NAME, NAME_LEN) \
12+
_CLC_DECL TYPE \
13+
_Z##NAME_LEN##NAME##PU3##ADDRSPACE_MANGLED##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE##TYPE_MANGLED( \
14+
volatile ADDRSPACE TYPE *, enum Scope, enum MemorySemanticsMask, \
15+
TYPE);
1216

1317
#define __CLC_DECLARE_ATOMIC_ADDRSPACE(TYPE, TYPE_MANGLED, NAME, NAME_LEN) \
1418
__CLC_DECLARE_ATOMIC(global, AS1, TYPE, TYPE_MANGLED, NAME, NAME_LEN) \

libclc/generic/include/spirv/atomic/atomic_inc.h

+16-8
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,30 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
_CLC_DECL int _Z24__spirv_AtomicIIncrementPU3AS3iN5__spv5ScopeENS1_19MemorySemanticsMaskE(
9+
_CLC_DECL int
10+
_Z24__spirv_AtomicIIncrementPU3AS3iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1011
volatile local int *, enum Scope, enum MemorySemanticsMask);
11-
_CLC_DECL int _Z24__spirv_AtomicIIncrementPU3AS1iN5__spv5ScopeENS1_19MemorySemanticsMaskE(
12+
_CLC_DECL int
13+
_Z24__spirv_AtomicIIncrementPU3AS1iN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1214
volatile global int *, enum Scope, enum MemorySemanticsMask);
13-
_CLC_DECL uint _Z24__spirv_AtomicIIncrementPU3AS3jN5__spv5ScopeENS1_19MemorySemanticsMaskE(
15+
_CLC_DECL uint
16+
_Z24__spirv_AtomicIIncrementPU3AS3jN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1417
volatile local uint *, enum Scope, enum MemorySemanticsMask);
15-
_CLC_DECL uint _Z24__spirv_AtomicIIncrementPU3AS1jN5__spv5ScopeENS1_19MemorySemanticsMaskE(
18+
_CLC_DECL uint
19+
_Z24__spirv_AtomicIIncrementPU3AS1jN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
1620
volatile global uint *, enum Scope, enum MemorySemanticsMask);
1721

1822
#ifdef cl_khr_int64_base_atomics
19-
_CLC_DECL long _Z24__spirv_AtomicIIncrementPU3AS3lN5__spv5ScopeENS1_19MemorySemanticsMaskE(
23+
_CLC_DECL long
24+
_Z24__spirv_AtomicIIncrementPU3AS3lN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2025
volatile local long *, enum Scope, enum MemorySemanticsMask);
21-
_CLC_DECL long _Z24__spirv_AtomicIIncrementPU3AS1lN5__spv5ScopeENS1_19MemorySemanticsMaskE(
26+
_CLC_DECL long
27+
_Z24__spirv_AtomicIIncrementPU3AS1lN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2228
volatile global long *, enum Scope, enum MemorySemanticsMask);
23-
_CLC_DECL unsigned long _Z24__spirv_AtomicIIncrementPU3AS3mN5__spv5ScopeENS1_19MemorySemanticsMaskE(
29+
_CLC_DECL unsigned long
30+
_Z24__spirv_AtomicIIncrementPU3AS3mN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2431
volatile local unsigned long *, enum Scope, enum MemorySemanticsMask);
25-
_CLC_DECL unsigned long _Z24__spirv_AtomicIIncrementPU3AS1mN5__spv5ScopeENS1_19MemorySemanticsMaskE(
32+
_CLC_DECL unsigned long
33+
_Z24__spirv_AtomicIIncrementPU3AS1mN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE(
2634
volatile global unsigned long *, enum Scope, enum MemorySemanticsMask);
2735
#endif

libclc/generic/include/spirv/atomic/atomic_load.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
//===----------------------------------------------------------------------===//
88

99
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
10-
#define DECL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
11-
_CLC_DECL TYPE _Z18__spirv_AtomicLoadPU3##AS_MANGLED##K##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskE( \
12-
volatile AS const TYPE *, enum Scope, enum MemorySemanticsMask);
10+
#define DECL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
11+
_CLC_DECL TYPE \
12+
_Z18__spirv_AtomicLoadPU3##AS_MANGLED##K##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE( \
13+
volatile AS const TYPE *, enum Scope, enum MemorySemanticsMask);
1314

1415
#define DECL_AS(TYPE, TYPE_MANGLED) \
1516
DECL(TYPE, TYPE_MANGLED, global, AS1) \

libclc/generic/include/spirv/atomic/atomic_store.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,10 @@
77
//===----------------------------------------------------------------------===//
88

99
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
10-
#define DECL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
11-
_CLC_DECL void _Z19__spirv_AtomicStorePU3##AS_MANGLED##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskE##TYPE_MANGLED( \
12-
volatile AS TYPE *, enum Scope, enum MemorySemanticsMask, TYPE);
10+
#define DECL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
11+
_CLC_DECL void \
12+
_Z19__spirv_AtomicStorePU3##AS_MANGLED##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE##TYPE_MANGLED( \
13+
volatile AS TYPE *, enum Scope, enum MemorySemanticsMask, TYPE);
1314

1415
#define DECL_AS(TYPE, TYPE_MANGLED) \
1516
DECL(TYPE, TYPE_MANGLED, global, AS1) \

libclc/generic/include/spirv/atomic/atomic_xchg.h

+4-2
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,10 @@
1313
#define __SPIRV_INT64_BASE
1414

1515
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
16-
_CLC_DECL float _Z22__spirv_AtomicExchangePU3AS3fN5__spv5ScopeENS1_19MemorySemanticsMaskEf(
16+
_CLC_DECL float
17+
_Z22__spirv_AtomicExchangePU3AS3fN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagEf(
1718
volatile local float *, enum Scope, enum MemorySemanticsMask, float);
18-
_CLC_DECL float _Z22__spirv_AtomicExchangePU3AS1fN5__spv5ScopeENS1_19MemorySemanticsMaskEf(
19+
_CLC_DECL float
20+
_Z22__spirv_AtomicExchangePU3AS1fN5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagEf(
1921
volatile global float *, enum Scope, enum MemorySemanticsMask, float);
2022
#include <spirv/atomic/atomic_decl.inc>

libclc/generic/include/spirv/synchronization/barrier.h

+5-3
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
// TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling.
10-
_CLC_DECL void _Z22__spirv_ControlBarrierN5__spv5ScopeES0_j(enum Scope scope, enum Scope memory, unsigned int semantics);
11-
_CLC_DECL void _Z21__spirv_MemoryBarrierN5__spv5ScopeEj(enum Scope scope, unsigned int semantics);
9+
_CLC_OVERLOAD _CLC_DECL void __spirv_ControlBarrier(unsigned int scope,
10+
unsigned int memory,
11+
unsigned int semantics);
12+
_CLC_OVERLOAD _CLC_DECL void __spirv_MemoryBarrier(unsigned int scope,
13+
unsigned int semantics);

libclc/generic/lib/async/async_work_group_strided_copy.inc

+4-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ _CLC_OVERLOAD _CLC_DEF event_t async_work_group_strided_copy(
88
size_t stride,
99
event_t event) {
1010

11-
return __CLC_XCONCAT(_Z22__spirv_GroupAsyncCopyI, __CLC_GENTYPE_MANGLED, E9ocl_eventN5__spv5ScopeEPU3AS1T_PU3AS3S3_mmS0_)(Workgroup, dst, src, num_gentypes, stride, event);
11+
return __spirv_GroupAsyncCopy(Workgroup, dst, src, num_gentypes, stride,
12+
event);
1213
}
1314

1415
_CLC_OVERLOAD _CLC_DEF event_t async_work_group_strided_copy(
@@ -17,7 +18,8 @@ _CLC_OVERLOAD _CLC_DEF event_t async_work_group_strided_copy(
1718
size_t num_gentypes,
1819
size_t stride,
1920
event_t event) {
20-
return __CLC_XCONCAT(_Z22__spirv_GroupAsyncCopyI, __CLC_GENTYPE_MANGLED, E9ocl_eventN5__spv5ScopeEPU3AS3T_PU3AS1S3_mmS0_)(Workgroup, dst, src, num_gentypes, stride, event);
21+
return __spirv_GroupAsyncCopy(Workgroup, dst, src, num_gentypes, stride,
22+
event);
2123
}
2224

2325
#undef __CLC_XCONCAT

libclc/generic/lib/async/wait_group_events.cl

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,5 @@
22
#include <clc/clc.h>
33

44
_CLC_DEF void wait_group_events(int num_events, event_t *event_list) {
5-
_Z23__spirv_GroupWaitEventsN5__spv5ScopeEjP9ocl_event(Workgroup, num_events, event_list);
5+
__spirv_GroupWaitEvents(Workgroup, num_events, event_list);
66
}

libclc/generic/lib/atomic/atomic_add.cl

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#include <clc/clc.h>
22
#include <spirv/spirv.h>
33

4-
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
5-
_CLC_OVERLOAD _CLC_DEF TYPE atomic_add(volatile AS TYPE *p, TYPE val) { \
6-
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling. */ \
7-
return _Z18__spirv_AtomicIAddPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskE##TYPE_MANGLED( \
8-
p, Device, SequentiallyConsistent, val); \
9-
}
4+
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
5+
_CLC_OVERLOAD _CLC_DEF TYPE atomic_add(volatile AS TYPE *p, TYPE val) { \
6+
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the \
7+
* exact mangling. */ \
8+
return _Z18__spirv_AtomicIAddPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE##TYPE_MANGLED( \
9+
p, Device, SequentiallyConsistent, val); \
10+
}
1011

1112
IMPL(int, i, global, AS1)
1213
IMPL(unsigned int, j, global, AS1)

libclc/generic/lib/atomic/atomic_and.cl

+7-6
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
#include <clc/clc.h>
22
#include <spirv/spirv.h>
33

4-
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
5-
_CLC_OVERLOAD _CLC_DEF TYPE atomic_and(volatile AS TYPE *p, TYPE val) { \
6-
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling. */ \
7-
return _Z17__spirv_AtomicAndPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskE##TYPE_MANGLED( \
8-
p, Device, SequentiallyConsistent, val); \
9-
}
4+
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
5+
_CLC_OVERLOAD _CLC_DEF TYPE atomic_and(volatile AS TYPE *p, TYPE val) { \
6+
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the \
7+
* exact mangling. */ \
8+
return _Z17__spirv_AtomicAndPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE##TYPE_MANGLED( \
9+
p, Device, SequentiallyConsistent, val); \
10+
}
1011

1112
IMPL(int, i, global, AS1)
1213
IMPL(unsigned int, j, global, AS1)

0 commit comments

Comments
 (0)