#version 460
layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in;

layout(set = 0, binding = 0, std430) readonly buffer SSBO
{
    uvec4 _m0[];
} _10;

layout(set = 0, binding = 1, std430) writeonly buffer _12_14
{
    uvec4 _m0[];
} _14;

void main()
{
    vec4 _29 = uintBitsToFloat(_10._m0[gl_GlobalInvocationID.x * 4u]);
    uvec4 _38 = _10._m0[(gl_GlobalInvocationID.x * 4u) + 1u];
    vec4 _39 = uintBitsToFloat(_38);
    uvec4 _48 = _10._m0[(gl_GlobalInvocationID.x * 4u) + 2u];
    vec4 _49 = uintBitsToFloat(_48);
    uvec4 _58 = _10._m0[(gl_GlobalInvocationID.x * 4u) + 3u];
    vec4 _59 = uintBitsToFloat(_58);
    _14._m0[gl_GlobalInvocationID.x * 4u] = uvec4(floatBitsToUint(_29.x), floatBitsToUint(_29.y), floatBitsToUint(_29.z), floatBitsToUint(_29.w));
    _14._m0[(gl_GlobalInvocationID.x * 4u) + 1u] = uvec4(floatBitsToUint(_39.x), floatBitsToUint(_39.y), floatBitsToUint(_39.z), floatBitsToUint(_39.w));
    _14._m0[(gl_GlobalInvocationID.x * 4u) + 2u] = uvec4(floatBitsToUint(_49.x), floatBitsToUint(_49.y), floatBitsToUint(_49.z), floatBitsToUint(_49.w));
    _14._m0[(gl_GlobalInvocationID.x * 4u) + 3u] = uvec4(floatBitsToUint(_59.x), floatBitsToUint(_59.y), floatBitsToUint(_59.z), floatBitsToUint(_59.w));
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 97
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %3 "main" %17
OpExecutionMode %3 LocalSize 128 1 1
OpName %3 "main"
OpName %8 "SSBO"
OpName %12 "SSBO"
OpDecorate %7 ArrayStride 16
OpMemberDecorate %8 0 Offset 0
OpDecorate %8 Block
OpDecorate %10 DescriptorSet 0
OpDecorate %10 Binding 0
OpDecorate %10 NonWritable
OpDecorate %11 ArrayStride 16
OpMemberDecorate %12 0 Offset 0
OpDecorate %12 Block
OpDecorate %14 DescriptorSet 0
OpDecorate %14 Binding 1
OpDecorate %14 NonReadable
OpDecorate %17 BuiltIn GlobalInvocationId
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeInt 32 0
%6 = OpTypeVector %5 4
%7 = OpTypeRuntimeArray %6
%8 = OpTypeStruct %7
%9 = OpTypePointer StorageBuffer %8
%10 = OpVariable %9 StorageBuffer
%11 = OpTypeRuntimeArray %6
%12 = OpTypeStruct %11
%13 = OpTypePointer StorageBuffer %12
%14 = OpVariable %13 StorageBuffer
%15 = OpTypeVector %5 3
%16 = OpTypePointer Input %15
%17 = OpVariable %16 Input
%18 = OpTypePointer Input %5
%20 = OpConstant %5 0
%23 = OpConstant %5 4
%24 = OpTypePointer StorageBuffer %6
%27 = OpTypeFloat 32
%28 = OpTypeVector %27 4
%35 = OpConstant %5 1
%45 = OpConstant %5 2
%55 = OpConstant %5 3
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %95
%95 = OpLabel
%19 = OpAccessChain %18 %17 %20
%21 = OpLoad %5 %19
%22 = OpIMul %5 %21 %23
%25 = OpAccessChain %24 %10 %20 %22
%26 = OpLoad %6 %25
%29 = OpBitcast %28 %26
%30 = OpCompositeExtract %27 %29 0
%31 = OpCompositeExtract %27 %29 1
%32 = OpCompositeExtract %27 %29 2
%33 = OpCompositeExtract %27 %29 3
%34 = OpIMul %5 %21 %23
%36 = OpIAdd %5 %34 %35
%37 = OpAccessChain %24 %10 %20 %36
%38 = OpLoad %6 %37
%39 = OpBitcast %28 %38
%40 = OpCompositeExtract %27 %39 0
%41 = OpCompositeExtract %27 %39 1
%42 = OpCompositeExtract %27 %39 2
%43 = OpCompositeExtract %27 %39 3
%44 = OpIMul %5 %21 %23
%46 = OpIAdd %5 %44 %45
%47 = OpAccessChain %24 %10 %20 %46
%48 = OpLoad %6 %47
%49 = OpBitcast %28 %48
%50 = OpCompositeExtract %27 %49 0
%51 = OpCompositeExtract %27 %49 1
%52 = OpCompositeExtract %27 %49 2
%53 = OpCompositeExtract %27 %49 3
%54 = OpIMul %5 %21 %23
%56 = OpIAdd %5 %54 %55
%57 = OpAccessChain %24 %10 %20 %56
%58 = OpLoad %6 %57
%59 = OpBitcast %28 %58
%60 = OpCompositeExtract %27 %59 0
%61 = OpCompositeExtract %27 %59 1
%62 = OpCompositeExtract %27 %59 2
%63 = OpCompositeExtract %27 %59 3
%64 = OpIMul %5 %21 %23
%65 = OpBitcast %5 %30
%66 = OpBitcast %5 %31
%67 = OpBitcast %5 %32
%68 = OpBitcast %5 %33
%69 = OpCompositeConstruct %6 %65 %66 %67 %68
%70 = OpAccessChain %24 %14 %20 %64
OpStore %70 %69
%71 = OpIMul %5 %21 %23
%72 = OpIAdd %5 %71 %35
%73 = OpBitcast %5 %40
%74 = OpBitcast %5 %41
%75 = OpBitcast %5 %42
%76 = OpBitcast %5 %43
%77 = OpCompositeConstruct %6 %73 %74 %75 %76
%78 = OpAccessChain %24 %14 %20 %72
OpStore %78 %77
%79 = OpIMul %5 %21 %23
%80 = OpIAdd %5 %79 %45
%81 = OpBitcast %5 %50
%82 = OpBitcast %5 %51
%83 = OpBitcast %5 %52
%84 = OpBitcast %5 %53
%85 = OpCompositeConstruct %6 %81 %82 %83 %84
%86 = OpAccessChain %24 %14 %20 %80
OpStore %86 %85
%87 = OpIMul %5 %21 %23
%88 = OpIAdd %5 %87 %55
%89 = OpBitcast %5 %60
%90 = OpBitcast %5 %61
%91 = OpBitcast %5 %62
%92 = OpBitcast %5 %63
%93 = OpCompositeConstruct %6 %89 %90 %91 %92
%94 = OpAccessChain %24 %14 %20 %88
OpStore %94 %93
OpReturn
OpFunctionEnd
#endif
