@@ -40,9 +40,9 @@ uint __intel_WorkgroupSize()
4040size_t __intel_EnqueuedWorkgroupSize ()
4141{
4242 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 );
4646
4747 BuiltinAssumeGE0 (totalWorkGroupSize );
4848 return totalWorkGroupSize ;
@@ -105,8 +105,8 @@ size_t OVERLOADABLE __intel_GlobalInvocationId(uint dim)
105105 return 0 ;
106106
107107 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 );
110110
111111#ifndef NO_ASSUME_SUPPORT
112112 BuiltinAssumeGE0 (v );
@@ -259,18 +259,38 @@ size_t SPIRV_OVERLOADABLE SPIRV_BUILTIN_NO_OP(BuiltInGlobalLinearId, , )()
259259 switch (dim ) {
260260 default :
261261 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 ;
263266 break ;
267+ }
264268 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 );
267277 break ;
278+ }
268279 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 );
273292 break ;
293+ }
274294 }
275295
276296 BuiltinAssumeGE0 (result );
0 commit comments