SPIRV-Cross/reference/opt/shaders/asm/frag/loop-body-dominator-continue-access.asm.frag
Chip Davis 5547b25afe Interleave undef values with constants and types.
Undef values may be of struct type and may be used in constants.
Therefore, they must be interleaved with constants and types.

Fixes the rest of the Vulkan CTS test
`dEQP-VK.spirv_assembly.instruction.compute.opundef.undefined_spec_constant_composite`.

(Please excuse the churn in the reference output; it's an inevitable
result of this change.)
2022-11-20 02:08:37 -08:00

84 lines
2.2 KiB
GLSL

#version 450
#if defined(GL_EXT_control_flow_attributes)
#extension GL_EXT_control_flow_attributes : require
#define SPIRV_CROSS_FLATTEN [[flatten]]
#define SPIRV_CROSS_BRANCH [[dont_flatten]]
#define SPIRV_CROSS_UNROLL [[unroll]]
#define SPIRV_CROSS_LOOP [[dont_unroll]]
#else
#define SPIRV_CROSS_FLATTEN
#define SPIRV_CROSS_BRANCH
#define SPIRV_CROSS_UNROLL
#define SPIRV_CROSS_LOOP
#endif
int _231;
layout(binding = 0, std140) uniform Foo
{
layout(row_major) mat4 lightVP[64];
uint shadowCascadesNum;
int test;
} _11;
layout(location = 0) in vec3 fragWorld;
layout(location = 0) out int _entryPointOutput;
mat4 spvWorkaroundRowMajor(mat4 wrap) { return wrap; }
void main()
{
int _228;
do
{
bool _225;
int _229;
uint _222 = 0u;
SPIRV_CROSS_UNROLL
for (;;)
{
if (_222 < _11.shadowCascadesNum)
{
mat4 _223;
do
{
if (_11.test == 0)
{
_223 = mat4(vec4(0.5, 0.0, 0.0, 0.0), vec4(0.0, 0.5, 0.0, 0.0), vec4(0.0, 0.0, 0.5, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
break;
}
_223 = mat4(vec4(1.0, 0.0, 0.0, 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(0.0, 0.0, 1.0, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
break;
} while(false);
vec4 _170 = (_223 * spvWorkaroundRowMajor(_11.lightVP[_222])) * vec4(fragWorld, 1.0);
float _172 = _170.z;
float _179 = _170.x;
float _181 = _170.y;
if ((((_172 >= 0.0) && (_172 <= 1.0)) && (max(_179, _181) <= 1.0)) && (min(_179, _181) >= 0.0))
{
_229 = int(_222);
_225 = true;
break;
}
_222++;
continue;
}
else
{
_229 = _231;
_225 = false;
break;
}
}
if (_225)
{
_228 = _229;
break;
}
_228 = -1;
break;
} while(false);
_entryPointOutput = _228;
}