@@ -40,9 +40,9 @@ uint __intel_WorkgroupSize()
40
40
size_t __intel_EnqueuedWorkgroupSize ()
41
41
{
42
42
size_t totalWorkGroupSize =
43
- __builtin_IB_get_enqueued_local_size (0 ) *
44
- __builtin_IB_get_enqueued_local_size (1 ) *
45
- __builtin_IB_get_enqueued_local_size (2 );
43
+ ( size_t ) __builtin_IB_get_enqueued_local_size (0 ) *
44
+ ( size_t ) __builtin_IB_get_enqueued_local_size (1 ) *
45
+ ( size_t ) __builtin_IB_get_enqueued_local_size (2 );
46
46
47
47
BuiltinAssumeGE0 (totalWorkGroupSize );
48
48
return totalWorkGroupSize ;
@@ -105,8 +105,8 @@ size_t OVERLOADABLE __intel_GlobalInvocationId(uint dim)
105
105
return 0 ;
106
106
107
107
size_t v =
108
- __builtin_IB_get_group_id (dim ) * __builtin_IB_get_enqueued_local_size (dim ) +
109
- __intel_LocalInvocationId (dim ) + __builtin_IB_get_global_offset (dim );
108
+ ( size_t ) __builtin_IB_get_group_id (dim ) * ( size_t ) __builtin_IB_get_enqueued_local_size (dim ) +
109
+ ( size_t ) __intel_LocalInvocationId (dim ) + ( size_t ) __builtin_IB_get_global_offset (dim );
110
110
111
111
#ifndef NO_ASSUME_SUPPORT
112
112
BuiltinAssumeGE0 (v );
@@ -259,18 +259,38 @@ size_t SPIRV_OVERLOADABLE SPIRV_BUILTIN_NO_OP(BuiltInGlobalLinearId, , )()
259
259
switch (dim ) {
260
260
default :
261
261
case 1 :
262
- result = __intel_GlobalInvocationId (0 ) - __builtin_IB_get_global_offset (0 );
262
+ {
263
+ size_t gid0 = __intel_GlobalInvocationId (0 );
264
+ size_t globalOffset0 = __builtin_IB_get_global_offset (0 );
265
+ result = gid0 - globalOffset0 ;
263
266
break ;
267
+ }
264
268
case 2 :
265
- result = (__intel_GlobalInvocationId (1 ) - __builtin_IB_get_global_offset (1 ))*
266
- __builtin_IB_get_global_size (0 ) + (__intel_GlobalInvocationId (0 ) - __builtin_IB_get_global_offset (0 ));
269
+ {
270
+ size_t gid0 = __intel_GlobalInvocationId (0 );
271
+ size_t gid1 = __intel_GlobalInvocationId (1 );
272
+ size_t globalOffset0 = __builtin_IB_get_global_offset (0 );
273
+ size_t globalOffset1 = __builtin_IB_get_global_offset (1 );
274
+ size_t globalSize0 = __builtin_IB_get_global_size (0 );
275
+ result = (gid1 - globalOffset1 ) * globalSize0 +
276
+ (gid0 - globalOffset0 );
267
277
break ;
278
+ }
268
279
case 3 :
269
- result = ((__intel_GlobalInvocationId (2 ) - __builtin_IB_get_global_offset (2 )) *
270
- __builtin_IB_get_global_size (1 ) * __builtin_IB_get_global_size (0 )) +
271
- ((__intel_GlobalInvocationId (1 ) - __builtin_IB_get_global_offset (1 )) * __builtin_IB_get_global_size (0 )) +
272
- (__intel_GlobalInvocationId (0 ) - __builtin_IB_get_global_offset (0 ));
280
+ {
281
+ size_t gid0 = __intel_GlobalInvocationId (0 );
282
+ size_t gid1 = __intel_GlobalInvocationId (1 );
283
+ size_t gid2 = __intel_GlobalInvocationId (2 );
284
+ size_t globalOffset0 = __builtin_IB_get_global_offset (0 );
285
+ size_t globalOffset1 = __builtin_IB_get_global_offset (1 );
286
+ size_t globalOffset2 = __builtin_IB_get_global_offset (2 );
287
+ size_t globalSize0 = __builtin_IB_get_global_size (0 );
288
+ size_t globalSize1 = __builtin_IB_get_global_size (1 );
289
+ result = ((gid2 - globalOffset2 ) * globalSize1 * globalSize0 ) +
290
+ ((gid1 - globalOffset1 ) * globalSize0 ) +
291
+ (gid0 - globalOffset0 );
273
292
break ;
293
+ }
274
294
}
275
295
276
296
BuiltinAssumeGE0 (result );
0 commit comments