#version 310 es
layout(local_size_x = 1) in;

layout(binding = 0, std430) buffer SSBO
{
	vec4 data;
	int index;
};

void main()
{
	// Tests defer-parens behavior where a binary expression is OpCompositeExtracted chained together
	// with an OpCompositeConstruct optimization.
	vec4 d = data;
	data = vec4(d.x, d.yz + 10.0, d.w);

	// Verify binary ops.
	data = d + d + d;

	// Verify swizzles.
	data = (d.yz + 10.0).xxyy;

	// OpCompositeExtract
	float t = (d.yz + 10.0).y;
	data = vec4(t);

	// OpVectorExtractDynamic
	t = (d.zw + 10.0)[index];
	data = vec4(t);
}
