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		  %bool = OpTypeBool
31		  %bvec4 = OpTypeVector %bool 4
32
33          %uint = OpTypeInt 32 0
34          %uvec4 = OpTypeVector %uint 4
35
36         %int = OpTypeInt 32 1
37         %ivec4 = OpTypeVector %int 4
38
39         %ivec4_ptr = OpTypePointer Uniform %ivec4
40         %uvec4_ptr = OpTypePointer Uniform %uvec4
41
42		 %zero = OpConstant %int 0
43		 %one = OpConstant %int 1
44		 %uzero = OpConstant %uint 0
45		 %uone = OpConstant %uint 1
46		 %utrue = OpConstantComposite %uvec4 %uone %uone %uone %uone
47		 %ufalse = OpConstantComposite %uvec4 %uzero %uzero %uzero %uzero
48
49         %input_struct = OpTypeStruct %ivec4 %uvec4
50         %input_struct_ptr = OpTypePointer Uniform %input_struct
51         %inputs = OpVariable %input_struct_ptr Uniform
52         %output_struct = OpTypeStruct %uvec4 %ivec4
53         %output_struct_ptr = OpTypePointer Uniform %output_struct
54         %outputs = OpVariable %output_struct_ptr Uniform
55
56          %func = OpFunction %void None %main_func
57          %block = OpLabel
58
59         %input1_ptr = OpAccessChain %ivec4_ptr %inputs %zero
60         %input0_ptr = OpAccessChain %uvec4_ptr %inputs %one
61         %input1 = OpLoad %ivec4 %input1_ptr
62         %input0 = OpLoad %uvec4 %input0_ptr
63
64         %output_ptr_uvec4 = OpAccessChain %uvec4_ptr %outputs %zero
65
66         %result_slt = OpSLessThan %bvec4 %input0 %input1
67         %result_sle = OpSLessThanEqual %bvec4 %input0 %input1
68         %result_ult = OpULessThan %bvec4 %input0 %input1
69         %result_ule = OpULessThanEqual %bvec4 %input0 %input1
70         %result_sgt = OpSGreaterThan %bvec4 %input0 %input1
71         %result_sge = OpSGreaterThanEqual %bvec4 %input0 %input1
72         %result_ugt = OpUGreaterThan %bvec4 %input0 %input1
73         %result_uge = OpUGreaterThanEqual %bvec4 %input0 %input1
74
75		 %int_slt = OpSelect %uvec4 %result_slt %utrue %ufalse
76		 OpStore %output_ptr_uvec4 %int_slt
77
78		 %int_sle = OpSelect %uvec4 %result_sle %utrue %ufalse
79		 OpStore %output_ptr_uvec4 %int_sle
80
81		 %int_ult = OpSelect %uvec4 %result_ult %utrue %ufalse
82		 OpStore %output_ptr_uvec4 %int_ult
83
84		 %int_ule = OpSelect %uvec4 %result_ule %utrue %ufalse
85		 OpStore %output_ptr_uvec4 %int_ule
86
87		 %int_sgt = OpSelect %uvec4 %result_sgt %utrue %ufalse
88		 OpStore %output_ptr_uvec4 %int_sgt
89
90		 %int_sge = OpSelect %uvec4 %result_sge %utrue %ufalse
91		 OpStore %output_ptr_uvec4 %int_sge
92
93		 %int_ugt = OpSelect %uvec4 %result_ugt %utrue %ufalse
94		 OpStore %output_ptr_uvec4 %int_ugt
95
96		 %int_uge = OpSelect %uvec4 %result_uge %utrue %ufalse
97		 OpStore %output_ptr_uvec4 %int_uge
98
99
100               OpReturn
101               OpFunctionEnd
102