Skip to content

Commit d5cc520

Browse files
Merge branch 'intel:sycl' into more-aspects-caching
2 parents 3658da7 + d76b71a commit d5cc520

File tree

224 files changed

+2711
-13930
lines changed

Some content is hidden

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

224 files changed

+2711
-13930
lines changed

.github/workflows/sycl-linux-run-tests.yml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,9 @@ jobs:
321321
- name: Run SYCL CTS Tests
322322
if: inputs.tests_selector == 'cts'
323323
uses: ./devops/actions/run-tests/cts
324+
# Normally this job takes less than 10m. But sometimes it hangs up and
325+
# reaches the 360m limit. Set a lower limit to free up the runner earlier.
326+
timeout-minutes: 35
324327
with:
325328
ref: ${{ inputs.tests_ref || 'main' }}
326329
cts_exclude_ref: ${{ inputs.repo_ref }}

.github/workflows/sycl-nightly.yml

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -217,9 +217,6 @@ jobs:
217217
run-sycl-cts-linux:
218218
needs: [ubuntu2204_build, build-sycl-cts-linux]
219219
if: ${{ always() && !cancelled() && needs.ubuntu2204_build.outputs.build_conclusion == 'success' }}
220-
# Normally these jobs take less than 10m. But sometimes the job hangs up and
221-
# reaches the 360m limit. Set a lower limit to free up the runner earlier.
222-
timeout-minutes: 35
223220
strategy:
224221
fail-fast: false
225222
matrix:

.github/workflows/ur-build-hw.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,6 @@ jobs:
144144
-DUR_DEVELOPER_MODE=ON
145145
-DUR_BUILD_TESTS=ON
146146
-DUR_BUILD_ADAPTER_${{matrix.adapter.name}}=ON
147-
-DUR_CONFORMANCE_TEST_LOADER=${{ matrix.adapter.other_name != '' && 'ON' || 'OFF' }}
148147
${{ matrix.adapter.other_name != '' && format('-DUR_BUILD_ADAPTER_{0}=ON', matrix.adapter.other_name) || '' }}
149148
-DUR_STATIC_LOADER=${{matrix.adapter.static_Loader}}
150149
-DUR_STATIC_ADAPTER_${{matrix.adapter.name}}=${{matrix.adapter.static_adapter}}
@@ -172,7 +171,8 @@ jobs:
172171
- name: Test adapters
173172
env:
174173
ZE_ENABLE_LOADER_DEBUG_TRACE: 1
175-
run: ctest -C ${{matrix.build_type}} --test-dir build --output-on-failure -L "conformance" --timeout 600 -VV
174+
LIT_OPTS: "--timeout 120"
175+
run: cmake --build build -j $(nproc) -- check-unified-runtime-conformance
176176

177177
- name: Get information about platform
178178
if: ${{ always() }}

clang/include/clang/Basic/DiagnosticSemaKinds.td

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12871,7 +12871,8 @@ def err_free_function_variadic_args : Error<
1287112871
"free function kernel cannot be a variadic function">;
1287212872
def err_free_function_return_type : Error<
1287312873
"SYCL free function kernel should have return type 'void'">;
12874-
12874+
def err_free_function_first_occurrence_missing_attr: Error<
12875+
"the first occurrence of SYCL kernel free function should be declared with 'sycl-nd-range-kernel' or 'sycl-single-task-kernel' compile time properties">;
1287512876

1287612877
// SYCL kernel entry point diagnostics
1287712878
def err_sycl_entry_point_invalid : Error<

clang/lib/Driver/ToolChains/Clang.cpp

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5742,10 +5742,6 @@ void Clang::ConstructJob(Compilation &C, const JobAction &JA,
57425742
CmdArgs.push_back("-Wno-sycl-strict");
57435743
}
57445744

5745-
// Set O2 optimization level by default
5746-
if (!Args.getLastArg(options::OPT_O_Group))
5747-
CmdArgs.push_back("-O2");
5748-
57495745
// Add the integration header option to generate the header.
57505746
StringRef Header(D.getIntegrationHeader(Input.getBaseInput()));
57515747
if (!Header.empty()) {

clang/lib/Sema/SemaSYCL.cpp

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1159,14 +1159,33 @@ static target getAccessTarget(QualType FieldTy,
11591159
}
11601160

11611161
bool SemaSYCL::isFreeFunction(const FunctionDecl *FD) {
1162-
for (auto *IRAttr : FD->specific_attrs<SYCLAddIRAttributesFunctionAttr>()) {
1163-
SmallVector<std::pair<std::string, std::string>, 4> NameValuePairs =
1164-
IRAttr->getAttributeNameValuePairs(getASTContext());
1165-
for (const auto &NameValuePair : NameValuePairs) {
1166-
if (NameValuePair.first == "sycl-nd-range-kernel" ||
1167-
NameValuePair.first == "sycl-single-task-kernel") {
1162+
SourceLocation Loc = FD->getLocation();
1163+
bool NextDeclaredWithAttr = false;
1164+
for (FunctionDecl *Redecl : FD->redecls()) {
1165+
bool IsFreeFunctionAttr = false;
1166+
for (auto *IRAttr :
1167+
Redecl->specific_attrs<SYCLAddIRAttributesFunctionAttr>()) {
1168+
SmallVector<std::pair<std::string, std::string>, 4> NameValuePairs =
1169+
IRAttr->getAttributeNameValuePairs(getASTContext());
1170+
const auto it = std::find_if(
1171+
NameValuePairs.begin(), NameValuePairs.end(),
1172+
[](const auto &NameValuePair) {
1173+
return NameValuePair.first == "sycl-nd-range-kernel" ||
1174+
NameValuePair.first == "sycl-single-task-kernel";
1175+
});
1176+
IsFreeFunctionAttr = it != NameValuePairs.end();
1177+
}
1178+
if (Redecl->isFirstDecl()) {
1179+
if (IsFreeFunctionAttr)
11681180
return true;
1181+
if (NextDeclaredWithAttr) {
1182+
Diag(Loc, diag::err_free_function_first_occurrence_missing_attr);
1183+
Diag(Redecl->getLocation(), diag::note_previous_declaration);
1184+
return false;
11691185
}
1186+
} else {
1187+
Loc = Redecl->getLocation();
1188+
NextDeclaredWithAttr = IsFreeFunctionAttr;
11701189
}
11711190
}
11721191
return false;

clang/test/SemaSYCL/free_function_negative.cpp

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,36 @@ foo(int start, ...) { // expected-error {{free function kernel cannot be a varia
1010
foo1(int start, ...) { // expected-error {{free function kernel cannot be a variadic function}}
1111
}
1212

13+
// expected-note@+1 {{conflicting attribute is here}}
14+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 1)]] void
15+
foo2(int start);
16+
17+
// expected-error@+1 {{attribute 'add_ir_attributes_function' is already applied with different arguments}}
18+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 2)]] void
19+
foo2(int start) {
20+
}
21+
22+
// expected-note@+1 {{previous declaration is here}}
23+
void foo3(int start, int *ptr);
24+
25+
// expected-error@+2 {{the first occurrence of SYCL kernel free function should be declared with 'sycl-nd-range-kernel' or 'sycl-single-task-kernel' compile time properties}}
26+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 2)]] void
27+
foo3(int start, int *ptr){}
28+
29+
// expected-note@+1 {{previous declaration is here}}
30+
void foo4(float start, float *ptr);
31+
32+
// expected-error@+2 {{the first occurrence of SYCL kernel free function should be declared with 'sycl-nd-range-kernel' or 'sycl-single-task-kernel' compile time properties}}
33+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 2)]] void
34+
foo4(float start, float *ptr);
35+
36+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 2)]] void
37+
foo4(float start, float *ptr);
38+
39+
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 2)]] void
40+
foo4(float start, float *ptr){}
41+
42+
1343
// expected-error@+2 {{a function with a default argument value cannot be used to define SYCL free function kernel}}
1444
[[__sycl_detail__::add_ir_attributes_function("sycl-single-task-kernel", 2)]] void
1545
singleTaskKernelDefaultValues(int Value = 1) {

libclc/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -547,6 +547,8 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
547547
-D${CLC_TARGET_DEFINE}
548548
# All libclc builtin libraries see CLC headers
549549
-I${CMAKE_CURRENT_SOURCE_DIR}/clc/include
550+
# Error on undefined macros
551+
-Werror=undef
550552
)
551553

552554
if( NOT "${cpu}" STREQUAL "" )

libclc/clc/include/clc/clcfunc.h

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,4 +26,20 @@
2626
#define _CLC_DEF __attribute__((always_inline))
2727
#endif
2828

29+
#if __OPENCL_C_VERSION__ == CL_VERSION_2_0 || \
30+
(__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && \
31+
defined(__opencl_c_generic_address_space))
32+
#define _CLC_GENERIC_AS_SUPPORTED 1
33+
// Note that we hard-code the assumption that a non-distinct address space means
34+
// that the target maps the generic address space to the private address space.
35+
#ifdef __CLC_DISTINCT_GENERIC_ADDRSPACE__
36+
#define _CLC_DISTINCT_GENERIC_AS_SUPPORTED 1
37+
#else
38+
#define _CLC_DISTINCT_GENERIC_AS_SUPPORTED 0
39+
#endif
40+
#else
41+
#define _CLC_GENERIC_AS_SUPPORTED 0
42+
#define _CLC_DISTINCT_GENERIC_AS_SUPPORTED 0
43+
#endif
44+
2945
#endif // __CLC_CLCFUNC_H_

libclc/clc/lib/generic/misc/clc_shuffle.cl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@
138138
_CLC_VECTOR_SHUFFLE_MASKSIZE(TYPE, 16, MASKTYPE)
139139

140140
_CLC_VECTOR_SHUFFLE_INSIZE(char, uchar)
141+
_CLC_VECTOR_SHUFFLE_INSIZE(schar, uchar)
141142
_CLC_VECTOR_SHUFFLE_INSIZE(short, ushort)
142143
_CLC_VECTOR_SHUFFLE_INSIZE(int, uint)
143144
_CLC_VECTOR_SHUFFLE_INSIZE(long, ulong)

libclc/clc/lib/generic/misc/clc_shuffle2.cl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@
140140
_CLC_VECTOR_SHUFFLE_MASKSIZE(TYPE, 16, MASKTYPE)
141141

142142
_CLC_VECTOR_SHUFFLE_INSIZE(char, uchar)
143+
_CLC_VECTOR_SHUFFLE_INSIZE(schar, uchar)
143144
_CLC_VECTOR_SHUFFLE_INSIZE(short, ushort)
144145
_CLC_VECTOR_SHUFFLE_INSIZE(int, uint)
145146
_CLC_VECTOR_SHUFFLE_INSIZE(long, ulong)

libclc/cmake/modules/AddLibclc.cmake

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -508,6 +508,7 @@ function(add_libclc_builtin_set)
508508
COMMAND ${CMAKE_COMMAND} -E make_directory ${LIBCLC_LIBRARY_OUTPUT_INTDIR}
509509
COMMAND ${libclc-remangler_exe}
510510
-o "${builtins_remangle_path}"
511+
--triple=${ARG_TRIPLE}
511512
--long-width=${long_width}
512513
--char-signedness=${signedness}
513514
--input-ir=${builtins_lib}

libclc/generic/include/clc/clc.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -25,22 +25,6 @@
2525

2626
#define __CLC_NO_SCHAR
2727

28-
#if __OPENCL_C_VERSION__ == CL_VERSION_2_0 || \
29-
(__OPENCL_C_VERSION__ >= CL_VERSION_3_0 && \
30-
defined(__opencl_c_generic_address_space))
31-
#define _CLC_GENERIC_AS_SUPPORTED 1
32-
// Note that we hard-code the assumption that a non-distinct address space means
33-
// that the target maps the generic address space to the private address space.
34-
#ifdef __CLC_DISTINCT_GENERIC_ADDRSPACE__
35-
#define _CLC_DISTINCT_GENERIC_AS_SUPPORTED 1
36-
#else
37-
#define _CLC_DISTINCT_GENERIC_AS_SUPPORTED 0
38-
#endif
39-
#else
40-
#define _CLC_GENERIC_AS_SUPPORTED 0
41-
#define _CLC_DISTINCT_GENERIC_AS_SUPPORTED 0
42-
#endif
43-
4428
/* Function Attributes */
4529
#include <clc/clcfunc.h>
4630

libclc/libspirv/include/libspirv/atomic/atomic_dec.h

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIDecrement(local int *, int Scope,
10-
enum MemorySemanticsMask);
11-
_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIDecrement(global int *, int Scope,
12-
enum MemorySemanticsMask);
13-
_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIDecrement(local uint *, int Scope,
14-
enum MemorySemanticsMask);
15-
_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIDecrement(global uint *, int Scope,
16-
enum MemorySemanticsMask);
17-
18-
#ifdef cl_khr_int64_base_atomics
19-
_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIDecrement(local long *, int Scope,
20-
enum MemorySemanticsMask);
21-
_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIDecrement(global long *, int Scope,
22-
enum MemorySemanticsMask);
23-
_CLC_OVERLOAD _CLC_DECL unsigned long
24-
__spirv_AtomicIDecrement(local unsigned long *, int Scope,
25-
enum MemorySemanticsMask);
26-
_CLC_OVERLOAD _CLC_DECL unsigned long
27-
__spirv_AtomicIDecrement(global unsigned long *, int Scope,
28-
enum MemorySemanticsMask);
29-
#endif
9+
#define __SPIRV_FUNCTION_S __spirv_AtomicIDecrement
10+
#define __SPIRV_FUNCTION_U __spirv_AtomicIDecrement
11+
#define __SPIRV_INT64_BASE
12+
#define __SPIRV_NO_VALUE_ARG
13+
#include <libspirv/atomic/atomic_decl.inc>

libclc/libspirv/include/libspirv/atomic/atomic_decl.inc

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,19 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#ifdef __SPIRV_NO_VALUE_ARG
10+
#define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE, NAME) \
11+
_CLC_OVERLOAD _CLC_DECL TYPE NAME(ADDRSPACE TYPE *, int Scope, \
12+
int MemorySemanticsMask);
13+
#elif defined(__SPIRV_RETURN_VOID)
14+
#define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE, NAME) \
15+
_CLC_OVERLOAD _CLC_DECL void NAME(ADDRSPACE TYPE *, int Scope, \
16+
int MemorySemanticsMask, TYPE);
17+
#else
918
#define __CLC_DECLARE_ATOMIC(ADDRSPACE, TYPE, NAME) \
1019
_CLC_OVERLOAD _CLC_DECL TYPE NAME(ADDRSPACE TYPE *, int Scope, \
1120
int MemorySemanticsMask, TYPE);
21+
#endif
1222

1323
#define __CLC_DECLARE_ATOMIC_ADDRSPACE(TYPE, NAME) \
1424
__CLC_DECLARE_ATOMIC(global, TYPE, NAME) \
@@ -32,12 +42,27 @@ __CLC_DECLARE_ATOMIC_ADDRSPACE(ulong, __SPIRV_FUNCTION_U)
3242
#endif
3343
#endif
3444

45+
#ifdef __SPIRV_FLOATING_POINT
46+
#ifdef cl_khr_fp16
47+
__CLC_DECLARE_ATOMIC_ADDRSPACE(half, __SPIRV_FUNCTION)
48+
#endif // cl_khr_fp16
49+
__CLC_DECLARE_ATOMIC_ADDRSPACE(float, __SPIRV_FUNCTION)
50+
#if defined(cl_khr_fp64) && defined(cl_khr_int64_base_atomics) && \
51+
defined(cl_khr_int64_extended_atomics)
52+
__CLC_DECLARE_ATOMIC_ADDRSPACE(double, __SPIRV_FUNCTION)
53+
#endif
54+
#endif
55+
3556
#undef __CLC_DECLARE_ATOMIC_ADDRSPACE
3657
#undef __CLC_DECLARE_ATOMIC
3758

59+
#undef __SPIRV_FUNCTION
3860
#undef __SPIRV_FUNCTION_S
3961
#undef __SPIRV_FUNCTION_S_LEN
4062
#undef __SPIRV_FUNCTION_U
4163
#undef __SPIRV_FUNCTION_U_LEN
4264
#undef __SPIRV_INT64_BASE
4365
#undef __SPIRV_INT64_EXTENDED
66+
#undef __SPIRV_NO_VALUE_ARG
67+
#undef __SPIRV_RETURN_VOID
68+
#undef __SPIRV_FLOATING_POINT

libclc/libspirv/include/libspirv/atomic/atomic_inc.h

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,24 +6,8 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIIncrement(local int *, int Scope,
10-
enum MemorySemanticsMask);
11-
_CLC_OVERLOAD _CLC_DECL int __spirv_AtomicIIncrement(global int *, int Scope,
12-
enum MemorySemanticsMask);
13-
_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIIncrement(local uint *, int Scope,
14-
enum MemorySemanticsMask);
15-
_CLC_OVERLOAD _CLC_DECL uint __spirv_AtomicIIncrement(global uint *, int Scope,
16-
enum MemorySemanticsMask);
17-
18-
#ifdef cl_khr_int64_base_atomics
19-
_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIIncrement(local long *, int Scope,
20-
enum MemorySemanticsMask);
21-
_CLC_OVERLOAD _CLC_DECL long __spirv_AtomicIIncrement(global long *, int Scope,
22-
enum MemorySemanticsMask);
23-
_CLC_OVERLOAD _CLC_DECL unsigned long
24-
__spirv_AtomicIIncrement(local unsigned long *, int Scope,
25-
enum MemorySemanticsMask);
26-
_CLC_OVERLOAD _CLC_DECL unsigned long
27-
__spirv_AtomicIIncrement(global unsigned long *, int Scope,
28-
enum MemorySemanticsMask);
29-
#endif
9+
#define __SPIRV_FUNCTION_S __spirv_AtomicIIncrement
10+
#define __SPIRV_FUNCTION_U __spirv_AtomicIIncrement
11+
#define __SPIRV_INT64_BASE
12+
#define __SPIRV_NO_VALUE_ARG
13+
#include <libspirv/atomic/atomic_decl.inc>

libclc/libspirv/include/libspirv/atomic/atomic_load.h

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,11 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#define DECL(TYPE, AS) \
10-
_CLC_OVERLOAD _CLC_DECL TYPE __spirv_AtomicLoad(AS TYPE *, int, int);
11-
12-
#define DECL_AS(TYPE) \
13-
DECL(TYPE, global) \
14-
DECL(TYPE, local) \
15-
DECL(TYPE, )
16-
17-
DECL_AS(int)
18-
DECL_AS(unsigned int)
19-
20-
#ifdef cl_khr_int64_base_atomics
21-
DECL_AS(long)
22-
DECL_AS(unsigned long)
23-
#endif
24-
25-
#undef DECL_AS
26-
#undef DECL
9+
#define __SPIRV_FUNCTION __spirv_AtomicLoad
10+
#define __SPIRV_FUNCTION_S __spirv_AtomicLoad
11+
#define __SPIRV_FUNCTION_U __spirv_AtomicLoad
12+
#define __SPIRV_INT64_BASE
13+
#define __SPIRV_INT64_EXTENDED
14+
#define __SPIRV_NO_VALUE_ARG
15+
#define __SPIRV_FLOATING_POINT
16+
#include <libspirv/atomic/atomic_decl.inc>

libclc/libspirv/include/libspirv/atomic/atomic_store.h

Lines changed: 8 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,11 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9-
#define DECL(TYPE, AS) \
10-
_CLC_OVERLOAD _CLC_DECL void __spirv_AtomicStore( \
11-
AS TYPE *, int Scope, int MemorySemanticsMask, TYPE);
12-
13-
#define DECL_AS(TYPE) \
14-
DECL(TYPE, global) \
15-
DECL(TYPE, local)
16-
17-
DECL_AS(int)
18-
DECL_AS(unsigned int)
19-
20-
#ifdef cl_khr_int64_base_atomics
21-
DECL_AS(long)
22-
DECL_AS(unsigned long)
23-
#endif
24-
25-
#undef DECL_AS
26-
#undef DECL
9+
#define __SPIRV_FUNCTION __spirv_AtomicStore
10+
#define __SPIRV_FUNCTION_S __spirv_AtomicStore
11+
#define __SPIRV_FUNCTION_U __spirv_AtomicStore
12+
#define __SPIRV_INT64_BASE
13+
#define __SPIRV_INT64_EXTENDED
14+
#define __SPIRV_RETURN_VOID
15+
#define __SPIRV_FLOATING_POINT
16+
#include <libspirv/atomic/atomic_decl.inc>

libclc/libspirv/include/libspirv/atomic/atomic_xchg.h

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,10 @@
66
//
77
//===----------------------------------------------------------------------===//
88

9+
#define __SPIRV_FUNCTION __spirv_AtomicExchange
910
#define __SPIRV_FUNCTION_S __spirv_AtomicExchange
1011
#define __SPIRV_FUNCTION_U __spirv_AtomicExchange
1112
#define __SPIRV_INT64_BASE
12-
13-
_CLC_OVERLOAD _CLC_DECL float __spirv_AtomicExchange(local float *, int Scope,
14-
int MemorySemanticsMask,
15-
float);
16-
_CLC_OVERLOAD _CLC_DECL float __spirv_AtomicExchange(global float *, int Scope,
17-
int MemorySemanticsMask,
18-
float);
13+
#define __SPIRV_INT64_EXTENDED
14+
#define __SPIRV_FLOATING_POINT
1915
#include <libspirv/atomic/atomic_decl.inc>

0 commit comments

Comments
 (0)