xref: /aosp_15_r20/external/skia/tests/sksl/intrinsics/MaxFloat.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 "testInputs"
9               OpMemberName %_UniformBuffer 1 "colorGreen"
10               OpMemberName %_UniformBuffer 2 "colorRed"
11               OpName %_entrypoint_v "_entrypoint_v"
12               OpName %main "main"
13               OpName %expectedA "expectedA"
14               OpName %expectedB "expectedB"
15               OpDecorate %sk_FragColor RelaxedPrecision
16               OpDecorate %sk_FragColor Location 0
17               OpDecorate %sk_FragColor Index 0
18               OpMemberDecorate %_UniformBuffer 0 Offset 0
19               OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
20               OpMemberDecorate %_UniformBuffer 1 Offset 16
21               OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
22               OpMemberDecorate %_UniformBuffer 2 Offset 32
23               OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision
24               OpDecorate %_UniformBuffer Block
25               OpDecorate %7 Binding 0
26               OpDecorate %7 DescriptorSet 0
27               OpDecorate %expectedA RelaxedPrecision
28               OpDecorate %expectedB RelaxedPrecision
29               OpDecorate %39 RelaxedPrecision
30               OpDecorate %40 RelaxedPrecision
31               OpDecorate %46 RelaxedPrecision
32               OpDecorate %47 RelaxedPrecision
33               OpDecorate %49 RelaxedPrecision
34               OpDecorate %58 RelaxedPrecision
35               OpDecorate %59 RelaxedPrecision
36               OpDecorate %62 RelaxedPrecision
37               OpDecorate %71 RelaxedPrecision
38               OpDecorate %83 RelaxedPrecision
39               OpDecorate %90 RelaxedPrecision
40               OpDecorate %101 RelaxedPrecision
41               OpDecorate %102 RelaxedPrecision
42               OpDecorate %105 RelaxedPrecision
43               OpDecorate %106 RelaxedPrecision
44               OpDecorate %113 RelaxedPrecision
45               OpDecorate %114 RelaxedPrecision
46               OpDecorate %116 RelaxedPrecision
47               OpDecorate %117 RelaxedPrecision
48               OpDecorate %118 RelaxedPrecision
49               OpDecorate %126 RelaxedPrecision
50               OpDecorate %127 RelaxedPrecision
51               OpDecorate %129 RelaxedPrecision
52               OpDecorate %130 RelaxedPrecision
53               OpDecorate %131 RelaxedPrecision
54               OpDecorate %139 RelaxedPrecision
55               OpDecorate %141 RelaxedPrecision
56               OpDecorate %151 RelaxedPrecision
57               OpDecorate %158 RelaxedPrecision
58               OpDecorate %170 RelaxedPrecision
59               OpDecorate %173 RelaxedPrecision
60               OpDecorate %174 RelaxedPrecision
61      %float = OpTypeFloat 32
62    %v4float = OpTypeVector %float 4
63%_ptr_Output_v4float = OpTypePointer Output %v4float
64%sk_FragColor = OpVariable %_ptr_Output_v4float Output
65%_UniformBuffer = OpTypeStruct %v4float %v4float %v4float
66%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
67          %7 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
68       %void = OpTypeVoid
69         %12 = OpTypeFunction %void
70    %float_0 = OpConstant %float 0
71    %v2float = OpTypeVector %float 2
72         %16 = OpConstantComposite %v2float %float_0 %float_0
73%_ptr_Function_v2float = OpTypePointer Function %v2float
74         %20 = OpTypeFunction %v4float %_ptr_Function_v2float
75%_ptr_Function_v4float = OpTypePointer Function %v4float
76  %float_0_5 = OpConstant %float 0.5
77 %float_0_75 = OpConstant %float 0.75
78 %float_2_25 = OpConstant %float 2.25
79         %28 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_75 %float_2_25
80    %float_1 = OpConstant %float 1
81         %31 = OpConstantComposite %v4float %float_0 %float_1 %float_0_75 %float_2_25
82       %bool = OpTypeBool
83      %false = OpConstantFalse %bool
84%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
85        %int = OpTypeInt 32 1
86      %int_0 = OpConstant %int 0
87         %48 = OpConstantComposite %v2float %float_0_5 %float_0_5
88     %v2bool = OpTypeVector %bool 2
89    %v3float = OpTypeVector %float 3
90         %61 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
91     %v3bool = OpTypeVector %bool 3
92         %72 = OpConstantComposite %v4float %float_0_5 %float_0_5 %float_0_5 %float_0_5
93     %v4bool = OpTypeVector %bool 4
94       %true = OpConstantTrue %bool
95         %89 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_75
96      %int_1 = OpConstant %int 1
97        %150 = OpConstantComposite %v2float %float_0 %float_1
98        %157 = OpConstantComposite %v3float %float_0 %float_1 %float_0_75
99      %int_2 = OpConstant %int 2
100%_entrypoint_v = OpFunction %void None %12
101         %13 = OpLabel
102         %17 = OpVariable %_ptr_Function_v2float Function
103               OpStore %17 %16
104         %19 = OpFunctionCall %v4float %main %17
105               OpStore %sk_FragColor %19
106               OpReturn
107               OpFunctionEnd
108       %main = OpFunction %v4float None %20
109         %21 = OpFunctionParameter %_ptr_Function_v2float
110         %22 = OpLabel
111  %expectedA = OpVariable %_ptr_Function_v4float Function
112  %expectedB = OpVariable %_ptr_Function_v4float Function
113        %165 = OpVariable %_ptr_Function_v4float Function
114               OpStore %expectedA %28
115               OpStore %expectedB %31
116         %35 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
117         %39 = OpLoad %v4float %35
118         %40 = OpCompositeExtract %float %39 0
119         %34 = OpExtInst %float %1 FMax %40 %float_0_5
120         %41 = OpFOrdEqual %bool %34 %float_0_5
121               OpSelectionMerge %43 None
122               OpBranchConditional %41 %42 %43
123         %42 = OpLabel
124         %45 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
125         %46 = OpLoad %v4float %45
126         %47 = OpVectorShuffle %v2float %46 %46 0 1
127         %44 = OpExtInst %v2float %1 FMax %47 %48
128         %49 = OpVectorShuffle %v2float %28 %28 0 1
129         %50 = OpFOrdEqual %v2bool %44 %49
130         %52 = OpAll %bool %50
131               OpBranch %43
132         %43 = OpLabel
133         %53 = OpPhi %bool %false %22 %52 %42
134               OpSelectionMerge %55 None
135               OpBranchConditional %53 %54 %55
136         %54 = OpLabel
137         %57 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
138         %58 = OpLoad %v4float %57
139         %59 = OpVectorShuffle %v3float %58 %58 0 1 2
140         %56 = OpExtInst %v3float %1 FMax %59 %61
141         %62 = OpVectorShuffle %v3float %28 %28 0 1 2
142         %63 = OpFOrdEqual %v3bool %56 %62
143         %65 = OpAll %bool %63
144               OpBranch %55
145         %55 = OpLabel
146         %66 = OpPhi %bool %false %43 %65 %54
147               OpSelectionMerge %68 None
148               OpBranchConditional %66 %67 %68
149         %67 = OpLabel
150         %70 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
151         %71 = OpLoad %v4float %70
152         %69 = OpExtInst %v4float %1 FMax %71 %72
153         %73 = OpFOrdEqual %v4bool %69 %28
154         %75 = OpAll %bool %73
155               OpBranch %68
156         %68 = OpLabel
157         %76 = OpPhi %bool %false %55 %75 %67
158               OpSelectionMerge %78 None
159               OpBranchConditional %76 %77 %78
160         %77 = OpLabel
161               OpBranch %78
162         %78 = OpLabel
163         %80 = OpPhi %bool %false %68 %true %77
164               OpSelectionMerge %82 None
165               OpBranchConditional %80 %81 %82
166         %81 = OpLabel
167         %83 = OpVectorShuffle %v2float %28 %28 0 1
168         %84 = OpFOrdEqual %v2bool %48 %83
169         %85 = OpAll %bool %84
170               OpBranch %82
171         %82 = OpLabel
172         %86 = OpPhi %bool %false %78 %85 %81
173               OpSelectionMerge %88 None
174               OpBranchConditional %86 %87 %88
175         %87 = OpLabel
176         %90 = OpVectorShuffle %v3float %28 %28 0 1 2
177         %91 = OpFOrdEqual %v3bool %89 %90
178         %92 = OpAll %bool %91
179               OpBranch %88
180         %88 = OpLabel
181         %93 = OpPhi %bool %false %82 %92 %87
182               OpSelectionMerge %95 None
183               OpBranchConditional %93 %94 %95
184         %94 = OpLabel
185               OpBranch %95
186         %95 = OpLabel
187         %96 = OpPhi %bool %false %88 %true %94
188               OpSelectionMerge %98 None
189               OpBranchConditional %96 %97 %98
190         %97 = OpLabel
191        %100 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
192        %101 = OpLoad %v4float %100
193        %102 = OpCompositeExtract %float %101 0
194        %103 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
195        %105 = OpLoad %v4float %103
196        %106 = OpCompositeExtract %float %105 0
197         %99 = OpExtInst %float %1 FMax %102 %106
198        %107 = OpFOrdEqual %bool %99 %float_0
199               OpBranch %98
200         %98 = OpLabel
201        %108 = OpPhi %bool %false %95 %107 %97
202               OpSelectionMerge %110 None
203               OpBranchConditional %108 %109 %110
204        %109 = OpLabel
205        %112 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
206        %113 = OpLoad %v4float %112
207        %114 = OpVectorShuffle %v2float %113 %113 0 1
208        %115 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
209        %116 = OpLoad %v4float %115
210        %117 = OpVectorShuffle %v2float %116 %116 0 1
211        %111 = OpExtInst %v2float %1 FMax %114 %117
212        %118 = OpVectorShuffle %v2float %31 %31 0 1
213        %119 = OpFOrdEqual %v2bool %111 %118
214        %120 = OpAll %bool %119
215               OpBranch %110
216        %110 = OpLabel
217        %121 = OpPhi %bool %false %98 %120 %109
218               OpSelectionMerge %123 None
219               OpBranchConditional %121 %122 %123
220        %122 = OpLabel
221        %125 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
222        %126 = OpLoad %v4float %125
223        %127 = OpVectorShuffle %v3float %126 %126 0 1 2
224        %128 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
225        %129 = OpLoad %v4float %128
226        %130 = OpVectorShuffle %v3float %129 %129 0 1 2
227        %124 = OpExtInst %v3float %1 FMax %127 %130
228        %131 = OpVectorShuffle %v3float %31 %31 0 1 2
229        %132 = OpFOrdEqual %v3bool %124 %131
230        %133 = OpAll %bool %132
231               OpBranch %123
232        %123 = OpLabel
233        %134 = OpPhi %bool %false %110 %133 %122
234               OpSelectionMerge %136 None
235               OpBranchConditional %134 %135 %136
236        %135 = OpLabel
237        %138 = OpAccessChain %_ptr_Uniform_v4float %7 %int_0
238        %139 = OpLoad %v4float %138
239        %140 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
240        %141 = OpLoad %v4float %140
241        %137 = OpExtInst %v4float %1 FMax %139 %141
242        %142 = OpFOrdEqual %v4bool %137 %31
243        %143 = OpAll %bool %142
244               OpBranch %136
245        %136 = OpLabel
246        %144 = OpPhi %bool %false %123 %143 %135
247               OpSelectionMerge %146 None
248               OpBranchConditional %144 %145 %146
249        %145 = OpLabel
250               OpBranch %146
251        %146 = OpLabel
252        %147 = OpPhi %bool %false %136 %true %145
253               OpSelectionMerge %149 None
254               OpBranchConditional %147 %148 %149
255        %148 = OpLabel
256        %151 = OpVectorShuffle %v2float %31 %31 0 1
257        %152 = OpFOrdEqual %v2bool %150 %151
258        %153 = OpAll %bool %152
259               OpBranch %149
260        %149 = OpLabel
261        %154 = OpPhi %bool %false %146 %153 %148
262               OpSelectionMerge %156 None
263               OpBranchConditional %154 %155 %156
264        %155 = OpLabel
265        %158 = OpVectorShuffle %v3float %31 %31 0 1 2
266        %159 = OpFOrdEqual %v3bool %157 %158
267        %160 = OpAll %bool %159
268               OpBranch %156
269        %156 = OpLabel
270        %161 = OpPhi %bool %false %149 %160 %155
271               OpSelectionMerge %163 None
272               OpBranchConditional %161 %162 %163
273        %162 = OpLabel
274               OpBranch %163
275        %163 = OpLabel
276        %164 = OpPhi %bool %false %156 %true %162
277               OpSelectionMerge %168 None
278               OpBranchConditional %164 %166 %167
279        %166 = OpLabel
280        %169 = OpAccessChain %_ptr_Uniform_v4float %7 %int_1
281        %170 = OpLoad %v4float %169
282               OpStore %165 %170
283               OpBranch %168
284        %167 = OpLabel
285        %171 = OpAccessChain %_ptr_Uniform_v4float %7 %int_2
286        %173 = OpLoad %v4float %171
287               OpStore %165 %173
288               OpBranch %168
289        %168 = OpLabel
290        %174 = OpLoad %v4float %165
291               OpReturnValue %174
292               OpFunctionEnd
293