#version 450
#extension GL_KHR_shader_subgroup_basic : require
#extension GL_KHR_shader_subgroup_ballot : require
#extension GL_KHR_shader_subgroup_vote : require
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

layout(set = 0, binding = 0, std430) buffer SSBO
{
    float FragColor;
} _9;

void main()
{
    _9.FragColor = float(gl_NumSubgroups);
    _9.FragColor = float(gl_SubgroupID);
    _9.FragColor = float(gl_SubgroupSize);
    _9.FragColor = float(gl_SubgroupInvocationID);
    subgroupMemoryBarrier();
    subgroupBarrier();
    subgroupMemoryBarrier();
    subgroupMemoryBarrierBuffer();
    subgroupMemoryBarrierShared();
    subgroupMemoryBarrierImage();
    bool elected = subgroupElect();
    _9.FragColor = vec4(gl_SubgroupEqMask).x;
    _9.FragColor = vec4(gl_SubgroupGeMask).x;
    _9.FragColor = vec4(gl_SubgroupGtMask).x;
    _9.FragColor = vec4(gl_SubgroupLeMask).x;
    _9.FragColor = vec4(gl_SubgroupLtMask).x;
    vec4 broadcasted = subgroupBroadcast(vec4(10.0), 8u);
    vec3 first = subgroupBroadcastFirst(vec3(20.0));
    uvec4 ballot_value = subgroupBallot(true);
    bool inverse_ballot_value = subgroupInverseBallot(ballot_value);
    bool bit_extracted = subgroupBallotBitExtract(uvec4(10u), 8u);
    uint bit_count = subgroupBallotBitCount(ballot_value);
    uint inclusive_bit_count = subgroupBallotInclusiveBitCount(ballot_value);
    uint exclusive_bit_count = subgroupBallotExclusiveBitCount(ballot_value);
    uint lsb = subgroupBallotFindLSB(ballot_value);
    uint msb = subgroupBallotFindMSB(ballot_value);
    bool has_all = subgroupAll(true);
    bool has_any = subgroupAny(true);
    bool has_equal_bool = subgroupAllEqual(true);
    bool has_equal_T = subgroupAllEqual(uvec3(5u));
}

