1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 35
5; Schema: 0
6               OpCapability Shader
7          %1 = OpExtInstImport "GLSL.std.450"
8               OpMemoryModel Logical GLSL450
9               OpEntryPoint GLCompute %main "main"
10               OpExecutionMode %main LocalSize 1 1 1
11               OpSource GLSL 450
12               OpName %main "main"
13               OpName %SSBO "SSBO"
14               OpMemberName %SSBO 0 "u"
15               OpMemberName %SSBO 1 "i"
16               OpMemberDecorate %SSBO 0 Offset 0
17               OpMemberDecorate %SSBO 1 Offset 16
18               OpDecorate %SSBO BufferBlock
19               OpDecorate %_ DescriptorSet 0
20               OpDecorate %_ Binding 0
21       %void = OpTypeVoid
22          %3 = OpTypeFunction %void
23        %int = OpTypeInt 32 1
24      %ivec4 = OpTypeVector %int 4
25       %uint = OpTypeInt 32 0
26      %uvec4 = OpTypeVector %uint 4
27       %SSBO = OpTypeStruct %uvec4 %ivec4
28%_ptr_Uniform_SSBO = OpTypePointer Uniform %SSBO
29          %_ = OpVariable %_ptr_Uniform_SSBO Uniform
30      %int_0 = OpConstant %int 0
31%_ptr_Uniform_uvec4 = OpTypePointer Uniform %uvec4
32      %int_1 = OpConstant %int 1
33%_ptr_Uniform_ivec4 = OpTypePointer Uniform %ivec4
34       %main = OpFunction %void None %3
35          %5 = OpLabel
36         %uptr = OpAccessChain %_ptr_Uniform_uvec4 %_ %int_0
37         %iptr = OpAccessChain %_ptr_Uniform_ivec4 %_ %int_1
38         %uvalue = OpLoad %uvec4 %uptr
39         %ivalue = OpLoad %ivec4 %iptr
40
41         %lsb_uint_to_uint = OpExtInst %uvec4 %1 FindILsb %uvalue
42         %lsb_uint_to_int = OpExtInst %ivec4 %1 FindILsb %uvalue
43         %lsb_int_to_uint = OpExtInst %uvec4 %1 FindILsb %ivalue
44         %lsb_int_to_int = OpExtInst %ivec4 %1 FindILsb %ivalue
45
46         %umsb_uint_to_uint = OpExtInst %uvec4 %1 FindUMsb %uvalue
47         %umsb_uint_to_int = OpExtInst %ivec4 %1 FindUMsb %uvalue
48         %umsb_int_to_uint = OpExtInst %uvec4 %1 FindUMsb %ivalue
49         %umsb_int_to_int = OpExtInst %ivec4 %1 FindUMsb %ivalue
50
51         %smsb_uint_to_uint = OpExtInst %uvec4 %1 FindSMsb %uvalue
52         %smsb_uint_to_int = OpExtInst %ivec4 %1 FindSMsb %uvalue
53         %smsb_int_to_uint = OpExtInst %uvec4 %1 FindSMsb %ivalue
54         %smsb_int_to_int = OpExtInst %ivec4 %1 FindSMsb %ivalue
55
56	OpStore %uptr %lsb_uint_to_uint
57	OpStore %iptr %lsb_uint_to_int
58	OpStore %uptr %lsb_int_to_uint
59	OpStore %iptr %lsb_int_to_int
60
61	OpStore %uptr %umsb_uint_to_uint
62	OpStore %iptr %umsb_uint_to_int
63	OpStore %uptr %umsb_int_to_uint
64	OpStore %iptr %umsb_int_to_int
65
66	OpStore %uptr %smsb_uint_to_uint
67	OpStore %iptr %smsb_uint_to_int
68	OpStore %uptr %smsb_int_to_uint
69	OpStore %iptr %smsb_int_to_int
70
71               OpReturn
72               OpFunctionEnd
73