#version 460
#extension GL_EXT_scalar_block_layout : require
layout(local_size_x = 128, local_size_y = 1, local_size_z = 1) in;

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

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

void main()
{
    vec3 _28 = uintBitsToFloat(_10._m0[gl_GlobalInvocationID.x * 2u]);
    _14._m0[gl_GlobalInvocationID.x * 2u] = uvec3(floatBitsToUint(_28.x), floatBitsToUint(_28.y), floatBitsToUint(_28.z));
    vec3 _43 = uintBitsToFloat(_10._m0[(gl_GlobalInvocationID.x * 2u) + 1u]);
    _14._m0[(gl_GlobalInvocationID.x * 2u) + 1u] = uvec3(floatBitsToUint(_43.x), floatBitsToUint(_43.y), floatBitsToUint(_43.z));
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 56
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
OpEntryPoint GLCompute %3 "main" %16
OpExecutionMode %3 LocalSize 128 1 1
OpName %3 "main"
OpName %8 "SSBO"
OpName %12 "SSBO"
OpDecorate %7 ArrayStride 12
OpMemberDecorate %8 0 Offset 0
OpDecorate %8 Block
OpDecorate %10 DescriptorSet 0
OpDecorate %10 Binding 0
OpDecorate %10 NonWritable
OpDecorate %11 ArrayStride 12
OpMemberDecorate %12 0 Offset 0
OpDecorate %12 Block
OpDecorate %14 DescriptorSet 0
OpDecorate %14 Binding 1
OpDecorate %14 NonReadable
OpDecorate %16 BuiltIn GlobalInvocationId
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeInt 32 0
%6 = OpTypeVector %5 3
%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 = OpTypePointer Input %6
%16 = OpVariable %15 Input
%17 = OpTypePointer Input %5
%19 = OpConstant %5 0
%22 = OpConstant %5 2
%23 = OpTypePointer StorageBuffer %6
%26 = OpTypeFloat 32
%27 = OpTypeVector %26 3
%39 = OpConstant %5 1
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %54
%54 = OpLabel
%18 = OpAccessChain %17 %16 %19
%20 = OpLoad %5 %18
%21 = OpIMul %5 %20 %22
%24 = OpAccessChain %23 %10 %19 %21
%25 = OpLoad %6 %24
%28 = OpBitcast %27 %25
%29 = OpCompositeExtract %26 %28 0
%30 = OpCompositeExtract %26 %28 1
%31 = OpCompositeExtract %26 %28 2
%32 = OpIMul %5 %20 %22
%33 = OpBitcast %5 %29
%34 = OpBitcast %5 %30
%35 = OpBitcast %5 %31
%36 = OpCompositeConstruct %6 %33 %34 %35
%37 = OpAccessChain %23 %14 %19 %32
OpStore %37 %36
%38 = OpIMul %5 %20 %22
%40 = OpIAdd %5 %38 %39
%41 = OpAccessChain %23 %10 %19 %40
%42 = OpLoad %6 %41
%43 = OpBitcast %27 %42
%44 = OpCompositeExtract %26 %43 0
%45 = OpCompositeExtract %26 %43 1
%46 = OpCompositeExtract %26 %43 2
%47 = OpIMul %5 %20 %22
%48 = OpIAdd %5 %47 %39
%49 = OpBitcast %5 %44
%50 = OpBitcast %5 %45
%51 = OpBitcast %5 %46
%52 = OpCompositeConstruct %6 %49 %50 %51
%53 = OpAccessChain %23 %14 %19 %48
OpStore %53 %52
OpReturn
OpFunctionEnd
#endif
