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 %output_struct BufferBlock 22 OpDecorate %outputs DescriptorSet 0 23 OpDecorate %outputs Binding 1 24 25 %void = OpTypeVoid 26 %main_func = OpTypeFunction %void 27 28 %uint = OpTypeInt 32 0 29 %uvec4 = OpTypeVector %uint 4 30 31 %int = OpTypeInt 32 1 32 %ivec4 = OpTypeVector %int 4 33 34 %ivec4_ptr = OpTypePointer Uniform %ivec4 35 %uvec4_ptr = OpTypePointer Uniform %uvec4 36 37 %zero = OpConstant %int 0 38 %one = OpConstant %int 1 39 40 %input_struct = OpTypeStruct %ivec4 %uvec4 41 %input_struct_ptr = OpTypePointer Uniform %input_struct 42 %inputs = OpVariable %input_struct_ptr Uniform 43 %output_struct = OpTypeStruct %uvec4 %ivec4 44 %output_struct_ptr = OpTypePointer Uniform %output_struct 45 %outputs = OpVariable %output_struct_ptr Uniform 46 47 %func = OpFunction %void None %main_func 48 %block = OpLabel 49 50 %input1_ptr = OpAccessChain %ivec4_ptr %inputs %zero 51 %input0_ptr = OpAccessChain %uvec4_ptr %inputs %one 52 %input1 = OpLoad %ivec4 %input1_ptr 53 %input0 = OpLoad %uvec4 %input0_ptr 54 55 %output_ptr_uvec4 = OpAccessChain %uvec4_ptr %outputs %zero 56 %output_ptr_ivec4 = OpAccessChain %ivec4_ptr %outputs %one 57 58; Test all variants of ShiftRightLogical 59 %result_iadd_0 = OpShiftRightLogical %uvec4 %input0 %input1 60 %result_iadd_1 = OpShiftRightLogical %uvec4 %input1 %input0 61 %result_iadd_2 = OpShiftRightLogical %uvec4 %input0 %input0 62 %result_iadd_3 = OpShiftRightLogical %uvec4 %input1 %input1 63 %result_iadd_4 = OpShiftRightLogical %ivec4 %input0 %input0 64 %result_iadd_5 = OpShiftRightLogical %ivec4 %input1 %input1 65 %result_iadd_6 = OpShiftRightLogical %ivec4 %input0 %input1 66 %result_iadd_7 = OpShiftRightLogical %ivec4 %input1 %input0 67 OpStore %output_ptr_uvec4 %result_iadd_0 68 OpStore %output_ptr_uvec4 %result_iadd_1 69 OpStore %output_ptr_uvec4 %result_iadd_2 70 OpStore %output_ptr_uvec4 %result_iadd_3 71 OpStore %output_ptr_ivec4 %result_iadd_4 72 OpStore %output_ptr_ivec4 %result_iadd_5 73 OpStore %output_ptr_ivec4 %result_iadd_6 74 OpStore %output_ptr_ivec4 %result_iadd_7 75 76 OpReturn 77 OpFunctionEnd 78