xref: /aosp_15_r20/external/skia/tests/sksl/shared/Functions.asm.frag (revision c8dee2aa9b3f27cf6c858bd81872bdeb2c07ed17)
1               OpCapability Shader
2          %1 = OpExtInstImport "GLSL.std.450"
3               OpMemoryModel Logical GLSL450
4               OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor
5               OpExecutionMode %_entrypoint_v OriginUpperLeft
6               OpName %sk_FragColor "sk_FragColor"
7               OpName %_UniformBuffer "_UniformBuffer"
8               OpMemberName %_UniformBuffer 0 "colorGreen"
9               OpMemberName %_UniformBuffer 1 "colorRed"
10               OpName %_entrypoint_v "_entrypoint_v"
11               OpName %foo_ff2 "foo_ff2"
12               OpName %bar_vf "bar_vf"
13               OpName %y "y"
14               OpName %main "main"
15               OpName %x "x"
16               OpDecorate %sk_FragColor RelaxedPrecision
17               OpDecorate %sk_FragColor Location 0
18               OpDecorate %sk_FragColor Index 0
19               OpMemberDecorate %_UniformBuffer 0 Offset 0
20               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
21               OpMemberDecorate %_UniformBuffer 1 Offset 16
22               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
23               OpDecorate %_UniformBuffer Block
24               OpDecorate %9 Binding 0
25               OpDecorate %9 DescriptorSet 0
26               OpDecorate %_arr_float_int_2 ArrayStride 16
27               OpDecorate %72 RelaxedPrecision
28               OpDecorate %74 RelaxedPrecision
29               OpDecorate %75 RelaxedPrecision
30      %float = OpTypeFloat 32
31    %v4float = OpTypeVector %float 4
32%_ptr_Output_v4float = OpTypePointer Output %v4float
33%sk_FragColor = OpVariable %_ptr_Output_v4float Output
34%_UniformBuffer = OpTypeStruct %v4float %v4float
35%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
36          %9 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
37       %void = OpTypeVoid
38         %14 = OpTypeFunction %void
39    %float_0 = OpConstant %float 0
40    %v2float = OpTypeVector %float 2
41         %18 = OpConstantComposite %v2float %float_0 %float_0
42%_ptr_Function_v2float = OpTypePointer Function %v2float
43         %22 = OpTypeFunction %float %_ptr_Function_v2float
44%_ptr_Function_float = OpTypePointer Function %float
45         %31 = OpTypeFunction %void %_ptr_Function_float
46        %int = OpTypeInt 32 1
47      %int_2 = OpConstant %int 2
48%_arr_float_int_2 = OpTypeArray %float %int_2
49%_ptr_Function__arr_float_int_2 = OpTypePointer Function %_arr_float_int_2
50      %int_0 = OpConstant %int 0
51    %float_2 = OpConstant %float 2
52      %int_1 = OpConstant %int 1
53         %54 = OpTypeFunction %v4float %_ptr_Function_v2float
54   %float_10 = OpConstant %float 10
55  %float_200 = OpConstant %float 200
56       %bool = OpTypeBool
57%_ptr_Function_v4float = OpTypePointer Function %v4float
58%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
59%_entrypoint_v = OpFunction %void None %14
60         %15 = OpLabel
61         %19 = OpVariable %_ptr_Function_v2float Function
62               OpStore %19 %18
63         %21 = OpFunctionCall %v4float %main %19
64               OpStore %sk_FragColor %21
65               OpReturn
66               OpFunctionEnd
67    %foo_ff2 = OpFunction %float None %22
68         %23 = OpFunctionParameter %_ptr_Function_v2float
69         %24 = OpLabel
70         %25 = OpLoad %v2float %23
71         %26 = OpCompositeExtract %float %25 0
72         %27 = OpLoad %v2float %23
73         %28 = OpCompositeExtract %float %27 1
74         %29 = OpFMul %float %26 %28
75               OpReturnValue %29
76               OpFunctionEnd
77     %bar_vf = OpFunction %void None %31
78         %32 = OpFunctionParameter %_ptr_Function_float
79         %33 = OpLabel
80          %y = OpVariable %_ptr_Function__arr_float_int_2 Function
81         %52 = OpVariable %_ptr_Function_v2float Function
82         %39 = OpLoad %float %32
83         %41 = OpAccessChain %_ptr_Function_float %y %int_0
84               OpStore %41 %39
85         %42 = OpLoad %float %32
86         %44 = OpFMul %float %42 %float_2
87         %46 = OpAccessChain %_ptr_Function_float %y %int_1
88               OpStore %46 %44
89         %47 = OpAccessChain %_ptr_Function_float %y %int_0
90         %48 = OpLoad %float %47
91         %49 = OpAccessChain %_ptr_Function_float %y %int_1
92         %50 = OpLoad %float %49
93         %51 = OpCompositeConstruct %v2float %48 %50
94               OpStore %52 %51
95         %53 = OpFunctionCall %float %foo_ff2 %52
96               OpStore %32 %53
97               OpReturn
98               OpFunctionEnd
99       %main = OpFunction %v4float None %54
100         %55 = OpFunctionParameter %_ptr_Function_v2float
101         %56 = OpLabel
102          %x = OpVariable %_ptr_Function_float Function
103         %59 = OpVariable %_ptr_Function_float Function
104         %65 = OpVariable %_ptr_Function_v4float Function
105               OpStore %x %float_10
106               OpStore %59 %float_10
107         %60 = OpFunctionCall %void %bar_vf %59
108         %61 = OpLoad %float %59
109               OpStore %x %61
110         %63 = OpFOrdEqual %bool %61 %float_200
111               OpSelectionMerge %69 None
112               OpBranchConditional %63 %67 %68
113         %67 = OpLabel
114         %70 = OpAccessChain %_ptr_Uniform_v4float %9 %int_0
115         %72 = OpLoad %v4float %70
116               OpStore %65 %72
117               OpBranch %69
118         %68 = OpLabel
119         %73 = OpAccessChain %_ptr_Uniform_v4float %9 %int_1
120         %74 = OpLoad %v4float %73
121               OpStore %65 %74
122               OpBranch %69
123         %69 = OpLabel
124         %75 = OpLoad %v4float %65
125               OpReturnValue %75
126               OpFunctionEnd
127