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