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