xref: /aosp_15_r20/external/skia/tests/sksl/shared/OperatorsES2.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               OpMemberName %_UniformBuffer 2 "unknownInput"
11               OpName %_entrypoint_v "_entrypoint_v"
12               OpName %main "main"
13               OpName %x "x"
14               OpName %y "y"
15               OpName %z "z"
16               OpName %b "b"
17               OpName %c "c"
18               OpName %d "d"
19               OpName %e "e"
20               OpName %f "f"
21               OpDecorate %sk_FragColor RelaxedPrecision
22               OpDecorate %sk_FragColor Location 0
23               OpDecorate %sk_FragColor Index 0
24               OpMemberDecorate %_UniformBuffer 0 Offset 0
25               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
26               OpMemberDecorate %_UniformBuffer 1 Offset 16
27               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
28               OpMemberDecorate %_UniformBuffer 2 Offset 32
29               OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision
30               OpDecorate %_UniformBuffer Block
31               OpDecorate %7 Binding 0
32               OpDecorate %7 DescriptorSet 0
33               OpDecorate %59 RelaxedPrecision
34               OpDecorate %68 RelaxedPrecision
35               OpDecorate %113 RelaxedPrecision
36               OpDecorate %115 RelaxedPrecision
37               OpDecorate %116 RelaxedPrecision
38      %float = OpTypeFloat 32
39    %v4float = OpTypeVector %float 4
40%_ptr_Output_v4float = OpTypePointer Output %v4float
41%sk_FragColor = OpVariable %_ptr_Output_v4float Output
42%_UniformBuffer = OpTypeStruct %v4float %v4float %float
43%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
44          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
45       %void = OpTypeVoid
46         %12 = OpTypeFunction %void
47    %float_0 = OpConstant %float 0
48    %v2float = OpTypeVector %float 2
49         %16 = OpConstantComposite %v2float %float_0 %float_0
50%_ptr_Function_v2float = OpTypePointer Function %v2float
51         %20 = OpTypeFunction %v4float %_ptr_Function_v2float
52%_ptr_Function_float = OpTypePointer Function %float
53    %float_1 = OpConstant %float 1
54    %float_2 = OpConstant %float 2
55        %int = OpTypeInt 32 1
56%_ptr_Function_int = OpTypePointer Function %int
57      %int_3 = OpConstant %int 3
58      %int_2 = OpConstant %int 2
59      %int_4 = OpConstant %int 4
60       %bool = OpTypeBool
61%_ptr_Function_bool = OpTypePointer Function %bool
62       %true = OpConstantTrue %bool
63    %float_4 = OpConstant %float 4
64      %false = OpConstantFalse %bool
65%_ptr_Uniform_float = OpTypePointer Uniform %float
66   %float_12 = OpConstant %float 12
67%float_0_100000001 = OpConstant %float 0.100000001
68    %float_6 = OpConstant %float 6
69      %int_1 = OpConstant %int 1
70      %int_6 = OpConstant %int 6
71%_ptr_Function_v4float = OpTypePointer Function %v4float
72%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
73      %int_0 = OpConstant %int 0
74%_entrypoint_v = OpFunction %void None %12
75         %13 = OpLabel
76         %17 = OpVariable %_ptr_Function_v2float Function
77               OpStore %17 %16
78         %19 = OpFunctionCall %v4float %main %17
79               OpStore %sk_FragColor %19
80               OpReturn
81               OpFunctionEnd
82       %main = OpFunction %v4float None %20
83         %21 = OpFunctionParameter %_ptr_Function_v2float
84         %22 = OpLabel
85          %x = OpVariable %_ptr_Function_float Function
86          %y = OpVariable %_ptr_Function_float Function
87          %z = OpVariable %_ptr_Function_int Function
88          %b = OpVariable %_ptr_Function_bool Function
89          %c = OpVariable %_ptr_Function_bool Function
90          %d = OpVariable %_ptr_Function_bool Function
91          %e = OpVariable %_ptr_Function_bool Function
92          %f = OpVariable %_ptr_Function_bool Function
93        %105 = OpVariable %_ptr_Function_v4float Function
94               OpStore %x %float_1
95               OpStore %y %float_2
96               OpStore %z %int_3
97         %32 = OpFSub %float %float_1 %float_1
98         %33 = OpFMul %float %float_2 %float_1
99         %34 = OpFMul %float %33 %float_1
100         %35 = OpFSub %float %float_2 %float_1
101         %36 = OpFMul %float %34 %35
102         %37 = OpFAdd %float %32 %36
103               OpStore %x %37
104         %38 = OpFDiv %float %37 %float_2
105         %39 = OpFDiv %float %38 %37
106               OpStore %y %39
107         %41 = OpSDiv %int %int_3 %int_2
108         %42 = OpIMul %int %41 %int_3
109         %44 = OpIAdd %int %42 %int_4
110         %45 = OpISub %int %44 %int_2
111               OpStore %z %45
112         %51 = OpFOrdGreaterThan %bool %37 %float_4
113         %52 = OpFOrdLessThan %bool %37 %float_2
114         %53 = OpLogicalEqual %bool %51 %52
115               OpSelectionMerge %55 None
116               OpBranchConditional %53 %55 %54
117         %54 = OpLabel
118         %57 = OpAccessChain %_ptr_Uniform_float %7 %int_2
119         %59 = OpLoad %float %57
120         %60 = OpFOrdGreaterThanEqual %bool %float_2 %59
121               OpSelectionMerge %62 None
122               OpBranchConditional %60 %61 %62
123         %61 = OpLabel
124         %63 = OpFOrdLessThanEqual %bool %39 %37
125               OpBranch %62
126         %62 = OpLabel
127         %64 = OpPhi %bool %false %54 %63 %61
128               OpBranch %55
129         %55 = OpLabel
130         %65 = OpPhi %bool %true %22 %64 %62
131               OpStore %b %65
132         %67 = OpAccessChain %_ptr_Uniform_float %7 %int_2
133         %68 = OpLoad %float %67
134         %69 = OpFOrdGreaterThan %bool %68 %float_2
135               OpStore %c %69
136         %71 = OpLogicalNotEqual %bool %65 %69
137               OpStore %d %71
138               OpSelectionMerge %74 None
139               OpBranchConditional %65 %73 %74
140         %73 = OpLabel
141               OpBranch %74
142         %74 = OpLabel
143         %75 = OpPhi %bool %false %55 %69 %73
144               OpStore %e %75
145               OpSelectionMerge %78 None
146               OpBranchConditional %65 %78 %77
147         %77 = OpLabel
148               OpBranch %78
149         %78 = OpLabel
150         %79 = OpPhi %bool %true %74 %69 %77
151               OpStore %f %79
152         %81 = OpFAdd %float %37 %float_12
153               OpStore %x %81
154         %82 = OpFSub %float %81 %float_12
155               OpStore %x %82
156         %84 = OpFMul %float %39 %float_0_100000001
157               OpStore %y %84
158         %85 = OpFMul %float %82 %84
159               OpStore %x %85
160               OpStore %x %float_6
161         %87 = OpSelect %float %65 %float_1 %float_0
162         %88 = OpSelect %float %69 %float_1 %float_0
163         %89 = OpFMul %float %87 %88
164         %90 = OpSelect %float %71 %float_1 %float_0
165         %91 = OpFMul %float %89 %90
166         %92 = OpSelect %float %75 %float_1 %float_0
167         %93 = OpFMul %float %91 %92
168         %94 = OpSelect %float %79 %float_1 %float_0
169         %95 = OpFMul %float %93 %94
170               OpStore %y %95
171               OpStore %y %float_6
172         %97 = OpISub %int %45 %int_1
173               OpStore %z %97
174               OpStore %z %int_6
175               OpSelectionMerge %100 None
176               OpBranchConditional %true %99 %100
177         %99 = OpLabel
178               OpBranch %100
179        %100 = OpLabel
180        %101 = OpPhi %bool %false %78 %true %99
181               OpSelectionMerge %103 None
182               OpBranchConditional %101 %102 %103
183        %102 = OpLabel
184               OpBranch %103
185        %103 = OpLabel
186        %104 = OpPhi %bool %false %100 %true %102
187               OpSelectionMerge %109 None
188               OpBranchConditional %104 %107 %108
189        %107 = OpLabel
190        %110 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
191        %113 = OpLoad %v4float %110
192               OpStore %105 %113
193               OpBranch %109
194        %108 = OpLabel
195        %114 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
196        %115 = OpLoad %v4float %114
197               OpStore %105 %115
198               OpBranch %109
199        %109 = OpLabel
200        %116 = OpLoad %v4float %105
201               OpReturnValue %116
202               OpFunctionEnd
203