SPIRV-Cross/reference/shaders-no-opt/asm/comp/temorary-access-terminator.vk.nocompat.asm.comp.vk
Hans-Kristian Arntzen cb613eb675 Handle value access in terminators.
Fixes case where value is created inside loop body and consumed by a
return outside it.
2021-07-29 15:27:52 +02:00

37 lines
875 B
Plaintext

#version 450
#extension GL_KHR_shader_subgroup_ballot : require
layout(local_size_x = 64, local_size_y = 1, local_size_z = 1) in;
layout(set = 0, binding = 0) uniform usamplerBuffer _4;
layout(set = 0, binding = 0, r32ui) uniform writeonly uimageBuffer _5;
uvec4 WaveMatch(uint _45)
{
uvec4 _52;
for (;;)
{
bool _51 = _45 == subgroupBroadcastFirst(_45);
_52 = subgroupBallot(_51);
if (_51)
{
break;
}
else
{
continue;
}
}
return _52;
}
void main()
{
uvec4 _32 = WaveMatch(texelFetch(_4, int(gl_GlobalInvocationID.x)).x);
uint _37 = gl_GlobalInvocationID.x * 4u;
imageStore(_5, int(_37), uvec4(_32.x));
imageStore(_5, int(_37 + 1u), uvec4(_32.y));
imageStore(_5, int(_37 + 2u), uvec4(_32.z));
imageStore(_5, int(_37 + 3u), uvec4(_32.w));
}