; SPIR-V ; Version: 1.0 ; Generator: Khronos Glslang Reference Front End; 1 ; Bound: 30 ; Schema: 0 OpCapability Shader %1 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint GLCompute %func "main" OpExecutionMode %func LocalSize 1 1 1 OpSource ESSL 310 OpSourceExtension "GL_GOOGLE_cpp_style_line_directive" OpSourceExtension "GL_GOOGLE_include_directive" OpMemberDecorate %input_struct 0 Offset 0 OpMemberDecorate %input_struct 1 Offset 16 OpMemberDecorate %output_struct 0 Offset 0 OpMemberDecorate %output_struct 1 Offset 16 OpDecorate %input_struct BufferBlock OpDecorate %inputs DescriptorSet 0 OpDecorate %inputs Binding 0 OpDecorate %output_struct BufferBlock OpDecorate %outputs DescriptorSet 0 OpDecorate %outputs Binding 1 %void = OpTypeVoid %main_func = OpTypeFunction %void %uint = OpTypeInt 32 0 %uvec4 = OpTypeVector %uint 4 %int = OpTypeInt 32 1 %ivec4 = OpTypeVector %int 4 %bool = OpTypeBool %bvec4 = OpTypeVector %bool 4 %ivec4_ptr = OpTypePointer Uniform %ivec4 %uvec4_ptr = OpTypePointer Uniform %uvec4 %zero = OpConstant %int 0 %one = OpConstant %int 1 %uone = OpConstant %uint 1 %uzero = OpConstant %uint 0 %uvec41 = OpConstantComposite %uvec4 %uone %uone %uone %uone %ivec41 = OpConstantComposite %ivec4 %one %one %one %one %uvec40 = OpConstantComposite %uvec4 %uzero %uzero %uzero %uzero %ivec40 = OpConstantComposite %ivec4 %zero %zero %zero %zero %input_struct = OpTypeStruct %ivec4 %uvec4 %input_struct_ptr = OpTypePointer Uniform %input_struct %inputs = OpVariable %input_struct_ptr Uniform %output_struct = OpTypeStruct %uvec4 %ivec4 %output_struct_ptr = OpTypePointer Uniform %output_struct %outputs = OpVariable %output_struct_ptr Uniform %func = OpFunction %void None %main_func %block = OpLabel %input1_ptr = OpAccessChain %ivec4_ptr %inputs %zero %input0_ptr = OpAccessChain %uvec4_ptr %inputs %one %input1 = OpLoad %ivec4 %input1_ptr %input0 = OpLoad %uvec4 %input0_ptr %output_ptr_uvec4 = OpAccessChain %uvec4_ptr %outputs %zero %output_ptr_ivec4 = OpAccessChain %ivec4_ptr %outputs %one ; Test all variants of IEqual %result_iequal0 = OpIEqual %bvec4 %input0 %input1 %result_iequal1 = OpIEqual %bvec4 %input1 %input0 %result_iequal2 = OpIEqual %bvec4 %input0 %input0 %result_iequal3 = OpIEqual %bvec4 %input1 %input1 %result_0 = OpSelect %uvec4 %result_iequal0 %uvec41 %uvec40 %result_1 = OpSelect %uvec4 %result_iequal1 %uvec41 %uvec40 %result_2 = OpSelect %uvec4 %result_iequal2 %uvec41 %uvec40 %result_3 = OpSelect %uvec4 %result_iequal3 %uvec41 %uvec40 %result_4 = OpSelect %ivec4 %result_iequal0 %ivec41 %ivec40 %result_5 = OpSelect %ivec4 %result_iequal1 %ivec41 %ivec40 %result_6 = OpSelect %ivec4 %result_iequal2 %ivec41 %ivec40 %result_7 = OpSelect %ivec4 %result_iequal3 %ivec41 %ivec40 OpStore %output_ptr_uvec4 %result_0 OpStore %output_ptr_uvec4 %result_1 OpStore %output_ptr_uvec4 %result_2 OpStore %output_ptr_uvec4 %result_3 OpStore %output_ptr_ivec4 %result_4 OpStore %output_ptr_ivec4 %result_5 OpStore %output_ptr_ivec4 %result_6 OpStore %output_ptr_ivec4 %result_7 OpReturn OpFunctionEnd