1; SPIR-V 2; Version: 1.0 3; Generator: Khronos Glslang Reference Front End; 1 4; Bound: 30 5; Schema: 0 6 OpCapability Shader 7 %1 = OpExtInstImport "GLSL.std.450" 8 OpMemoryModel Logical GLSL450 9 OpEntryPoint GLCompute %func "main" 10 OpExecutionMode %func LocalSize 1 1 1 11 OpSource ESSL 310 12 OpSourceExtension "GL_GOOGLE_cpp_style_line_directive" 13 OpSourceExtension "GL_GOOGLE_include_directive" 14 OpMemberDecorate %input_struct 0 Offset 0 15 OpMemberDecorate %input_struct 1 Offset 16 16 OpMemberDecorate %output_struct 0 Offset 0 17 OpMemberDecorate %output_struct 1 Offset 16 18 OpDecorate %input_struct BufferBlock 19 OpDecorate %inputs DescriptorSet 0 20 OpDecorate %inputs Binding 0 21 OpDecorate %inputs Restrict 22 OpDecorate %output_struct BufferBlock 23 OpDecorate %outputs DescriptorSet 0 24 OpDecorate %outputs Binding 1 25 OpDecorate %outputs Restrict 26 27 %void = OpTypeVoid 28 %main_func = OpTypeFunction %void 29 30 %uint = OpTypeInt 32 0 31 %uvec4 = OpTypeVector %uint 4 32 33 %int = OpTypeInt 32 1 34 %ivec4 = OpTypeVector %int 4 35 36 %ivec4_ptr = OpTypePointer Uniform %ivec4 37 %uvec4_ptr = OpTypePointer Uniform %uvec4 38 39 %zero = OpConstant %int 0 40 %one = OpConstant %int 1 41 42 %input_struct = OpTypeStruct %ivec4 %uvec4 43 %input_struct_ptr = OpTypePointer Uniform %input_struct 44 %inputs = OpVariable %input_struct_ptr Uniform 45 %output_struct = OpTypeStruct %uvec4 %ivec4 46 %output_struct_ptr = OpTypePointer Uniform %output_struct 47 %outputs = OpVariable %output_struct_ptr Uniform 48 49 %func = OpFunction %void None %main_func 50 %block = OpLabel 51 52 %input1_ptr = OpAccessChain %ivec4_ptr %inputs %zero 53 %input0_ptr = OpAccessChain %uvec4_ptr %inputs %one 54 %input1 = OpLoad %ivec4 %input1_ptr 55 %input0 = OpLoad %uvec4 %input0_ptr 56 57 %output_ptr_uvec4 = OpAccessChain %uvec4_ptr %outputs %zero 58 %output_ptr_ivec4 = OpAccessChain %ivec4_ptr %outputs %one 59 60; Test all variants of IAdd 61 %result_iadd_0 = OpIAdd %uvec4 %input0 %input1 62 %result_iadd_1 = OpIAdd %uvec4 %input1 %input0 63 %result_iadd_2 = OpIAdd %uvec4 %input0 %input0 64 %result_iadd_3 = OpIAdd %uvec4 %input1 %input1 65 %result_iadd_4 = OpIAdd %ivec4 %input0 %input0 66 %result_iadd_5 = OpIAdd %ivec4 %input1 %input1 67 %result_iadd_6 = OpIAdd %ivec4 %input0 %input1 68 %result_iadd_7 = OpIAdd %ivec4 %input1 %input0 69 OpStore %output_ptr_uvec4 %result_iadd_0 70 OpStore %output_ptr_uvec4 %result_iadd_1 71 OpStore %output_ptr_uvec4 %result_iadd_2 72 OpStore %output_ptr_uvec4 %result_iadd_3 73 OpStore %output_ptr_ivec4 %result_iadd_4 74 OpStore %output_ptr_ivec4 %result_iadd_5 75 OpStore %output_ptr_ivec4 %result_iadd_6 76 OpStore %output_ptr_ivec4 %result_iadd_7 77 78 OpReturn 79 OpFunctionEnd 80