Skip to content

Commit 377b2e3

Browse files
committed
[SYCL-PTX] Update Atomic mangling
Signed-off-by: Victor Lomuller <[email protected]>
1 parent 4b0b0a9 commit 377b2e3

Some content is hidden

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

43 files changed

+491
-311
lines changed

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

Lines changed: 32 additions & 16 deletions
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

Lines changed: 16 additions & 8 deletions
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

Lines changed: 6 additions & 2 deletions
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

Lines changed: 16 additions & 8 deletions
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

Lines changed: 4 additions & 3 deletions
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

Lines changed: 4 additions & 3 deletions
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

Lines changed: 4 additions & 2 deletions
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/lib/atomic/atomic_add.cl

Lines changed: 7 additions & 6 deletions
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

Lines changed: 7 additions & 6 deletions
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)

libclc/generic/lib/atomic/atomic_cmpxchg.cl

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
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_cmpxchg(volatile AS TYPE *p, TYPE cmp, TYPE val) { \
6-
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling. */ \
7-
return _Z29__spirv_AtomicCompareExchangePU3##AS_MANGLED##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskES3_##TYPE_MANGLED##TYPE_MANGLED( \
8-
p, Device, SequentiallyConsistent, SequentiallyConsistent, val, cmp); \
9-
}
4+
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
5+
_CLC_OVERLOAD _CLC_DEF TYPE atomic_cmpxchg(volatile AS TYPE *p, TYPE cmp, \
6+
TYPE val) { \
7+
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the \
8+
* exact mangling. */ \
9+
return _Z29__spirv_AtomicCompareExchangePU3##AS_MANGLED##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagES3_##TYPE_MANGLED##TYPE_MANGLED( \
10+
p, Device, SequentiallyConsistent, SequentiallyConsistent, val, cmp); \
11+
}
1012

1113
IMPL(int, i, global, AS1)
1214
IMPL(unsigned int, j, global, AS1)

libclc/generic/lib/atomic/atomic_dec.cl

Lines changed: 7 additions & 6 deletions
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_dec(volatile AS TYPE *p) { \
6-
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling. */ \
7-
return _Z24__spirv_AtomicIDecrementPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskE( \
8-
p, Device, SequentiallyConsistent); \
9-
}
4+
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
5+
_CLC_OVERLOAD _CLC_DEF TYPE atomic_dec(volatile AS TYPE *p) { \
6+
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the \
7+
* exact mangling. */ \
8+
return _Z24__spirv_AtomicIDecrementPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE( \
9+
p, Device, SequentiallyConsistent); \
10+
}
1011

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

libclc/generic/lib/atomic/atomic_inc.cl

Lines changed: 7 additions & 6 deletions
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_inc(volatile AS TYPE *p) { \
6-
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the exact mangling. */ \
7-
return _Z24__spirv_AtomicIIncrementPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5ScopeENS1_19MemorySemanticsMaskE( \
8-
p, Device, SequentiallyConsistent); \
9-
}
4+
#define IMPL(TYPE, TYPE_MANGLED, AS, AS_MANGLED) \
5+
_CLC_OVERLOAD _CLC_DEF TYPE atomic_inc(volatile AS TYPE *p) { \
6+
/* TODO: Stop manually mangling this name. Need C++ namespaces to get the \
7+
* exact mangling. */ \
8+
return _Z24__spirv_AtomicIIncrementPU3##AS_MANGLED##TYPE_MANGLED##N5__spv5Scope4FlagENS1_19MemorySemanticsMask4FlagE( \
9+
p, Device, SequentiallyConsistent); \
10+
}
1011

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

0 commit comments

Comments
 (0)