1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 7
4; Bound: 26
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 "ints"
15               OpMemberName %SSBO 1 "uints"
16               OpName %_ ""
17               OpMemberDecorate %SSBO 0 Offset 0
18               OpMemberDecorate %SSBO 1 Offset 16
19               OpDecorate %SSBO BufferBlock
20               OpDecorate %_ DescriptorSet 0
21               OpDecorate %_ Binding 0
22       %void = OpTypeVoid
23          %3 = OpTypeFunction %void
24        %int = OpTypeInt 32 1
25      %v4int = OpTypeVector %int 4
26       %uint = OpTypeInt 32 0
27     %v4uint = OpTypeVector %uint 4
28       %SSBO = OpTypeStruct %v4int %v4uint
29%_ptr_Uniform_SSBO = OpTypePointer Uniform %SSBO
30          %_ = OpVariable %_ptr_Uniform_SSBO Uniform
31      %int_0 = OpConstant %int 0
32%_ptr_Uniform_v4int = OpTypePointer Uniform %v4int
33      %int_1 = OpConstant %int 1
34%_ptr_Uniform_v4uint = OpTypePointer Uniform %v4uint
35       %main = OpFunction %void None %3
36          %5 = OpLabel
37         %ints_ptr = OpAccessChain %_ptr_Uniform_v4int %_ %int_0
38         %uints_ptr = OpAccessChain %_ptr_Uniform_v4uint %_ %int_1
39         %ints = OpLoad %v4int %ints_ptr
40         %uints = OpLoad %v4uint %uints_ptr
41
42         %int_to_int_sabs = OpExtInst %v4int %1 SAbs %ints
43         %int_to_uint_sabs = OpExtInst %v4uint %1 SAbs %ints
44         %uint_to_int_sabs = OpExtInst %v4int %1 SAbs %uints
45         %uint_to_uint_sabs = OpExtInst %v4uint %1 SAbs %uints
46
47         %int_to_int_ssign = OpExtInst %v4int %1 SSign %ints
48         %int_to_uint_ssign = OpExtInst %v4uint %1 SSign %ints
49         %uint_to_int_ssign = OpExtInst %v4int %1 SSign %uints
50         %uint_to_uint_ssign = OpExtInst %v4uint %1 SSign %uints
51
52         %int_to_int_smsb = OpExtInst %v4int %1 FindSMsb %uints
53         %int_to_uint_smsb = OpExtInst %v4uint %1 FindSMsb %uints
54         %uint_to_int_umsb = OpExtInst %v4int %1 FindUMsb %ints
55         %uint_to_uint_umsb = OpExtInst %v4uint %1 FindUMsb %ints
56
57         %int_to_int_smin = OpExtInst %v4int %1 SMin %ints %ints
58         %int_to_uint_smin = OpExtInst %v4uint %1 SMin %ints %uints
59         %uint_to_int_smin = OpExtInst %v4int %1 SMin %uints %uints
60         %uint_to_uint_smin = OpExtInst %v4uint %1 SMin %uints %ints
61
62         %int_to_int_umin = OpExtInst %v4int %1 UMin %ints %uints
63         %int_to_uint_umin = OpExtInst %v4uint %1 UMin %ints %uints
64         %uint_to_int_umin = OpExtInst %v4int %1 UMin %uints %ints
65         %uint_to_uint_umin = OpExtInst %v4uint %1 UMin %uints %ints
66
67         %int_to_int_smax = OpExtInst %v4int %1 SMax %ints %ints
68         %int_to_uint_smax = OpExtInst %v4uint %1 SMax %ints %ints
69         %uint_to_int_smax = OpExtInst %v4int %1 SMax %uints %ints
70         %uint_to_uint_smax = OpExtInst %v4uint %1 SMax %uints %ints
71
72         %int_to_int_umax = OpExtInst %v4int %1 UMax %ints %uints
73         %int_to_uint_umax = OpExtInst %v4uint %1 UMax %ints %ints
74         %uint_to_int_umax = OpExtInst %v4int %1 UMax %uints %ints
75         %uint_to_uint_umax = OpExtInst %v4uint %1 UMax %uints %ints
76
77         %int_to_int_sclamp = OpExtInst %v4int %1 SClamp %uints %uints %uints
78         %int_to_uint_sclamp = OpExtInst %v4uint %1 SClamp %uints %uints %uints
79         %uint_to_int_uclamp = OpExtInst %v4int %1 UClamp %ints %ints %ints
80         %uint_to_uint_uclamp = OpExtInst %v4uint %1 UClamp %ints %ints %ints
81
82               OpStore %ints_ptr %int_to_int_sabs
83               OpStore %uints_ptr %int_to_uint_sabs
84               OpStore %ints_ptr %uint_to_int_sabs
85               OpStore %uints_ptr %uint_to_uint_sabs
86
87               OpStore %ints_ptr %int_to_int_ssign
88               OpStore %uints_ptr %int_to_uint_ssign
89               OpStore %ints_ptr %uint_to_int_ssign
90               OpStore %uints_ptr %uint_to_uint_ssign
91
92               OpStore %ints_ptr %int_to_int_smsb
93               OpStore %uints_ptr %int_to_uint_smsb
94               OpStore %ints_ptr %uint_to_int_umsb
95               OpStore %uints_ptr %uint_to_uint_umsb
96
97               OpStore %ints_ptr %int_to_int_smin
98               OpStore %uints_ptr %int_to_uint_smin
99               OpStore %ints_ptr %uint_to_int_smin
100               OpStore %uints_ptr %uint_to_uint_smin
101
102               OpStore %ints_ptr %int_to_int_umin
103               OpStore %uints_ptr %int_to_uint_umin
104               OpStore %ints_ptr %uint_to_int_umin
105               OpStore %uints_ptr %uint_to_uint_umin
106
107               OpStore %ints_ptr %int_to_int_smax
108               OpStore %uints_ptr %int_to_uint_smax
109               OpStore %ints_ptr %uint_to_int_smax
110               OpStore %uints_ptr %uint_to_uint_smax
111
112               OpStore %ints_ptr %int_to_int_umax
113               OpStore %uints_ptr %int_to_uint_umax
114               OpStore %ints_ptr %uint_to_int_umax
115               OpStore %uints_ptr %uint_to_uint_umax
116
117               OpStore %ints_ptr %int_to_int_sclamp
118               OpStore %uints_ptr %int_to_uint_sclamp
119               OpStore %ints_ptr %uint_to_int_uclamp
120               OpStore %uints_ptr %uint_to_uint_uclamp
121
122               OpReturn
123               OpFunctionEnd
124