Skip to content

Commit 943b71a

Browse files
committed
[SYCL] spir-v vars should not be defined for GPU targets
1 parent ae3a465 commit 943b71a

File tree

2 files changed

+43
-9
lines changed

2 files changed

+43
-9
lines changed

libdevice/crt_wrapper.cpp

Lines changed: 41 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,19 @@ int memcmp(const void *s1, const void *s2, size_t n) {
3434
return __devicelib_memcmp(s1, s2, n);
3535
}
3636

37+
#if defined(__NVPTX__) || defined(__AMDGCN__)
38+
// For AMD/Cuda those symbols will be provided by libclc.
39+
DEVICE_EXTERNAL size_t __spirv_GlobalInvocationId_x();
40+
DEVICE_EXTERNAL size_t __spirv_GlobalInvocationId_y();
41+
DEVICE_EXTERNAL size_t __spirv_GlobalInvocationId_z();
42+
DEVICE_EXTERNAL size_t __spirv_LocalInvocationId_x();
43+
DEVICE_EXTERNAL size_t __spirv_LocalInvocationId_y();
44+
DEVICE_EXTERNAL size_t __spirv_LocalInvocationId_z();
45+
DEVICE_EXTERNAL size_t __spirv_GlobalSize_x();
46+
DEVICE_EXTERNAL size_t __spirv_GlobalSize_y();
47+
DEVICE_EXTERNAL size_t __spirv_GlobalSize_z();
48+
#endif // __NVPTX__ || __AMDGCN__
49+
3750
#ifndef __NVPTX__
3851

3952
// This simple rand is for ease of use only, the implementation aligns with
@@ -51,13 +64,24 @@ int memcmp(const void *s1, const void *s2, size_t n) {
5164
DEVICE_EXTERN_C_INLINE
5265
int rand() {
5366
size_t gid =
67+
#if defined(__NVPTX__) || defined(__AMDGCN__)
68+
(__spirv_GlobalInvocationId_x() * __spirv_GlobalSize_y() *
69+
__spirv_GlobalSize_z()) +
70+
(__spirv_GlobalInvocationId_y() * __spirv_GlobalSize_z()) +
71+
__spirv_GlobalInvocationId_z();
72+
#else
5473
(__spirv_BuiltInGlobalInvocationId.x * __spirv_BuiltInGlobalSize.y *
5574
__spirv_BuiltInGlobalSize.z) +
5675
(__spirv_BuiltInGlobalInvocationId.y * __spirv_BuiltInGlobalSize.z) +
5776
__spirv_BuiltInGlobalInvocationId.z;
58-
size_t global_size = __spirv_BuiltInGlobalSize.x *
59-
__spirv_BuiltInGlobalSize.y *
60-
__spirv_BuiltInGlobalSize.z;
77+
#endif
78+
size_t global_size =
79+
#if defined(__NVPTX__) || defined(__AMDGCN__)
80+
__spirv_GlobalSize_x() * __spirv_GlobalSize_y() * __spirv_GlobalSize_z();
81+
#else
82+
__spirv_BuiltInGlobalSize.x * __spirv_BuiltInGlobalSize.y *
83+
__spirv_BuiltInGlobalSize.z;
84+
#endif
6185
size_t gid1 =
6286
(global_size > RAND_NEXT_LEN) ? (gid & (RAND_NEXT_LEN - 1)) : gid;
6387
if (RAND_NEXT_ACC[gid1] == 0)
@@ -73,13 +97,24 @@ int rand() {
7397
DEVICE_EXTERN_C_INLINE
7498
void srand(unsigned int seed) {
7599
size_t gid =
100+
#if defined(__NVPTX__) || defined(__AMDGCN__)
101+
(__spirv_GlobalInvocationId_x() * __spirv_GlobalSize_y() *
102+
__spirv_GlobalSize_z()) +
103+
(__spirv_GlobalInvocationId_y() * __spirv_GlobalSize_z()) +
104+
__spirv_GlobalInvocationId_z();
105+
#else
76106
(__spirv_BuiltInGlobalInvocationId.x * __spirv_BuiltInGlobalSize.y *
77107
__spirv_BuiltInGlobalSize.z) +
78108
(__spirv_BuiltInGlobalInvocationId.y * __spirv_BuiltInGlobalSize.z) +
79109
__spirv_BuiltInGlobalInvocationId.z;
80-
size_t global_size = __spirv_BuiltInGlobalSize.x *
81-
__spirv_BuiltInGlobalSize.y *
82-
__spirv_BuiltInGlobalSize.z;
110+
#endif
111+
size_t global_size =
112+
#if defined(__NVPTX__) || defined(__AMDGCN__)
113+
__spirv_GlobalSize_x() * __spirv_GlobalSize_y() * __spirv_GlobalSize_z();
114+
#else
115+
__spirv_BuiltInGlobalSize.x * __spirv_BuiltInGlobalSize.y *
116+
__spirv_BuiltInGlobalSize.z;
117+
#endif
83118
size_t gid1 =
84119
(global_size > RAND_NEXT_LEN) ? (gid & (RAND_NEXT_LEN - 1)) : gid;
85120
RAND_NEXT_ACC[gid1] = seed;

libdevice/spirv_vars.h

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,7 @@
1111

1212
#include "device.h"
1313

14-
#if defined(__SPIR__) || defined(__SPIRV__) || defined(__NVPTX__) || \
15-
defined(__AMDGCN__)
14+
#if defined(__SPIR__) || defined(__SPIRV__)
1615

1716
#include <cstddef>
1817
#include <cstdint>
@@ -63,5 +62,5 @@ const size_t_vec __spirv_BuiltInGlobalInvocationId{};
6362
const size_t_vec __spirv_BuiltInLocalInvocationId{};
6463
#endif // !__SPIR__ && !__SPIRV__
6564

66-
#endif // __SPIR__ || __SPIRV__ || __NVPTX__ || __AMDGCN__
65+
#endif // __SPIR__ || __SPIRV__
6766
#endif // __LIBDEVICE_SPIRV_VARS_H

0 commit comments

Comments
 (0)