@@ -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 ;
@@ -98,8 +98,8 @@ size_t OVERLOADABLE __intel_GlobalInvocationId(uint dim)
98
98
return 0 ;
99
99
100
100
size_t v =
101
- __builtin_IB_get_group_id (dim ) * __builtin_IB_get_enqueued_local_size (dim ) +
102
- __intel_LocalInvocationId (dim ) + __builtin_IB_get_global_offset (dim );
101
+ ( size_t ) __builtin_IB_get_group_id (dim ) * ( size_t ) __builtin_IB_get_enqueued_local_size (dim ) +
102
+ ( size_t ) __intel_LocalInvocationId (dim ) + ( size_t ) __builtin_IB_get_global_offset (dim );
103
103
104
104
#ifndef NO_ASSUME_SUPPORT
105
105
BuiltinAssumeGE0 (v );
@@ -252,18 +252,38 @@ size_t SPIRV_OVERLOADABLE SPIRV_BUILTIN_NO_OP(BuiltInGlobalLinearId, , )()
252
252
switch (dim ) {
253
253
default :
254
254
case 1 :
255
- result = __intel_GlobalInvocationId (0 ) - __builtin_IB_get_global_offset (0 );
255
+ {
256
+ size_t gid0 = __intel_GlobalInvocationId (0 );
257
+ size_t globalOffset0 = __builtin_IB_get_global_offset (0 );
258
+ result = gid0 - globalOffset0 ;
256
259
break ;
260
+ }
257
261
case 2 :
258
- result = (__intel_GlobalInvocationId (1 ) - __builtin_IB_get_global_offset (1 ))*
259
- __builtin_IB_get_global_size (0 ) + (__intel_GlobalInvocationId (0 ) - __builtin_IB_get_global_offset (0 ));
262
+ {
263
+ size_t gid0 = __intel_GlobalInvocationId (0 );
264
+ size_t gid1 = __intel_GlobalInvocationId (1 );
265
+ size_t globalOffset0 = __builtin_IB_get_global_offset (0 );
266
+ size_t globalOffset1 = __builtin_IB_get_global_offset (1 );
267
+ size_t globalSize0 = __builtin_IB_get_global_size (0 );
268
+ result = (gid1 - globalOffset1 ) * globalSize0 +
269
+ (gid0 - globalOffset0 );
260
270
break ;
271
+ }
261
272
case 3 :
262
- result = ((__intel_GlobalInvocationId (2 ) - __builtin_IB_get_global_offset (2 )) *
263
- __builtin_IB_get_global_size (1 ) * __builtin_IB_get_global_size (0 )) +
264
- ((__intel_GlobalInvocationId (1 ) - __builtin_IB_get_global_offset (1 )) * __builtin_IB_get_global_size (0 )) +
265
- (__intel_GlobalInvocationId (0 ) - __builtin_IB_get_global_offset (0 ));
273
+ {
274
+ size_t gid0 = __intel_GlobalInvocationId (0 );
275
+ size_t gid1 = __intel_GlobalInvocationId (1 );
276
+ size_t gid2 = __intel_GlobalInvocationId (2 );
277
+ size_t globalOffset0 = __builtin_IB_get_global_offset (0 );
278
+ size_t globalOffset1 = __builtin_IB_get_global_offset (1 );
279
+ size_t globalOffset2 = __builtin_IB_get_global_offset (2 );
280
+ size_t globalSize0 = __builtin_IB_get_global_size (0 );
281
+ size_t globalSize1 = __builtin_IB_get_global_size (1 );
282
+ result = ((gid2 - globalOffset2 ) * globalSize1 * globalSize0 ) +
283
+ ((gid1 - globalOffset1 ) * globalSize0 ) +
284
+ (gid0 - globalOffset0 );
266
285
break ;
286
+ }
267
287
}
268
288
269
289
BuiltinAssumeGE0 (result );
0 commit comments