1; SPIR-V
2; Version: 1.0
3; Generator: Khronos Glslang Reference Front End; 8
4; Bound: 33
5; Schema: 0
6               OpCapability Shader
7               OpCapability Float16
8               OpCapability StorageBuffer16BitAccess
9               OpExtension "SPV_KHR_16bit_storage"
10          %1 = OpExtInstImport "GLSL.std.450"
11               OpMemoryModel Logical GLSL450
12               OpEntryPoint GLCompute %main "main"
13               OpExecutionMode %main LocalSize 1 1 1
14               OpSource GLSL 450
15               OpSourceExtension "GL_EXT_shader_explicit_arithmetic_types"
16               OpName %main "main"
17               OpName %SSBO "SSBO"
18               OpMemberName %SSBO 0 "a"
19               OpMemberName %SSBO 1 "b"
20               OpMemberName %SSBO 2 "c"
21               OpMemberName %SSBO 3 "d"
22               OpName %_ ""
23               OpMemberDecorate %SSBO 0 Offset 0
24               OpMemberDecorate %SSBO 1 Offset 4
25               OpMemberDecorate %SSBO 2 Offset 8
26               OpMemberDecorate %SSBO 3 Offset 12
27               OpDecorate %SSBO BufferBlock
28               OpDecorate %_ DescriptorSet 0
29               OpDecorate %_ Binding 0
30               OpDecorate %gl_WorkGroupSize BuiltIn WorkgroupSize
31       %void = OpTypeVoid
32          %3 = OpTypeFunction %void
33       %half = OpTypeFloat 16
34     %v2half = OpTypeVector %half 2
35      %float = OpTypeFloat 32
36       %SSBO = OpTypeStruct %v2half %float %float %v2half
37%_ptr_Uniform_SSBO = OpTypePointer Uniform %SSBO
38          %_ = OpVariable %_ptr_Uniform_SSBO Uniform
39        %int = OpTypeInt 32 1
40      %int_1 = OpConstant %int 1
41      %int_0 = OpConstant %int 0
42%_ptr_Uniform_v2half = OpTypePointer Uniform %v2half
43       %uint = OpTypeInt 32 0
44%_ptr_Uniform_float = OpTypePointer Uniform %float
45      %int_3 = OpConstant %int 3
46      %int_2 = OpConstant %int 2
47     %v3uint = OpTypeVector %uint 3
48     %uint_1 = OpConstant %uint 1
49%gl_WorkGroupSize = OpConstantComposite %v3uint %uint_1 %uint_1 %uint_1
50       %main = OpFunction %void None %3
51          %5 = OpLabel
52         %16 = OpAccessChain %_ptr_Uniform_v2half %_ %int_0
53         %17 = OpLoad %v2half %16
54         %20 = OpBitcast %float %17
55         %22 = OpAccessChain %_ptr_Uniform_float %_ %int_1
56               OpStore %22 %20
57         %25 = OpAccessChain %_ptr_Uniform_float %_ %int_2
58         %26 = OpLoad %float %25
59         %28 = OpBitcast %v2half %26
60         %29 = OpAccessChain %_ptr_Uniform_v2half %_ %int_3
61               OpStore %29 %28
62               OpReturn
63               OpFunctionEnd
64