xref: /aosp_15_r20/external/skia/tests/sksl/intrinsics/Pack.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint Fragment %main "main" %sk_FragColor
5               OpExecutionMode %main OriginUpperLeft
6               OpName %sk_FragColor "sk_FragColor"
7               OpName %_UniformBuffer "_UniformBuffer"
8               OpMemberName %_UniformBuffer 0 "a"
9               OpMemberName %_UniformBuffer 1 "b"
10               OpName %main "main"
11               OpDecorate %sk_FragColor RelaxedPrecision
12               OpDecorate %sk_FragColor Location 0
13               OpDecorate %sk_FragColor Index 0
14               OpMemberDecorate %_UniformBuffer 0 Offset 0
15               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
16               OpMemberDecorate %_UniformBuffer 1 Offset 16
17               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
18               OpDecorate %_UniformBuffer Block
19               OpDecorate %7 Binding 0
20               OpDecorate %7 DescriptorSet 0
21               OpDecorate %19 RelaxedPrecision
22               OpDecorate %21 RelaxedPrecision
23               OpDecorate %26 RelaxedPrecision
24               OpDecorate %27 RelaxedPrecision
25               OpDecorate %31 RelaxedPrecision
26               OpDecorate %32 RelaxedPrecision
27               OpDecorate %38 RelaxedPrecision
28               OpDecorate %39 RelaxedPrecision
29               OpDecorate %43 RelaxedPrecision
30               OpDecorate %44 RelaxedPrecision
31      %float = OpTypeFloat 32
32    %v4float = OpTypeVector %float 4
33%_ptr_Output_v4float = OpTypePointer Output %v4float
34%sk_FragColor = OpVariable %_ptr_Output_v4float Output
35    %v2float = OpTypeVector %float 2
36%_UniformBuffer = OpTypeStruct %v2float %v4float
37%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
38          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
39       %void = OpTypeVoid
40         %12 = OpTypeFunction %void
41%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
42        %int = OpTypeInt 32 1
43      %int_0 = OpConstant %int 0
44       %uint = OpTypeInt 32 0
45%_ptr_Output_float = OpTypePointer Output %float
46%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
47      %int_1 = OpConstant %int 1
48       %main = OpFunction %void None %12
49         %13 = OpLabel
50         %15 = OpAccessChain %_ptr_Uniform_v2float %7 %int_0
51         %19 = OpLoad %v2float %15
52         %14 = OpExtInst %uint %1 PackHalf2x16 %19
53         %21 = OpConvertUToF %float %14
54         %22 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
55               OpStore %22 %21
56         %25 = OpAccessChain %_ptr_Uniform_v2float %7 %int_0
57         %26 = OpLoad %v2float %25
58         %24 = OpExtInst %uint %1 PackUnorm2x16 %26
59         %27 = OpConvertUToF %float %24
60         %28 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
61               OpStore %28 %27
62         %30 = OpAccessChain %_ptr_Uniform_v2float %7 %int_0
63         %31 = OpLoad %v2float %30
64         %29 = OpExtInst %uint %1 PackSnorm2x16 %31
65         %32 = OpConvertUToF %float %29
66         %33 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
67               OpStore %33 %32
68         %35 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
69         %38 = OpLoad %v4float %35
70         %34 = OpExtInst %uint %1 PackUnorm4x8 %38
71         %39 = OpConvertUToF %float %34
72         %40 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
73               OpStore %40 %39
74         %42 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
75         %43 = OpLoad %v4float %42
76         %41 = OpExtInst %uint %1 PackSnorm4x8 %43
77         %44 = OpConvertUToF %float %41
78         %45 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
79               OpStore %45 %44
80               OpReturn
81               OpFunctionEnd
82