| #include <metal_stdlib> |
| |
| using namespace metal; |
| struct Uniforms { |
| /* 0x0000 */ float tint_symbol; |
| /* 0x0004 */ int8_t tint_pad[12]; |
| /* 0x0010 */ packed_int3 aShape; |
| /* 0x001c */ int8_t tint_pad_1[4]; |
| /* 0x0020 */ packed_int3 bShape; |
| /* 0x002c */ int8_t tint_pad_2[4]; |
| /* 0x0030 */ packed_int3 outShape; |
| /* 0x003c */ int8_t tint_pad_3[4]; |
| /* 0x0040 */ int2 outShapeStrides; |
| }; |
| struct ssbOut { |
| /* 0x0000 */ float result[1]; |
| }; |
| struct ssbA { |
| /* 0x0000 */ float A[1]; |
| }; |
| struct ssbB { |
| /* 0x0000 */ float B[1]; |
| }; |
| struct tint_array_wrapper_1 { |
| float arr[64]; |
| }; |
| struct tint_array_wrapper { |
| tint_array_wrapper_1 arr[64]; |
| }; |
| struct tint_array_wrapper_3 { |
| float arr[1]; |
| }; |
| struct tint_array_wrapper_2 { |
| tint_array_wrapper_3 arr[64]; |
| }; |
| struct tint_array_wrapper_4 { |
| tint_array_wrapper_3 arr[1]; |
| }; |
| |
| bool coordsInBounds_vi2_vi2_(thread int2* const coord, thread int2* const shape) { |
| bool x_87 = false; |
| bool x_88_phi = false; |
| int2 const x_76 = *(coord); |
| bool const x_81 = all((x_76 >= int2(0, 0))); |
| x_88_phi = x_81; |
| if (x_81) { |
| int2 const x_84 = *(coord); |
| int2 const x_85 = *(shape); |
| x_87 = all((x_84 < x_85)); |
| x_88_phi = x_87; |
| } |
| bool const x_88 = x_88_phi; |
| return x_88; |
| } |
| |
| float mm_readA_i1_i1_(thread int* const row, thread int* const col, const constant Uniforms* const tint_symbol_2, thread int* const tint_symbol_3, thread int* const tint_symbol_4, thread int* const tint_symbol_5, const device ssbA* const tint_symbol_6) { |
| int batchASize = 0; |
| int2 param_10 = 0; |
| int2 param_11 = 0; |
| float x_430 = 0.0f; |
| int const x_417 = (*(tint_symbol_2)).aShape[1]; |
| int const x_419 = (*(tint_symbol_2)).aShape[2]; |
| batchASize = as_type<int>((as_type<uint>(x_417) * as_type<uint>(x_419))); |
| int const x_421 = *(row); |
| int const x_422 = *(col); |
| int const x_424 = *(tint_symbol_3); |
| int const x_425 = *(tint_symbol_4); |
| param_10 = int2(x_421, x_422); |
| param_11 = int2(x_424, x_425); |
| bool const x_429 = coordsInBounds_vi2_vi2_(&(param_10), &(param_11)); |
| if (x_429) { |
| int const x_438 = *(tint_symbol_5); |
| int const x_439 = batchASize; |
| int const x_441 = *(row); |
| int const x_442 = *(tint_symbol_4); |
| int const x_445 = *(col); |
| float const x_448 = (*(tint_symbol_6)).A[as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_438) * as_type<uint>(x_439)))) + as_type<uint>(as_type<int>((as_type<uint>(x_441) * as_type<uint>(x_442))))))) + as_type<uint>(x_445)))]; |
| x_430 = x_448; |
| } else { |
| x_430 = 0.0f; |
| } |
| float const x_450 = x_430; |
| return x_450; |
| } |
| |
| float mm_readB_i1_i1_(thread int* const row_1, thread int* const col_1, const constant Uniforms* const tint_symbol_7, thread int* const tint_symbol_8, thread int* const tint_symbol_9, thread int* const tint_symbol_10, const device ssbB* const tint_symbol_11) { |
| int batchBSize = 0; |
| int2 param_12 = 0; |
| int2 param_13 = 0; |
| float x_468 = 0.0f; |
| int const x_455 = (*(tint_symbol_7)).bShape[1]; |
| int const x_457 = (*(tint_symbol_7)).bShape[2]; |
| batchBSize = as_type<int>((as_type<uint>(x_455) * as_type<uint>(x_457))); |
| int const x_459 = *(row_1); |
| int const x_460 = *(col_1); |
| int const x_462 = *(tint_symbol_8); |
| int const x_463 = *(tint_symbol_9); |
| param_12 = int2(x_459, x_460); |
| param_13 = int2(x_462, x_463); |
| bool const x_467 = coordsInBounds_vi2_vi2_(&(param_12), &(param_13)); |
| if (x_467) { |
| int const x_475 = *(tint_symbol_10); |
| int const x_476 = batchBSize; |
| int const x_478 = *(row_1); |
| int const x_479 = *(tint_symbol_9); |
| int const x_482 = *(col_1); |
| float const x_485 = (*(tint_symbol_11)).B[as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_475) * as_type<uint>(x_476)))) + as_type<uint>(as_type<int>((as_type<uint>(x_478) * as_type<uint>(x_479))))))) + as_type<uint>(x_482)))]; |
| x_468 = x_485; |
| } else { |
| x_468 = 0.0f; |
| } |
| float const x_487 = x_468; |
| return x_487; |
| } |
| |
| int getOutputFlatIndex_vi3_(thread int3* const coords, const constant Uniforms* const tint_symbol_12) { |
| int3 const x_99 = *(coords); |
| int const x_105 = (*(tint_symbol_12)).outShapeStrides[0]; |
| int const x_107 = (*(tint_symbol_12)).outShapeStrides[1]; |
| return int(dot(float3(x_99), float3(int3(x_105, x_107, 1)))); |
| } |
| |
| void setOutput_i1_f1_(thread int* const flatIndex, thread float* const value, device ssbOut* const tint_symbol_13) { |
| int const x_95 = *(flatIndex); |
| float const x_96 = *(value); |
| (*(tint_symbol_13)).result[x_95] = x_96; |
| return; |
| } |
| |
| void setOutput_i1_i1_i1_f1_(thread int* const d0, thread int* const d1, thread int* const d2, thread float* const value_1, const constant Uniforms* const tint_symbol_14, device ssbOut* const tint_symbol_15) { |
| int flatIndex_1 = 0; |
| int3 param = 0; |
| int param_1 = 0; |
| float param_2 = 0.0f; |
| int const x_115 = *(d0); |
| int const x_116 = *(d1); |
| int const x_117 = *(d2); |
| param = int3(x_115, x_116, x_117); |
| int const x_120 = getOutputFlatIndex_vi3_(&(param), tint_symbol_14); |
| flatIndex_1 = x_120; |
| int const x_122 = flatIndex_1; |
| param_1 = x_122; |
| float const x_124 = *(value_1); |
| param_2 = x_124; |
| setOutput_i1_f1_(&(param_1), &(param_2), tint_symbol_15); |
| return; |
| } |
| |
| void mm_write_i1_i1_f1_(thread int* const row_2, thread int* const col_2, thread float* const value_2, thread int* const tint_symbol_16, const constant Uniforms* const tint_symbol_17, device ssbOut* const tint_symbol_18) { |
| int3 outCoord = 0; |
| int param_14 = 0; |
| int param_15 = 0; |
| int param_16 = 0; |
| float param_17 = 0.0f; |
| int const x_491 = *(tint_symbol_16); |
| int const x_492 = *(row_2); |
| int const x_493 = *(col_2); |
| outCoord = int3(x_491, x_492, x_493); |
| int const x_496 = *(tint_symbol_16); |
| param_14 = x_496; |
| int const x_498 = *(row_2); |
| param_15 = x_498; |
| int const x_500 = *(col_2); |
| param_16 = x_500; |
| float const x_502 = *(value_2); |
| param_17 = x_502; |
| setOutput_i1_i1_i1_f1_(&(param_14), &(param_15), &(param_16), &(param_17), tint_symbol_17, tint_symbol_18); |
| return; |
| } |
| |
| void mm_matMul_i1_i1_i1_(thread int* const dimAOuter, thread int* const dimInner, thread int* const dimBOuter, thread uint3* const tint_symbol_19, thread uint3* const tint_symbol_20, const constant Uniforms* const tint_symbol_21, thread int* const tint_symbol_22, thread int* const tint_symbol_23, thread int* const tint_symbol_24, const device ssbA* const tint_symbol_25, threadgroup tint_array_wrapper* const tint_symbol_26, thread int* const tint_symbol_27, const device ssbB* const tint_symbol_28, threadgroup tint_array_wrapper_2* const tint_symbol_29, device ssbOut* const tint_symbol_30) { |
| int tileRow = 0; |
| int tileCol = 0; |
| int globalRow = 0; |
| int globalCol = 0; |
| int numTiles = 0; |
| int innerRow = 0; |
| int innerCol = 0; |
| tint_array_wrapper_4 acc = {}; |
| int tileColA = 0; |
| int tileRowB = 0; |
| int t = 0; |
| int innerRow_1 = 0; |
| int innerCol_1 = 0; |
| int inputRow = 0; |
| int inputCol = 0; |
| int param_3 = 0; |
| int param_4 = 0; |
| int innerRow_2 = 0; |
| int innerCol_2 = 0; |
| int inputRow_1 = 0; |
| int inputCol_1 = 0; |
| int param_5 = 0; |
| int param_6 = 0; |
| int k = 0; |
| int inner = 0; |
| tint_array_wrapper_3 BCached = {}; |
| int innerRow_3 = 0; |
| float ACached = 0.0f; |
| int innerCol_3 = 0; |
| int innerRow_4 = 0; |
| int innerCol_4 = 0; |
| int param_7 = 0; |
| int param_8 = 0; |
| float param_9 = 0.0f; |
| uint const x_132 = (*(tint_symbol_19))[1]; |
| tileRow = as_type<int>((as_type<uint>(as_type<int>(x_132)) * as_type<uint>(1))); |
| uint const x_137 = (*(tint_symbol_19))[0]; |
| tileCol = as_type<int>((as_type<uint>(as_type<int>(x_137)) * as_type<uint>(1))); |
| uint const x_143 = (*(tint_symbol_20))[1]; |
| globalRow = as_type<int>((as_type<uint>(as_type<int>(x_143)) * as_type<uint>(1))); |
| uint const x_148 = (*(tint_symbol_20))[0]; |
| globalCol = as_type<int>((as_type<uint>(as_type<int>(x_148)) * as_type<uint>(1))); |
| int const x_152 = *(dimInner); |
| numTiles = as_type<int>((as_type<uint>((as_type<int>((as_type<uint>(x_152) - as_type<uint>(1))) / 64)) + as_type<uint>(1))); |
| innerRow = 0; |
| while (true) { |
| int const x_163 = innerRow; |
| if ((x_163 < 1)) { |
| } else { |
| break; |
| } |
| innerCol = 0; |
| while (true) { |
| int const x_171 = innerCol; |
| if ((x_171 < 1)) { |
| } else { |
| break; |
| } |
| int const x_177 = innerRow; |
| int const x_178 = innerCol; |
| acc.arr[x_177].arr[x_178] = 0.0f; |
| { |
| int const x_181 = innerCol; |
| innerCol = as_type<int>((as_type<uint>(x_181) + as_type<uint>(1))); |
| } |
| } |
| { |
| int const x_183 = innerRow; |
| innerRow = as_type<int>((as_type<uint>(x_183) + as_type<uint>(1))); |
| } |
| } |
| uint const x_187 = (*(tint_symbol_19))[0]; |
| tileColA = as_type<int>((as_type<uint>(as_type<int>(x_187)) * as_type<uint>(64))); |
| uint const x_192 = (*(tint_symbol_19))[1]; |
| tileRowB = as_type<int>((as_type<uint>(as_type<int>(x_192)) * as_type<uint>(1))); |
| t = 0; |
| while (true) { |
| int const x_201 = t; |
| int const x_202 = numTiles; |
| if ((x_201 < x_202)) { |
| } else { |
| break; |
| } |
| innerRow_1 = 0; |
| while (true) { |
| int const x_210 = innerRow_1; |
| if ((x_210 < 1)) { |
| } else { |
| break; |
| } |
| innerCol_1 = 0; |
| while (true) { |
| int const x_218 = innerCol_1; |
| if ((x_218 < 64)) { |
| } else { |
| break; |
| } |
| int const x_221 = tileRow; |
| int const x_222 = innerRow_1; |
| inputRow = as_type<int>((as_type<uint>(x_221) + as_type<uint>(x_222))); |
| int const x_225 = tileColA; |
| int const x_226 = innerCol_1; |
| inputCol = as_type<int>((as_type<uint>(x_225) + as_type<uint>(x_226))); |
| int const x_233 = inputRow; |
| int const x_234 = inputCol; |
| int const x_235 = globalRow; |
| int const x_236 = innerRow_1; |
| int const x_238 = t; |
| int const x_240 = inputCol; |
| param_3 = as_type<int>((as_type<uint>(x_235) + as_type<uint>(x_236))); |
| param_4 = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_238) * as_type<uint>(64)))) + as_type<uint>(x_240))); |
| float const x_244 = mm_readA_i1_i1_(&(param_3), &(param_4), tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_24, tint_symbol_25); |
| (*(tint_symbol_26)).arr[x_233].arr[x_234] = x_244; |
| { |
| int const x_247 = innerCol_1; |
| innerCol_1 = as_type<int>((as_type<uint>(x_247) + as_type<uint>(1))); |
| } |
| } |
| { |
| int const x_249 = innerRow_1; |
| innerRow_1 = as_type<int>((as_type<uint>(x_249) + as_type<uint>(1))); |
| } |
| } |
| innerRow_2 = 0; |
| while (true) { |
| int const x_257 = innerRow_2; |
| if ((x_257 < 1)) { |
| } else { |
| break; |
| } |
| innerCol_2 = 0; |
| while (true) { |
| int const x_265 = innerCol_2; |
| if ((x_265 < 1)) { |
| } else { |
| break; |
| } |
| int const x_268 = tileRowB; |
| int const x_269 = innerRow_2; |
| inputRow_1 = as_type<int>((as_type<uint>(x_268) + as_type<uint>(x_269))); |
| int const x_272 = tileCol; |
| int const x_273 = innerCol_2; |
| inputCol_1 = as_type<int>((as_type<uint>(x_272) + as_type<uint>(x_273))); |
| int const x_278 = inputRow_1; |
| int const x_279 = inputCol_1; |
| int const x_280 = t; |
| int const x_282 = inputRow_1; |
| int const x_284 = globalCol; |
| int const x_285 = innerCol_2; |
| param_5 = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_280) * as_type<uint>(64)))) + as_type<uint>(x_282))); |
| param_6 = as_type<int>((as_type<uint>(x_284) + as_type<uint>(x_285))); |
| float const x_289 = mm_readB_i1_i1_(&(param_5), &(param_6), tint_symbol_21, tint_symbol_23, tint_symbol_27, tint_symbol_24, tint_symbol_28); |
| (*(tint_symbol_29)).arr[x_278].arr[x_279] = x_289; |
| { |
| int const x_291 = innerCol_2; |
| innerCol_2 = as_type<int>((as_type<uint>(x_291) + as_type<uint>(1))); |
| } |
| } |
| { |
| int const x_293 = innerRow_2; |
| innerRow_2 = as_type<int>((as_type<uint>(x_293) + as_type<uint>(1))); |
| } |
| } |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| k = 0; |
| while (true) { |
| int const x_302 = k; |
| if ((x_302 < 64)) { |
| } else { |
| break; |
| } |
| inner = 0; |
| while (true) { |
| int const x_310 = inner; |
| if ((x_310 < 1)) { |
| } else { |
| break; |
| } |
| int const x_314 = inner; |
| int const x_315 = k; |
| int const x_316 = tileCol; |
| int const x_317 = inner; |
| float const x_320 = (*(tint_symbol_29)).arr[x_315].arr[as_type<int>((as_type<uint>(x_316) + as_type<uint>(x_317)))]; |
| BCached.arr[x_314] = x_320; |
| { |
| int const x_322 = inner; |
| inner = as_type<int>((as_type<uint>(x_322) + as_type<uint>(1))); |
| } |
| } |
| innerRow_3 = 0; |
| while (true) { |
| int const x_330 = innerRow_3; |
| if ((x_330 < 1)) { |
| } else { |
| break; |
| } |
| int const x_333 = tileRow; |
| int const x_334 = innerRow_3; |
| int const x_336 = k; |
| float const x_338 = (*(tint_symbol_26)).arr[as_type<int>((as_type<uint>(x_333) + as_type<uint>(x_334)))].arr[x_336]; |
| ACached = x_338; |
| innerCol_3 = 0; |
| while (true) { |
| int const x_345 = innerCol_3; |
| if ((x_345 < 1)) { |
| } else { |
| break; |
| } |
| int const x_347 = innerRow_3; |
| int const x_348 = innerCol_3; |
| float const x_349 = ACached; |
| int const x_350 = innerCol_3; |
| float const x_352 = BCached.arr[x_350]; |
| float const x_355 = acc.arr[x_347].arr[x_348]; |
| acc.arr[x_347].arr[x_348] = (x_355 + (x_349 * x_352)); |
| { |
| int const x_358 = innerCol_3; |
| innerCol_3 = as_type<int>((as_type<uint>(x_358) + as_type<uint>(1))); |
| } |
| } |
| { |
| int const x_360 = innerRow_3; |
| innerRow_3 = as_type<int>((as_type<uint>(x_360) + as_type<uint>(1))); |
| } |
| } |
| { |
| int const x_362 = k; |
| k = as_type<int>((as_type<uint>(x_362) + as_type<uint>(1))); |
| } |
| } |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| { |
| int const x_364 = t; |
| t = as_type<int>((as_type<uint>(x_364) + as_type<uint>(1))); |
| } |
| } |
| innerRow_4 = 0; |
| while (true) { |
| int const x_372 = innerRow_4; |
| if ((x_372 < 1)) { |
| } else { |
| break; |
| } |
| innerCol_4 = 0; |
| while (true) { |
| bool x_393 = false; |
| bool x_394_phi = false; |
| int const x_380 = innerCol_4; |
| if ((x_380 < 1)) { |
| } else { |
| break; |
| } |
| int const x_382 = globalCol; |
| int const x_383 = innerCol_4; |
| int const x_385 = *(dimBOuter); |
| bool const x_386 = (as_type<int>((as_type<uint>(x_382) + as_type<uint>(x_383))) < x_385); |
| x_394_phi = x_386; |
| if (x_386) { |
| int const x_389 = globalRow; |
| int const x_390 = innerRow_4; |
| int const x_392 = *(dimAOuter); |
| x_393 = (as_type<int>((as_type<uint>(x_389) + as_type<uint>(x_390))) < x_392); |
| x_394_phi = x_393; |
| } |
| bool const x_394 = x_394_phi; |
| if (x_394) { |
| int const x_397 = globalRow; |
| int const x_398 = innerRow_4; |
| int const x_400 = globalCol; |
| int const x_401 = innerCol_4; |
| int const x_403 = innerRow_4; |
| int const x_404 = innerCol_4; |
| param_7 = as_type<int>((as_type<uint>(x_397) + as_type<uint>(x_398))); |
| param_8 = as_type<int>((as_type<uint>(x_400) + as_type<uint>(x_401))); |
| float const x_409 = acc.arr[x_403].arr[x_404]; |
| param_9 = x_409; |
| mm_write_i1_i1_f1_(&(param_7), &(param_8), &(param_9), tint_symbol_24, tint_symbol_21, tint_symbol_30); |
| } |
| { |
| int const x_411 = innerCol_4; |
| innerCol_4 = as_type<int>((as_type<uint>(x_411) + as_type<uint>(1))); |
| } |
| } |
| { |
| int const x_413 = innerRow_4; |
| innerRow_4 = as_type<int>((as_type<uint>(x_413) + as_type<uint>(1))); |
| } |
| } |
| return; |
| } |
| |
| void main_1(const constant Uniforms* const tint_symbol_31, thread int* const tint_symbol_32, thread int* const tint_symbol_33, thread int* const tint_symbol_34, thread uint3* const tint_symbol_35, thread int* const tint_symbol_36, thread uint3* const tint_symbol_37, const device ssbA* const tint_symbol_38, threadgroup tint_array_wrapper* const tint_symbol_39, const device ssbB* const tint_symbol_40, threadgroup tint_array_wrapper_2* const tint_symbol_41, device ssbOut* const tint_symbol_42) { |
| int param_18 = 0; |
| int param_19 = 0; |
| int param_20 = 0; |
| int const x_67 = (*(tint_symbol_31)).aShape[1]; |
| *(tint_symbol_32) = x_67; |
| int const x_71 = (*(tint_symbol_31)).aShape[2]; |
| *(tint_symbol_33) = x_71; |
| int const x_75 = (*(tint_symbol_31)).bShape[2]; |
| *(tint_symbol_34) = x_75; |
| uint const x_505 = (*(tint_symbol_35))[2]; |
| *(tint_symbol_36) = as_type<int>(x_505); |
| int const x_508 = *(tint_symbol_32); |
| param_18 = x_508; |
| int const x_510 = *(tint_symbol_33); |
| param_19 = x_510; |
| int const x_512 = *(tint_symbol_34); |
| param_20 = x_512; |
| mm_matMul_i1_i1_i1_(&(param_18), &(param_19), &(param_20), tint_symbol_37, tint_symbol_35, tint_symbol_31, tint_symbol_32, tint_symbol_33, tint_symbol_36, tint_symbol_38, tint_symbol_39, tint_symbol_34, tint_symbol_40, tint_symbol_41, tint_symbol_42); |
| return; |
| } |
| |
| void tint_symbol_1_inner(uint3 gl_LocalInvocationID_param, uint3 gl_GlobalInvocationID_param, uint local_invocation_index, threadgroup tint_array_wrapper_2* const tint_symbol_43, threadgroup tint_array_wrapper* const tint_symbol_44, thread uint3* const tint_symbol_45, thread uint3* const tint_symbol_46, const constant Uniforms* const tint_symbol_47, thread int* const tint_symbol_48, thread int* const tint_symbol_49, thread int* const tint_symbol_50, thread int* const tint_symbol_51, const device ssbA* const tint_symbol_52, const device ssbB* const tint_symbol_53, device ssbOut* const tint_symbol_54) { |
| { |
| uint const i_1 = local_invocation_index; |
| uint const i_2 = (local_invocation_index % 1u); |
| (*(tint_symbol_43)).arr[i_1].arr[i_2] = float(); |
| } |
| for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 64u)) { |
| uint const i = (idx / 64u); |
| uint const i_1 = (idx % 64u); |
| (*(tint_symbol_44)).arr[i].arr[i_1] = float(); |
| } |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| *(tint_symbol_45) = gl_LocalInvocationID_param; |
| *(tint_symbol_46) = gl_GlobalInvocationID_param; |
| main_1(tint_symbol_47, tint_symbol_48, tint_symbol_49, tint_symbol_50, tint_symbol_46, tint_symbol_51, tint_symbol_45, tint_symbol_52, tint_symbol_44, tint_symbol_53, tint_symbol_43, tint_symbol_54); |
| } |
| |
| kernel void tint_symbol_1(const constant Uniforms* tint_symbol_59 [[buffer(0)]], const device ssbA* tint_symbol_64 [[buffer(2)]], const device ssbB* tint_symbol_65 [[buffer(3)]], device ssbOut* tint_symbol_66 [[buffer(1)]], uint3 gl_LocalInvocationID_param [[thread_position_in_threadgroup]], uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], uint local_invocation_index [[thread_index_in_threadgroup]]) { |
| threadgroup tint_array_wrapper_2 tint_symbol_55; |
| threadgroup tint_array_wrapper tint_symbol_56; |
| thread uint3 tint_symbol_57 = 0u; |
| thread uint3 tint_symbol_58 = 0u; |
| thread int tint_symbol_60 = 0; |
| thread int tint_symbol_61 = 0; |
| thread int tint_symbol_62 = 0; |
| thread int tint_symbol_63 = 0; |
| tint_symbol_1_inner(gl_LocalInvocationID_param, gl_GlobalInvocationID_param, local_invocation_index, &(tint_symbol_55), &(tint_symbol_56), &(tint_symbol_57), &(tint_symbol_58), tint_symbol_59, &(tint_symbol_60), &(tint_symbol_61), &(tint_symbol_62), &(tint_symbol_63), tint_symbol_64, tint_symbol_65, tint_symbol_66); |
| return; |
| } |
| |