xref: /aosp_15_r20/external/skia/tests/sksl/shared/TernaryComplexNesting.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 "colorWhite"
9               OpName %_entrypoint_v "_entrypoint_v"
10               OpName %IsEqual_bh4h4 "IsEqual_bh4h4"
11               OpName %main "main"
12               OpName %colorBlue "colorBlue"
13               OpName %colorGreen "colorGreen"
14               OpName %colorRed "colorRed"
15               OpName %result "result"
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               OpDecorate %_UniformBuffer Block
22               OpDecorate %8 Binding 0
23               OpDecorate %8 DescriptorSet 0
24               OpDecorate %27 RelaxedPrecision
25               OpDecorate %28 RelaxedPrecision
26               OpDecorate %colorBlue RelaxedPrecision
27               OpDecorate %40 RelaxedPrecision
28               OpDecorate %41 RelaxedPrecision
29               OpDecorate %42 RelaxedPrecision
30               OpDecorate %43 RelaxedPrecision
31               OpDecorate %44 RelaxedPrecision
32               OpDecorate %colorGreen RelaxedPrecision
33               OpDecorate %47 RelaxedPrecision
34               OpDecorate %48 RelaxedPrecision
35               OpDecorate %50 RelaxedPrecision
36               OpDecorate %51 RelaxedPrecision
37               OpDecorate %52 RelaxedPrecision
38               OpDecorate %colorRed RelaxedPrecision
39               OpDecorate %55 RelaxedPrecision
40               OpDecorate %56 RelaxedPrecision
41               OpDecorate %58 RelaxedPrecision
42               OpDecorate %59 RelaxedPrecision
43               OpDecorate %60 RelaxedPrecision
44               OpDecorate %result RelaxedPrecision
45               OpDecorate %64 RelaxedPrecision
46               OpDecorate %79 RelaxedPrecision
47               OpDecorate %89 RelaxedPrecision
48               OpDecorate %90 RelaxedPrecision
49               OpDecorate %91 RelaxedPrecision
50               OpDecorate %100 RelaxedPrecision
51               OpDecorate %111 RelaxedPrecision
52               OpDecorate %118 RelaxedPrecision
53               OpDecorate %119 RelaxedPrecision
54               OpDecorate %120 RelaxedPrecision
55      %float = OpTypeFloat 32
56    %v4float = OpTypeVector %float 4
57%_ptr_Output_v4float = OpTypePointer Output %v4float
58%sk_FragColor = OpVariable %_ptr_Output_v4float Output
59%_UniformBuffer = OpTypeStruct %v4float
60%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
61          %8 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
62       %void = OpTypeVoid
63         %13 = OpTypeFunction %void
64    %float_0 = OpConstant %float 0
65    %v2float = OpTypeVector %float 2
66         %17 = OpConstantComposite %v2float %float_0 %float_0
67%_ptr_Function_v2float = OpTypePointer Function %v2float
68       %bool = OpTypeBool
69%_ptr_Function_v4float = OpTypePointer Function %v4float
70         %23 = OpTypeFunction %bool %_ptr_Function_v4float %_ptr_Function_v4float
71     %v4bool = OpTypeVector %bool 4
72         %32 = OpTypeFunction %v4float %_ptr_Function_v2float
73%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
74        %int = OpTypeInt 32 1
75      %int_0 = OpConstant %int 0
76%_entrypoint_v = OpFunction %void None %13
77         %14 = OpLabel
78         %18 = OpVariable %_ptr_Function_v2float Function
79               OpStore %18 %17
80         %20 = OpFunctionCall %v4float %main %18
81               OpStore %sk_FragColor %20
82               OpReturn
83               OpFunctionEnd
84%IsEqual_bh4h4 = OpFunction %bool None %23
85         %24 = OpFunctionParameter %_ptr_Function_v4float
86         %25 = OpFunctionParameter %_ptr_Function_v4float
87         %26 = OpLabel
88         %27 = OpLoad %v4float %24
89         %28 = OpLoad %v4float %25
90         %29 = OpFOrdEqual %v4bool %27 %28
91         %31 = OpAll %bool %29
92               OpReturnValue %31
93               OpFunctionEnd
94       %main = OpFunction %v4float None %32
95         %33 = OpFunctionParameter %_ptr_Function_v2float
96         %34 = OpLabel
97  %colorBlue = OpVariable %_ptr_Function_v4float Function
98 %colorGreen = OpVariable %_ptr_Function_v4float Function
99   %colorRed = OpVariable %_ptr_Function_v4float Function
100     %result = OpVariable %_ptr_Function_v4float Function
101         %65 = OpVariable %_ptr_Function_v4float Function
102         %66 = OpVariable %_ptr_Function_v4float Function
103         %68 = OpVariable %_ptr_Function_v4float Function
104         %72 = OpVariable %_ptr_Function_v4float Function
105         %73 = OpVariable %_ptr_Function_v4float Function
106         %75 = OpVariable %_ptr_Function_v4float Function
107         %81 = OpVariable %_ptr_Function_v4float Function
108         %82 = OpVariable %_ptr_Function_v4float Function
109         %84 = OpVariable %_ptr_Function_v4float Function
110         %92 = OpVariable %_ptr_Function_v4float Function
111         %93 = OpVariable %_ptr_Function_v4float Function
112         %95 = OpVariable %_ptr_Function_v4float Function
113        %102 = OpVariable %_ptr_Function_v4float Function
114        %103 = OpVariable %_ptr_Function_v4float Function
115        %105 = OpVariable %_ptr_Function_v4float Function
116        %109 = OpVariable %_ptr_Function_v4float Function
117        %112 = OpVariable %_ptr_Function_v4float Function
118        %114 = OpVariable %_ptr_Function_v4float Function
119         %36 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
120         %40 = OpLoad %v4float %36
121         %41 = OpVectorShuffle %v2float %40 %40 2 3
122         %42 = OpCompositeExtract %float %41 0
123         %43 = OpCompositeExtract %float %41 1
124         %44 = OpCompositeConstruct %v4float %float_0 %float_0 %42 %43
125               OpStore %colorBlue %44
126         %46 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
127         %47 = OpLoad %v4float %46
128         %48 = OpCompositeExtract %float %47 1
129         %49 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
130         %50 = OpLoad %v4float %49
131         %51 = OpCompositeExtract %float %50 3
132         %52 = OpCompositeConstruct %v4float %float_0 %48 %float_0 %51
133               OpStore %colorGreen %52
134         %54 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
135         %55 = OpLoad %v4float %54
136         %56 = OpCompositeExtract %float %55 0
137         %57 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
138         %58 = OpLoad %v4float %57
139         %59 = OpCompositeExtract %float %58 3
140         %60 = OpCompositeConstruct %v4float %56 %float_0 %float_0 %59
141               OpStore %colorRed %60
142         %63 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
143         %64 = OpLoad %v4float %63
144               OpStore %65 %64
145               OpStore %66 %44
146         %67 = OpFunctionCall %bool %IsEqual_bh4h4 %65 %66
147         %62 = OpLogicalNot %bool %67
148               OpSelectionMerge %71 None
149               OpBranchConditional %62 %69 %70
150         %69 = OpLabel
151               OpStore %72 %52
152               OpStore %73 %60
153         %74 = OpFunctionCall %bool %IsEqual_bh4h4 %72 %73
154               OpSelectionMerge %78 None
155               OpBranchConditional %74 %76 %77
156         %76 = OpLabel
157               OpStore %75 %60
158               OpBranch %78
159         %77 = OpLabel
160               OpStore %75 %52
161               OpBranch %78
162         %78 = OpLabel
163         %79 = OpLoad %v4float %75
164               OpStore %68 %79
165               OpBranch %71
166         %70 = OpLabel
167               OpStore %81 %60
168               OpStore %82 %52
169         %83 = OpFunctionCall %bool %IsEqual_bh4h4 %81 %82
170         %80 = OpLogicalNot %bool %83
171               OpSelectionMerge %87 None
172               OpBranchConditional %80 %85 %86
173         %85 = OpLabel
174               OpStore %84 %44
175               OpBranch %87
176         %86 = OpLabel
177         %88 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
178         %89 = OpLoad %v4float %88
179               OpStore %84 %89
180               OpBranch %87
181         %87 = OpLabel
182         %90 = OpLoad %v4float %84
183               OpStore %68 %90
184               OpBranch %71
185         %71 = OpLabel
186         %91 = OpLoad %v4float %68
187               OpStore %result %91
188               OpStore %92 %60
189               OpStore %93 %44
190         %94 = OpFunctionCall %bool %IsEqual_bh4h4 %92 %93
191               OpSelectionMerge %98 None
192               OpBranchConditional %94 %96 %97
193         %96 = OpLabel
194         %99 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
195        %100 = OpLoad %v4float %99
196               OpStore %95 %100
197               OpBranch %98
198         %97 = OpLabel
199               OpStore %102 %60
200               OpStore %103 %52
201        %104 = OpFunctionCall %bool %IsEqual_bh4h4 %102 %103
202        %101 = OpLogicalNot %bool %104
203               OpSelectionMerge %108 None
204               OpBranchConditional %101 %106 %107
205        %106 = OpLabel
206               OpStore %105 %91
207               OpBranch %108
208        %107 = OpLabel
209               OpStore %109 %60
210        %110 = OpAccessChain %_ptr_Uniform_v4float %8 %int_0
211        %111 = OpLoad %v4float %110
212               OpStore %112 %111
213        %113 = OpFunctionCall %bool %IsEqual_bh4h4 %109 %112
214               OpSelectionMerge %117 None
215               OpBranchConditional %113 %115 %116
216        %115 = OpLabel
217               OpStore %114 %44
218               OpBranch %117
219        %116 = OpLabel
220               OpStore %114 %60
221               OpBranch %117
222        %117 = OpLabel
223        %118 = OpLoad %v4float %114
224               OpStore %105 %118
225               OpBranch %108
226        %108 = OpLabel
227        %119 = OpLoad %v4float %105
228               OpStore %95 %119
229               OpBranch %98
230         %98 = OpLabel
231        %120 = OpLoad %v4float %95
232               OpReturnValue %120
233               OpFunctionEnd
234