@@ -51,13 +51,24 @@ int memcmp(const void *s1, const void *s2, size_t n) {
5151DEVICE_EXTERN_C_INLINE
5252int rand () {
5353 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
5460 (__spirv_BuiltInGlobalInvocationId.x * __spirv_BuiltInGlobalSize.y *
5561 __spirv_BuiltInGlobalSize.z ) +
5662 (__spirv_BuiltInGlobalInvocationId.y * __spirv_BuiltInGlobalSize.z ) +
5763 __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
6172 size_t gid1 =
6273 (global_size > RAND_NEXT_LEN) ? (gid & (RAND_NEXT_LEN - 1 )) : gid;
6374 if (RAND_NEXT_ACC[gid1] == 0 )
@@ -73,13 +84,24 @@ int rand() {
7384DEVICE_EXTERN_C_INLINE
7485void srand (unsigned int seed) {
7586 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
7693 (__spirv_BuiltInGlobalInvocationId.x * __spirv_BuiltInGlobalSize.y *
7794 __spirv_BuiltInGlobalSize.z ) +
7895 (__spirv_BuiltInGlobalInvocationId.y * __spirv_BuiltInGlobalSize.z ) +
7996 __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
83105 size_t gid1 =
84106 (global_size > RAND_NEXT_LEN) ? (gid & (RAND_NEXT_LEN - 1 )) : gid;
85107 RAND_NEXT_ACC[gid1] = seed;
0 commit comments