; 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 Fragment %func_alt "main2" %frag_in %frag_out 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 %inputs Restrict OpDecorate %output_struct BufferBlock OpDecorate %outputs DescriptorSet 0 OpDecorate %outputs Binding 1 OpDecorate %outputs Restrict OpDecorate %frag_in Location 0 OpDecorate %frag_out Location 0 %void = OpTypeVoid %main_func = OpTypeFunction %void %uint = OpTypeInt 32 0 %uvec4 = OpTypeVector %uint 4 %int = OpTypeInt 32 1 %ivec4 = OpTypeVector %int 4 %ivec4_ptr = OpTypePointer Uniform %ivec4 %uvec4_ptr = OpTypePointer Uniform %uvec4 %float = OpTypeFloat 32 %vec4 = OpTypeVector %float 4 %vec4_input_ptr = OpTypePointer Input %vec4 %vec4_output_ptr = OpTypePointer Output %vec4 %zero = OpConstant %int 0 %one = OpConstant %int 1 %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 %frag_in = OpVariable %vec4_input_ptr Input %frag_out = OpVariable %vec4_output_ptr Output %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 IAdd %result_iadd_0 = OpIAdd %uvec4 %input0 %input1 %result_iadd_1 = OpIAdd %uvec4 %input1 %input0 %result_iadd_2 = OpIAdd %uvec4 %input0 %input0 %result_iadd_3 = OpIAdd %uvec4 %input1 %input1 %result_iadd_4 = OpIAdd %ivec4 %input0 %input0 %result_iadd_5 = OpIAdd %ivec4 %input1 %input1 %result_iadd_6 = OpIAdd %ivec4 %input0 %input1 %result_iadd_7 = OpIAdd %ivec4 %input1 %input0 OpStore %output_ptr_uvec4 %result_iadd_0 OpStore %output_ptr_uvec4 %result_iadd_1 OpStore %output_ptr_uvec4 %result_iadd_2 OpStore %output_ptr_uvec4 %result_iadd_3 OpStore %output_ptr_ivec4 %result_iadd_4 OpStore %output_ptr_ivec4 %result_iadd_5 OpStore %output_ptr_ivec4 %result_iadd_6 OpStore %output_ptr_ivec4 %result_iadd_7 OpReturn OpFunctionEnd %func_alt = OpFunction %void None %main_func %block_alt = OpLabel %frag_input_value = OpLoad %vec4 %frag_in OpStore %frag_out %frag_input_value OpReturn OpFunctionEnd