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