@@ -51,13 +51,24 @@ int memcmp(const void *s1, const void *s2, size_t n) {
51
51
DEVICE_EXTERN_C_INLINE
52
52
int rand () {
53
53
size_t gid =
54
+ #if defined(__NVPTX__) || defined(__AMDGCN__)
55
+ (__spirv_GlobalInvocationId_x () * __spirv_GlobalSize_y () *
56
+ __spirv_GlobalSize_z ()) +
57
+ (__spirv_GlobalInvocationId_y () * __spirv_GlobalSize_z ()) +
58
+ __spirv_GlobalInvocationId_z ();
59
+ #else
54
60
(__spirv_BuiltInGlobalInvocationId.x * __spirv_BuiltInGlobalSize.y *
55
61
__spirv_BuiltInGlobalSize.z ) +
56
62
(__spirv_BuiltInGlobalInvocationId.y * __spirv_BuiltInGlobalSize.z ) +
57
63
__spirv_BuiltInGlobalInvocationId.z ;
58
- size_t global_size = __spirv_BuiltInGlobalSize.x *
59
- __spirv_BuiltInGlobalSize.y *
60
- __spirv_BuiltInGlobalSize.z ;
64
+ #endif
65
+ size_t global_size =
66
+ #if defined(__NVPTX__) || defined(__AMDGCN__)
67
+ __spirv_GlobalSize_x () * __spirv_GlobalSize_y () * __spirv_GlobalSize_z ();
68
+ #else
69
+ __spirv_BuiltInGlobalSize.x * __spirv_BuiltInGlobalSize.y *
70
+ __spirv_BuiltInGlobalSize.z ;
71
+ #endif
61
72
size_t gid1 =
62
73
(global_size > RAND_NEXT_LEN) ? (gid & (RAND_NEXT_LEN - 1 )) : gid;
63
74
if (RAND_NEXT_ACC[gid1] == 0 )
@@ -73,13 +84,24 @@ int rand() {
73
84
DEVICE_EXTERN_C_INLINE
74
85
void srand (unsigned int seed) {
75
86
size_t gid =
87
+ #if defined(__NVPTX__) || defined(__AMDGCN__)
88
+ (__spirv_GlobalInvocationId_x () * __spirv_GlobalSize_y () *
89
+ __spirv_GlobalSize_z ()) +
90
+ (__spirv_GlobalInvocationId_y () * __spirv_GlobalSize_z ()) +
91
+ __spirv_GlobalInvocationId_z ();
92
+ #else
76
93
(__spirv_BuiltInGlobalInvocationId.x * __spirv_BuiltInGlobalSize.y *
77
94
__spirv_BuiltInGlobalSize.z ) +
78
95
(__spirv_BuiltInGlobalInvocationId.y * __spirv_BuiltInGlobalSize.z ) +
79
96
__spirv_BuiltInGlobalInvocationId.z ;
80
- size_t global_size = __spirv_BuiltInGlobalSize.x *
81
- __spirv_BuiltInGlobalSize.y *
82
- __spirv_BuiltInGlobalSize.z ;
97
+ #endif
98
+ size_t global_size =
99
+ #if defined(__NVPTX__) || defined(__AMDGCN__)
100
+ __spirv_GlobalSize_x () * __spirv_GlobalSize_y () * __spirv_GlobalSize_z ();
101
+ #else
102
+ __spirv_BuiltInGlobalSize.x * __spirv_BuiltInGlobalSize.y *
103
+ __spirv_BuiltInGlobalSize.z ;
104
+ #endif
83
105
size_t gid1 =
84
106
(global_size > RAND_NEXT_LEN) ? (gid & (RAND_NEXT_LEN - 1 )) : gid;
85
107
RAND_NEXT_ACC[gid1] = seed;
0 commit comments