skia2/tests/sksl/shared/MatrixScalarMath.asm.frag
John Stiles 8c2a505432 Replace scalar/vector ID caches with op cache.
The output changes here are almost entirely a wash, because we already
had support for caching scalars and vectors. Almost all changes are just
inconsequential reorderings of IDs, and the removal of RelaxedPrecision
decorators on constants (which were not meaningful).

Change-Id: I45340c4a240cb504b7c4a934b3db178d2f39ec99
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/528709
Reviewed-by: Arman Uguray <armansito@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
2022-04-12 21:33:50 +00:00

470 lines
16 KiB
JavaScript

OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %_entrypoint_v "_entrypoint" %sk_FragColor %sk_Clockwise
OpExecutionMode %_entrypoint_v OriginUpperLeft
OpName %sk_FragColor "sk_FragColor"
OpName %sk_Clockwise "sk_Clockwise"
OpName %minus "minus"
OpName %star "star"
OpName %slash "slash"
OpName %_UniformBuffer "_UniformBuffer"
OpMemberName %_UniformBuffer 0 "colorGreen"
OpMemberName %_UniformBuffer 1 "colorRed"
OpName %_entrypoint_v "_entrypoint_v"
OpName %test_bifffff22 "test_bifffff22"
OpName %one "one"
OpName %m2 "m2"
OpName %main "main"
OpName %f1 "f1"
OpName %f2 "f2"
OpName %f3 "f3"
OpName %f4 "f4"
OpName %_0_expected "_0_expected"
OpName %_1_one "_1_one"
OpName %_2_m2 "_2_m2"
OpDecorate %sk_FragColor RelaxedPrecision
OpDecorate %sk_FragColor Location 0
OpDecorate %sk_FragColor Index 0
OpDecorate %sk_Clockwise BuiltIn FrontFacing
OpMemberDecorate %_UniformBuffer 0 Offset 0
OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
OpMemberDecorate %_UniformBuffer 1 Offset 16
OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
OpDecorate %_UniformBuffer Block
OpDecorate %19 Binding 0
OpDecorate %19 DescriptorSet 0
OpDecorate %48 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %149 RelaxedPrecision
OpDecorate %150 RelaxedPrecision
OpDecorate %153 RelaxedPrecision
OpDecorate %154 RelaxedPrecision
OpDecorate %155 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
OpDecorate %160 RelaxedPrecision
OpDecorate %161 RelaxedPrecision
OpDecorate %165 RelaxedPrecision
OpDecorate %166 RelaxedPrecision
OpDecorate %167 RelaxedPrecision
OpDecorate %182 RelaxedPrecision
OpDecorate %183 RelaxedPrecision
OpDecorate %331 RelaxedPrecision
OpDecorate %333 RelaxedPrecision
OpDecorate %334 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
%sk_FragColor = OpVariable %_ptr_Output_v4float Output
%bool = OpTypeBool
%_ptr_Input_bool = OpTypePointer Input %bool
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%int = OpTypeInt 32 1
%_ptr_Private_int = OpTypePointer Private %int
%minus = OpVariable %_ptr_Private_int Private
%int_2 = OpConstant %int 2
%star = OpVariable %_ptr_Private_int Private
%int_3 = OpConstant %int 3
%slash = OpVariable %_ptr_Private_int Private
%int_4 = OpConstant %int 4
%_UniformBuffer = OpTypeStruct %v4float %v4float
%_ptr_Uniform__UniformBuffer = OpTypePointer Uniform %_UniformBuffer
%19 = OpVariable %_ptr_Uniform__UniformBuffer Uniform
%void = OpTypeVoid
%24 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%v2float = OpTypeVector %float 2
%28 = OpConstantComposite %v2float %float_0 %float_0
%_ptr_Function_v2float = OpTypePointer Function %v2float
%mat2v2float = OpTypeMatrix %v2float 2
%_ptr_Function_int = OpTypePointer Function %int
%_ptr_Function_float = OpTypePointer Function %float
%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
%33 = OpTypeFunction %bool %_ptr_Function_int %_ptr_Function_float %_ptr_Function_float %_ptr_Function_float %_ptr_Function_float %_ptr_Function_mat2v2float
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%int_1 = OpConstant %int 1
%float_1 = OpConstant %float 1
%74 = OpConstantComposite %v2float %float_1 %float_1
%float_2 = OpConstant %float 2
%96 = OpConstantComposite %v2float %float_2 %float_2
%false = OpConstantFalse %bool
%int_0 = OpConstant %int 0
%144 = OpTypeFunction %v4float %_ptr_Function_v2float
%float_3 = OpConstant %float 3
%float_4 = OpConstant %float 4
%float_0_5 = OpConstant %float 0.5
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_entrypoint_v = OpFunction %void None %24
%25 = OpLabel
%29 = OpVariable %_ptr_Function_v2float Function
OpStore %29 %28
%31 = OpFunctionCall %v4float %main %29
OpStore %sk_FragColor %31
OpReturn
OpFunctionEnd
%test_bifffff22 = OpFunction %bool None %33
%37 = OpFunctionParameter %_ptr_Function_int
%38 = OpFunctionParameter %_ptr_Function_float
%39 = OpFunctionParameter %_ptr_Function_float
%40 = OpFunctionParameter %_ptr_Function_float
%41 = OpFunctionParameter %_ptr_Function_float
%42 = OpFunctionParameter %_ptr_Function_mat2v2float
%43 = OpLabel
%one = OpVariable %_ptr_Function_float Function
%m2 = OpVariable %_ptr_Function_mat2v2float Function
%45 = OpAccessChain %_ptr_Uniform_v4float %19 %int_1
%48 = OpLoad %v4float %45
%49 = OpCompositeExtract %float %48 0
OpStore %one %49
%51 = OpLoad %float %38
%52 = OpLoad %float %one
%53 = OpFMul %float %51 %52
%54 = OpLoad %float %39
%55 = OpLoad %float %one
%56 = OpFMul %float %54 %55
%57 = OpLoad %float %40
%58 = OpLoad %float %one
%59 = OpFMul %float %57 %58
%60 = OpLoad %float %41
%61 = OpLoad %float %one
%62 = OpFMul %float %60 %61
%63 = OpCompositeConstruct %v2float %53 %56
%64 = OpCompositeConstruct %v2float %59 %62
%65 = OpCompositeConstruct %mat2v2float %63 %64
OpStore %m2 %65
%66 = OpLoad %int %37
OpSelectionMerge %67 None
OpSwitch %66 %67 1 %68 2 %69 3 %70 4 %71
%68 = OpLabel
%72 = OpLoad %mat2v2float %m2
%75 = OpCompositeConstruct %mat2v2float %74 %74
%76 = OpCompositeExtract %v2float %72 0
%77 = OpCompositeExtract %v2float %75 0
%78 = OpFAdd %v2float %76 %77
%79 = OpCompositeExtract %v2float %72 1
%80 = OpCompositeExtract %v2float %75 1
%81 = OpFAdd %v2float %79 %80
%82 = OpCompositeConstruct %mat2v2float %78 %81
OpStore %m2 %82
OpBranch %67
%69 = OpLabel
%83 = OpLoad %mat2v2float %m2
%84 = OpCompositeConstruct %mat2v2float %74 %74
%85 = OpCompositeExtract %v2float %83 0
%86 = OpCompositeExtract %v2float %84 0
%87 = OpFSub %v2float %85 %86
%88 = OpCompositeExtract %v2float %83 1
%89 = OpCompositeExtract %v2float %84 1
%90 = OpFSub %v2float %88 %89
%91 = OpCompositeConstruct %mat2v2float %87 %90
OpStore %m2 %91
OpBranch %67
%70 = OpLabel
%92 = OpLoad %mat2v2float %m2
%94 = OpMatrixTimesScalar %mat2v2float %92 %float_2
OpStore %m2 %94
OpBranch %67
%71 = OpLabel
%95 = OpLoad %mat2v2float %m2
%97 = OpCompositeConstruct %mat2v2float %96 %96
%98 = OpCompositeExtract %v2float %95 0
%99 = OpCompositeExtract %v2float %97 0
%100 = OpFDiv %v2float %98 %99
%101 = OpCompositeExtract %v2float %95 1
%102 = OpCompositeExtract %v2float %97 1
%103 = OpFDiv %v2float %101 %102
%104 = OpCompositeConstruct %mat2v2float %100 %103
OpStore %m2 %104
OpBranch %67
%67 = OpLabel
%107 = OpAccessChain %_ptr_Function_v2float %m2 %int_0
%108 = OpLoad %v2float %107
%109 = OpCompositeExtract %float %108 0
%110 = OpAccessChain %_ptr_Function_v2float %42 %int_0
%111 = OpLoad %v2float %110
%112 = OpCompositeExtract %float %111 0
%113 = OpFOrdEqual %bool %109 %112
OpSelectionMerge %115 None
OpBranchConditional %113 %114 %115
%114 = OpLabel
%116 = OpAccessChain %_ptr_Function_v2float %m2 %int_0
%117 = OpLoad %v2float %116
%118 = OpCompositeExtract %float %117 1
%119 = OpAccessChain %_ptr_Function_v2float %42 %int_0
%120 = OpLoad %v2float %119
%121 = OpCompositeExtract %float %120 1
%122 = OpFOrdEqual %bool %118 %121
OpBranch %115
%115 = OpLabel
%123 = OpPhi %bool %false %67 %122 %114
OpSelectionMerge %125 None
OpBranchConditional %123 %124 %125
%124 = OpLabel
%126 = OpAccessChain %_ptr_Function_v2float %m2 %int_1
%127 = OpLoad %v2float %126
%128 = OpCompositeExtract %float %127 0
%129 = OpAccessChain %_ptr_Function_v2float %42 %int_1
%130 = OpLoad %v2float %129
%131 = OpCompositeExtract %float %130 0
%132 = OpFOrdEqual %bool %128 %131
OpBranch %125
%125 = OpLabel
%133 = OpPhi %bool %false %115 %132 %124
OpSelectionMerge %135 None
OpBranchConditional %133 %134 %135
%134 = OpLabel
%136 = OpAccessChain %_ptr_Function_v2float %m2 %int_1
%137 = OpLoad %v2float %136
%138 = OpCompositeExtract %float %137 1
%139 = OpAccessChain %_ptr_Function_v2float %42 %int_1
%140 = OpLoad %v2float %139
%141 = OpCompositeExtract %float %140 1
%142 = OpFOrdEqual %bool %138 %141
OpBranch %135
%135 = OpLabel
%143 = OpPhi %bool %false %125 %142 %134
OpReturnValue %143
OpFunctionEnd
%main = OpFunction %v4float None %144
%145 = OpFunctionParameter %_ptr_Function_v2float
%146 = OpLabel
%f1 = OpVariable %_ptr_Function_float Function
%f2 = OpVariable %_ptr_Function_float Function
%f3 = OpVariable %_ptr_Function_float Function
%f4 = OpVariable %_ptr_Function_float Function
%_0_expected = OpVariable %_ptr_Function_mat2v2float Function
%_1_one = OpVariable %_ptr_Function_float Function
%_2_m2 = OpVariable %_ptr_Function_mat2v2float Function
%249 = OpVariable %_ptr_Function_int Function
%251 = OpVariable %_ptr_Function_float Function
%253 = OpVariable %_ptr_Function_float Function
%255 = OpVariable %_ptr_Function_float Function
%257 = OpVariable %_ptr_Function_float Function
%269 = OpVariable %_ptr_Function_mat2v2float Function
%275 = OpVariable %_ptr_Function_int Function
%277 = OpVariable %_ptr_Function_float Function
%279 = OpVariable %_ptr_Function_float Function
%281 = OpVariable %_ptr_Function_float Function
%283 = OpVariable %_ptr_Function_float Function
%295 = OpVariable %_ptr_Function_mat2v2float Function
%301 = OpVariable %_ptr_Function_int Function
%303 = OpVariable %_ptr_Function_float Function
%305 = OpVariable %_ptr_Function_float Function
%307 = OpVariable %_ptr_Function_float Function
%309 = OpVariable %_ptr_Function_float Function
%322 = OpVariable %_ptr_Function_mat2v2float Function
%325 = OpVariable %_ptr_Function_v4float Function
OpStore %minus %int_2
OpStore %star %int_3
OpStore %slash %int_4
%148 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%149 = OpLoad %v4float %148
%150 = OpCompositeExtract %float %149 1
OpStore %f1 %150
%152 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%153 = OpLoad %v4float %152
%154 = OpCompositeExtract %float %153 1
%155 = OpFMul %float %float_2 %154
OpStore %f2 %155
%158 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%159 = OpLoad %v4float %158
%160 = OpCompositeExtract %float %159 1
%161 = OpFMul %float %float_3 %160
OpStore %f3 %161
%164 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%165 = OpLoad %v4float %164
%166 = OpCompositeExtract %float %165 1
%167 = OpFMul %float %float_4 %166
OpStore %f4 %167
%169 = OpLoad %float %f1
%170 = OpFAdd %float %169 %float_1
%171 = OpLoad %float %f2
%172 = OpFAdd %float %171 %float_1
%173 = OpLoad %float %f3
%174 = OpFAdd %float %173 %float_1
%175 = OpLoad %float %f4
%176 = OpFAdd %float %175 %float_1
%177 = OpCompositeConstruct %v2float %170 %172
%178 = OpCompositeConstruct %v2float %174 %176
%179 = OpCompositeConstruct %mat2v2float %177 %178
OpStore %_0_expected %179
%181 = OpAccessChain %_ptr_Uniform_v4float %19 %int_1
%182 = OpLoad %v4float %181
%183 = OpCompositeExtract %float %182 0
OpStore %_1_one %183
%185 = OpLoad %float %f1
%186 = OpLoad %float %_1_one
%187 = OpFMul %float %185 %186
%188 = OpLoad %float %f2
%189 = OpLoad %float %_1_one
%190 = OpFMul %float %188 %189
%191 = OpLoad %float %f3
%192 = OpLoad %float %_1_one
%193 = OpFMul %float %191 %192
%194 = OpLoad %float %f4
%195 = OpLoad %float %_1_one
%196 = OpFMul %float %194 %195
%197 = OpCompositeConstruct %v2float %187 %190
%198 = OpCompositeConstruct %v2float %193 %196
%199 = OpCompositeConstruct %mat2v2float %197 %198
OpStore %_2_m2 %199
%200 = OpLoad %mat2v2float %_2_m2
%201 = OpCompositeConstruct %mat2v2float %74 %74
%202 = OpCompositeExtract %v2float %200 0
%203 = OpCompositeExtract %v2float %201 0
%204 = OpFAdd %v2float %202 %203
%205 = OpCompositeExtract %v2float %200 1
%206 = OpCompositeExtract %v2float %201 1
%207 = OpFAdd %v2float %205 %206
%208 = OpCompositeConstruct %mat2v2float %204 %207
OpStore %_2_m2 %208
%209 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0
%210 = OpLoad %v2float %209
%211 = OpCompositeExtract %float %210 0
%212 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0
%213 = OpLoad %v2float %212
%214 = OpCompositeExtract %float %213 0
%215 = OpFOrdEqual %bool %211 %214
OpSelectionMerge %217 None
OpBranchConditional %215 %216 %217
%216 = OpLabel
%218 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_0
%219 = OpLoad %v2float %218
%220 = OpCompositeExtract %float %219 1
%221 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_0
%222 = OpLoad %v2float %221
%223 = OpCompositeExtract %float %222 1
%224 = OpFOrdEqual %bool %220 %223
OpBranch %217
%217 = OpLabel
%225 = OpPhi %bool %false %146 %224 %216
OpSelectionMerge %227 None
OpBranchConditional %225 %226 %227
%226 = OpLabel
%228 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1
%229 = OpLoad %v2float %228
%230 = OpCompositeExtract %float %229 0
%231 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1
%232 = OpLoad %v2float %231
%233 = OpCompositeExtract %float %232 0
%234 = OpFOrdEqual %bool %230 %233
OpBranch %227
%227 = OpLabel
%235 = OpPhi %bool %false %217 %234 %226
OpSelectionMerge %237 None
OpBranchConditional %235 %236 %237
%236 = OpLabel
%238 = OpAccessChain %_ptr_Function_v2float %_2_m2 %int_1
%239 = OpLoad %v2float %238
%240 = OpCompositeExtract %float %239 1
%241 = OpAccessChain %_ptr_Function_v2float %_0_expected %int_1
%242 = OpLoad %v2float %241
%243 = OpCompositeExtract %float %242 1
%244 = OpFOrdEqual %bool %240 %243
OpBranch %237
%237 = OpLabel
%245 = OpPhi %bool %false %227 %244 %236
OpSelectionMerge %247 None
OpBranchConditional %245 %246 %247
%246 = OpLabel
%248 = OpLoad %int %minus
OpStore %249 %248
%250 = OpLoad %float %f1
OpStore %251 %250
%252 = OpLoad %float %f2
OpStore %253 %252
%254 = OpLoad %float %f3
OpStore %255 %254
%256 = OpLoad %float %f4
OpStore %257 %256
%258 = OpLoad %float %f1
%259 = OpFSub %float %258 %float_1
%260 = OpLoad %float %f2
%261 = OpFSub %float %260 %float_1
%262 = OpLoad %float %f3
%263 = OpFSub %float %262 %float_1
%264 = OpLoad %float %f4
%265 = OpFSub %float %264 %float_1
%266 = OpCompositeConstruct %v2float %259 %261
%267 = OpCompositeConstruct %v2float %263 %265
%268 = OpCompositeConstruct %mat2v2float %266 %267
OpStore %269 %268
%270 = OpFunctionCall %bool %test_bifffff22 %249 %251 %253 %255 %257 %269
OpBranch %247
%247 = OpLabel
%271 = OpPhi %bool %false %237 %270 %246
OpSelectionMerge %273 None
OpBranchConditional %271 %272 %273
%272 = OpLabel
%274 = OpLoad %int %star
OpStore %275 %274
%276 = OpLoad %float %f1
OpStore %277 %276
%278 = OpLoad %float %f2
OpStore %279 %278
%280 = OpLoad %float %f3
OpStore %281 %280
%282 = OpLoad %float %f4
OpStore %283 %282
%284 = OpLoad %float %f1
%285 = OpFMul %float %284 %float_2
%286 = OpLoad %float %f2
%287 = OpFMul %float %286 %float_2
%288 = OpLoad %float %f3
%289 = OpFMul %float %288 %float_2
%290 = OpLoad %float %f4
%291 = OpFMul %float %290 %float_2
%292 = OpCompositeConstruct %v2float %285 %287
%293 = OpCompositeConstruct %v2float %289 %291
%294 = OpCompositeConstruct %mat2v2float %292 %293
OpStore %295 %294
%296 = OpFunctionCall %bool %test_bifffff22 %275 %277 %279 %281 %283 %295
OpBranch %273
%273 = OpLabel
%297 = OpPhi %bool %false %247 %296 %272
OpSelectionMerge %299 None
OpBranchConditional %297 %298 %299
%298 = OpLabel
%300 = OpLoad %int %slash
OpStore %301 %300
%302 = OpLoad %float %f1
OpStore %303 %302
%304 = OpLoad %float %f2
OpStore %305 %304
%306 = OpLoad %float %f3
OpStore %307 %306
%308 = OpLoad %float %f4
OpStore %309 %308
%310 = OpLoad %float %f1
%312 = OpFMul %float %310 %float_0_5
%313 = OpLoad %float %f2
%314 = OpFMul %float %313 %float_0_5
%315 = OpLoad %float %f3
%316 = OpFMul %float %315 %float_0_5
%317 = OpLoad %float %f4
%318 = OpFMul %float %317 %float_0_5
%319 = OpCompositeConstruct %v2float %312 %314
%320 = OpCompositeConstruct %v2float %316 %318
%321 = OpCompositeConstruct %mat2v2float %319 %320
OpStore %322 %321
%323 = OpFunctionCall %bool %test_bifffff22 %301 %303 %305 %307 %309 %322
OpBranch %299
%299 = OpLabel
%324 = OpPhi %bool %false %273 %323 %298
OpSelectionMerge %329 None
OpBranchConditional %324 %327 %328
%327 = OpLabel
%330 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
%331 = OpLoad %v4float %330
OpStore %325 %331
OpBranch %329
%328 = OpLabel
%332 = OpAccessChain %_ptr_Uniform_v4float %19 %int_1
%333 = OpLoad %v4float %332
OpStore %325 %333
OpBranch %329
%329 = OpLabel
%334 = OpLoad %v4float %325
OpReturnValue %334
OpFunctionEnd