#version 460
#if defined(GL_AMD_gpu_shader_half_float)
#extension GL_AMD_gpu_shader_half_float : require
#elif defined(GL_EXT_shader_explicit_arithmetic_types_float16)
#extension GL_EXT_shader_explicit_arithmetic_types_float16 : require
#else
#error No extension available for FP16.
#endif
#extension GL_EXT_shader_16bit_storage : require
#if defined(GL_ARB_gpu_shader_int64)
#extension GL_ARB_gpu_shader_int64 : require
#else
#error No extension available for 64-bit integers.
#endif
#extension GL_EXT_nonuniform_qualifier : require
#extension GL_EXT_scalar_block_layout : require

layout(set = 0, binding = 0, scalar) uniform BindlessCBV
{
    float _m0[16384];
} _12[];

layout(set = 0, binding = 0, scalar) uniform _16_19
{
    float16_t _m0[32768];
} _19[];

layout(set = 0, binding = 0, scalar) uniform _23_26
{
    uint64_t _m0[8192];
} _26[];

layout(location = 0) out vec4 SV_Target;

void main()
{
    float _51 = (_12[0u]._m0[1u] + float(_19[1u]._m0[1u])) + float(_26[2u]._m0[1u]);
    SV_Target.x = _51;
    SV_Target.y = _51;
    SV_Target.z = _51;
    SV_Target.w = _51;
}


#if 0
// SPIR-V disassembly
; SPIR-V
; Version: 1.3
; Generator: Unknown(30017); 21022
; Bound: 60
; Schema: 0
OpCapability Shader
OpCapability Float16
OpCapability Int64
OpCapability UniformAndStorageBuffer16BitAccess
OpCapability DenormPreserve
OpCapability RuntimeDescriptorArray
OpExtension "SPV_EXT_descriptor_indexing"
OpExtension "SPV_KHR_float_controls"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %3 "main" %29
OpExecutionMode %3 OriginUpperLeft
OpExecutionMode %3 DenormPreserve 16
OpName %3 "main"
OpName %9 "BindlessCBV"
OpName %16 "BindlessCBV"
OpName %23 "BindlessCBV"
OpName %29 "SV_Target"
OpDecorate %8 ArrayStride 4
OpDecorate %9 Block
OpMemberDecorate %9 0 Offset 0
OpDecorate %12 DescriptorSet 0
OpDecorate %12 Binding 0
OpDecorate %15 ArrayStride 2
OpDecorate %16 Block
OpMemberDecorate %16 0 Offset 0
OpDecorate %19 DescriptorSet 0
OpDecorate %19 Binding 0
OpDecorate %22 ArrayStride 8
OpDecorate %23 Block
OpMemberDecorate %23 0 Offset 0
OpDecorate %26 DescriptorSet 0
OpDecorate %26 Binding 0
OpDecorate %29 Location 0
%1 = OpTypeVoid
%2 = OpTypeFunction %1
%5 = OpTypeFloat 32
%6 = OpTypeInt 32 0
%7 = OpConstant %6 16384
%8 = OpTypeArray %5 %7
%9 = OpTypeStruct %8
%10 = OpTypeRuntimeArray %9
%11 = OpTypePointer Uniform %10
%12 = OpVariable %11 Uniform
%13 = OpTypeFloat 16
%14 = OpConstant %6 32768
%15 = OpTypeArray %13 %14
%16 = OpTypeStruct %15
%17 = OpTypeRuntimeArray %16
%18 = OpTypePointer Uniform %17
%19 = OpVariable %18 Uniform
%20 = OpTypeInt 64 0
%21 = OpConstant %6 8192
%22 = OpTypeArray %20 %21
%23 = OpTypeStruct %22
%24 = OpTypeRuntimeArray %23
%25 = OpTypePointer Uniform %24
%26 = OpVariable %25 Uniform
%27 = OpTypeVector %5 4
%28 = OpTypePointer Output %27
%29 = OpVariable %28 Output
%30 = OpTypePointer Uniform %9
%32 = OpConstant %6 0
%33 = OpTypePointer Uniform %16
%35 = OpConstant %6 1
%36 = OpTypePointer Uniform %23
%38 = OpConstant %6 2
%39 = OpTypePointer Uniform %5
%42 = OpTypePointer Uniform %13
%45 = OpTypePointer Uniform %20
%52 = OpTypePointer Output %5
%57 = OpConstant %6 3
%3 = OpFunction %1 None %2
%4 = OpLabel
OpBranch %58
%58 = OpLabel
%31 = OpAccessChain %30 %12 %32
%34 = OpAccessChain %33 %19 %35
%37 = OpAccessChain %36 %26 %38
%40 = OpAccessChain %39 %31 %32 %35
%41 = OpLoad %5 %40
%43 = OpAccessChain %42 %34 %32 %35
%44 = OpLoad %13 %43
%46 = OpAccessChain %45 %37 %32 %35
%47 = OpLoad %20 %46
%48 = OpFConvert %5 %44
%49 = OpConvertUToF %5 %47
%50 = OpFAdd %5 %41 %48
%51 = OpFAdd %5 %50 %49
%53 = OpAccessChain %52 %29 %32
OpStore %53 %51
%54 = OpAccessChain %52 %29 %35
OpStore %54 %51
%55 = OpAccessChain %52 %29 %38
OpStore %55 %51
%56 = OpAccessChain %52 %29 %57
OpStore %56 %51
OpReturn
OpFunctionEnd
#endif
