skia2/tests/sksl/shared/GaussianBlur.asm.frag
John Stiles 92748af1a5 Inline functions of the form 'return (expr)' only.
This drastically reduces the number of functions which we allow to be
inlined. If this change does not hurt our performance, it will allow us
to trivially remove hundreds of LOC. All current data leads us to
believe that it may affect the Mali 400 but is highly unlikely to change
results on any other device in the tree.

More info: http://go/optimization-in-sksl-inliner

Change-Id: Ia6b706742ce5407453e0e697b6c1f9201084c0e8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/384858
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
2021-03-15 19:46:46 +00:00

900 lines
32 KiB
JavaScript

OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %sk_FragColor %sk_Clockwise %vLocalCoord_Stage0
OpExecutionMode %main OriginUpperLeft
OpName %uniformBuffer "uniformBuffer"
OpMemberName %uniformBuffer 0 "sk_RTAdjust"
OpMemberName %uniformBuffer 1 "uIncrement_Stage1_c0"
OpMemberName %uniformBuffer 2 "uKernel_Stage1_c0"
OpMemberName %uniformBuffer 3 "umatrix_Stage1_c0_c0"
OpMemberName %uniformBuffer 4 "uborder_Stage1_c0_c0_c0"
OpMemberName %uniformBuffer 5 "usubset_Stage1_c0_c0_c0"
OpMemberName %uniformBuffer 6 "unorm_Stage1_c0_c0_c0"
OpName %sk_FragColor "sk_FragColor"
OpName %sk_Clockwise "sk_Clockwise"
OpName %uTextureSampler_0_Stage1 "uTextureSampler_0_Stage1"
OpName %vLocalCoord_Stage0 "vLocalCoord_Stage0"
OpName %TextureEffect_Stage1_c0_c0_c0 "TextureEffect_Stage1_c0_c0_c0"
OpName %_output "_output"
OpName %inCoord "inCoord"
OpName %subsetCoord "subsetCoord"
OpName %clampedCoord "clampedCoord"
OpName %textureColor "textureColor"
OpName %snappedX "snappedX"
OpName %MatrixEffect_Stage1_c0_c0 "MatrixEffect_Stage1_c0_c0"
OpName %_output_0 "_output"
OpName %GaussianConvolution_Stage1_c0 "GaussianConvolution_Stage1_c0"
OpName %_output_1 "_output"
OpName %coord "coord"
OpName %coordSampled "coordSampled"
OpName %main "main"
OpName %outputColor_Stage0 "outputColor_Stage0"
OpName %outputCoverage_Stage0 "outputCoverage_Stage0"
OpName %output_Stage1 "output_Stage1"
OpDecorate %_arr_v4float_int_7 ArrayStride 16
OpMemberDecorate %uniformBuffer 0 Offset 0
OpMemberDecorate %uniformBuffer 1 Offset 16
OpMemberDecorate %uniformBuffer 1 RelaxedPrecision
OpMemberDecorate %uniformBuffer 2 Offset 32
OpMemberDecorate %uniformBuffer 2 RelaxedPrecision
OpMemberDecorate %uniformBuffer 3 Offset 144
OpMemberDecorate %uniformBuffer 3 ColMajor
OpMemberDecorate %uniformBuffer 3 MatrixStride 16
OpMemberDecorate %uniformBuffer 4 Offset 192
OpMemberDecorate %uniformBuffer 4 RelaxedPrecision
OpMemberDecorate %uniformBuffer 5 Offset 208
OpMemberDecorate %uniformBuffer 6 Offset 224
OpDecorate %uniformBuffer Block
OpDecorate %6 Binding 0
OpDecorate %6 DescriptorSet 0
OpDecorate %sk_FragColor RelaxedPrecision
OpDecorate %sk_FragColor Location 0
OpDecorate %sk_FragColor Index 0
OpDecorate %sk_Clockwise RelaxedPrecision
OpDecorate %sk_Clockwise BuiltIn FrontFacing
OpDecorate %uTextureSampler_0_Stage1 RelaxedPrecision
OpDecorate %uTextureSampler_0_Stage1 Binding 0
OpDecorate %uTextureSampler_0_Stage1 DescriptorSet 0
OpDecorate %vLocalCoord_Stage0 Location 0
OpDecorate %58 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %129 RelaxedPrecision
OpDecorate %130 RelaxedPrecision
OpDecorate %137 RelaxedPrecision
OpDecorate %140 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %147 RelaxedPrecision
OpDecorate %153 RelaxedPrecision
OpDecorate %156 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
OpDecorate %162 RelaxedPrecision
OpDecorate %163 RelaxedPrecision
OpDecorate %169 RelaxedPrecision
OpDecorate %172 RelaxedPrecision
OpDecorate %175 RelaxedPrecision
OpDecorate %178 RelaxedPrecision
OpDecorate %179 RelaxedPrecision
OpDecorate %185 RelaxedPrecision
OpDecorate %188 RelaxedPrecision
OpDecorate %191 RelaxedPrecision
OpDecorate %194 RelaxedPrecision
OpDecorate %195 RelaxedPrecision
OpDecorate %201 RelaxedPrecision
OpDecorate %204 RelaxedPrecision
OpDecorate %207 RelaxedPrecision
OpDecorate %210 RelaxedPrecision
OpDecorate %211 RelaxedPrecision
OpDecorate %217 RelaxedPrecision
OpDecorate %220 RelaxedPrecision
OpDecorate %223 RelaxedPrecision
OpDecorate %226 RelaxedPrecision
OpDecorate %227 RelaxedPrecision
OpDecorate %233 RelaxedPrecision
OpDecorate %236 RelaxedPrecision
OpDecorate %239 RelaxedPrecision
OpDecorate %242 RelaxedPrecision
OpDecorate %243 RelaxedPrecision
OpDecorate %249 RelaxedPrecision
OpDecorate %252 RelaxedPrecision
OpDecorate %255 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
OpDecorate %265 RelaxedPrecision
OpDecorate %268 RelaxedPrecision
OpDecorate %271 RelaxedPrecision
OpDecorate %274 RelaxedPrecision
OpDecorate %275 RelaxedPrecision
OpDecorate %281 RelaxedPrecision
OpDecorate %284 RelaxedPrecision
OpDecorate %287 RelaxedPrecision
OpDecorate %290 RelaxedPrecision
OpDecorate %291 RelaxedPrecision
OpDecorate %297 RelaxedPrecision
OpDecorate %300 RelaxedPrecision
OpDecorate %303 RelaxedPrecision
OpDecorate %306 RelaxedPrecision
OpDecorate %307 RelaxedPrecision
OpDecorate %313 RelaxedPrecision
OpDecorate %316 RelaxedPrecision
OpDecorate %319 RelaxedPrecision
OpDecorate %322 RelaxedPrecision
OpDecorate %323 RelaxedPrecision
OpDecorate %329 RelaxedPrecision
OpDecorate %332 RelaxedPrecision
OpDecorate %335 RelaxedPrecision
OpDecorate %338 RelaxedPrecision
OpDecorate %339 RelaxedPrecision
OpDecorate %345 RelaxedPrecision
OpDecorate %348 RelaxedPrecision
OpDecorate %351 RelaxedPrecision
OpDecorate %354 RelaxedPrecision
OpDecorate %355 RelaxedPrecision
OpDecorate %361 RelaxedPrecision
OpDecorate %364 RelaxedPrecision
OpDecorate %367 RelaxedPrecision
OpDecorate %370 RelaxedPrecision
OpDecorate %371 RelaxedPrecision
OpDecorate %377 RelaxedPrecision
OpDecorate %380 RelaxedPrecision
OpDecorate %383 RelaxedPrecision
OpDecorate %386 RelaxedPrecision
OpDecorate %387 RelaxedPrecision
OpDecorate %393 RelaxedPrecision
OpDecorate %396 RelaxedPrecision
OpDecorate %399 RelaxedPrecision
OpDecorate %402 RelaxedPrecision
OpDecorate %403 RelaxedPrecision
OpDecorate %409 RelaxedPrecision
OpDecorate %412 RelaxedPrecision
OpDecorate %415 RelaxedPrecision
OpDecorate %418 RelaxedPrecision
OpDecorate %419 RelaxedPrecision
OpDecorate %425 RelaxedPrecision
OpDecorate %428 RelaxedPrecision
OpDecorate %431 RelaxedPrecision
OpDecorate %434 RelaxedPrecision
OpDecorate %435 RelaxedPrecision
OpDecorate %441 RelaxedPrecision
OpDecorate %444 RelaxedPrecision
OpDecorate %447 RelaxedPrecision
OpDecorate %450 RelaxedPrecision
OpDecorate %451 RelaxedPrecision
OpDecorate %457 RelaxedPrecision
OpDecorate %460 RelaxedPrecision
OpDecorate %463 RelaxedPrecision
OpDecorate %466 RelaxedPrecision
OpDecorate %467 RelaxedPrecision
OpDecorate %473 RelaxedPrecision
OpDecorate %476 RelaxedPrecision
OpDecorate %479 RelaxedPrecision
OpDecorate %482 RelaxedPrecision
OpDecorate %483 RelaxedPrecision
OpDecorate %489 RelaxedPrecision
OpDecorate %492 RelaxedPrecision
OpDecorate %495 RelaxedPrecision
OpDecorate %498 RelaxedPrecision
OpDecorate %499 RelaxedPrecision
OpDecorate %505 RelaxedPrecision
OpDecorate %508 RelaxedPrecision
OpDecorate %511 RelaxedPrecision
OpDecorate %514 RelaxedPrecision
OpDecorate %515 RelaxedPrecision
OpDecorate %521 RelaxedPrecision
OpDecorate %524 RelaxedPrecision
OpDecorate %527 RelaxedPrecision
OpDecorate %529 RelaxedPrecision
OpDecorate %530 RelaxedPrecision
OpDecorate %531 RelaxedPrecision
OpDecorate %532 RelaxedPrecision
OpDecorate %540 RelaxedPrecision
OpDecorate %543 RelaxedPrecision
OpDecorate %544 RelaxedPrecision
OpDecorate %545 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%v2float = OpTypeVector %float 2
%int = OpTypeInt 32 1
%int_7 = OpConstant %int 7
%_arr_v4float_int_7 = OpTypeArray %v4float %int_7
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%uniformBuffer = OpTypeStruct %v4float %v2float %_arr_v4float_int_7 %mat3v3float %v4float %v4float %v4float
%_ptr_Uniform_uniformBuffer = OpTypePointer Uniform %uniformBuffer
%6 = OpVariable %_ptr_Uniform_uniformBuffer Uniform
%_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
%25 = OpTypeImage %float 2D 0 0 0 1 Unknown
%24 = OpTypeSampledImage %25
%_ptr_UniformConstant_24 = OpTypePointer UniformConstant %24
%uTextureSampler_0_Stage1 = OpVariable %_ptr_UniformConstant_24 UniformConstant
%_ptr_Input_v2float = OpTypePointer Input %v2float
%vLocalCoord_Stage0 = OpVariable %_ptr_Input_v2float Input
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float
%28 = OpTypeFunction %v4float %_ptr_Function_v4float %_ptr_Function_v2float
%int_6 = OpConstant %int 6
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
%_ptr_Function_float = OpTypePointer Function %float
%int_0 = OpConstant %int 0
%int_1 = OpConstant %int 1
%float_0_00100000005 = OpConstant %float 0.00100000005
%float_0_5 = OpConstant %float 0.5
%true = OpConstantTrue %bool
%int_5 = OpConstant %int 5
%int_4 = OpConstant %int 4
%int_3 = OpConstant %int 3
%_ptr_Uniform_mat3v3float = OpTypePointer Uniform %mat3v3float
%float_1 = OpConstant %float 1
%112 = OpTypeFunction %v4float %_ptr_Function_v4float
%float_0 = OpConstant %float 0
%117 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%float_12 = OpConstant %float 12
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float
%127 = OpConstantComposite %v2float %float_0 %float_0
%int_2 = OpConstant %int 2
%void = OpTypeVoid
%534 = OpTypeFunction %void
%538 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%TextureEffect_Stage1_c0_c0_c0 = OpFunction %v4float None %28
%31 = OpFunctionParameter %_ptr_Function_v4float
%32 = OpFunctionParameter %_ptr_Function_v2float
%33 = OpLabel
%_output = OpVariable %_ptr_Function_v4float Function
%inCoord = OpVariable %_ptr_Function_v2float Function
%subsetCoord = OpVariable %_ptr_Function_v2float Function
%clampedCoord = OpVariable %_ptr_Function_v2float Function
%textureColor = OpVariable %_ptr_Function_v4float Function
%snappedX = OpVariable %_ptr_Function_float Function
%36 = OpLoad %v2float %32
OpStore %inCoord %36
%37 = OpLoad %v2float %inCoord
%39 = OpAccessChain %_ptr_Uniform_v4float %6 %int_6
%41 = OpLoad %v4float %39
%42 = OpVectorShuffle %v2float %41 %41 0 1
%43 = OpFMul %v2float %37 %42
OpStore %inCoord %43
%45 = OpLoad %v2float %inCoord
%46 = OpCompositeExtract %float %45 0
%47 = OpAccessChain %_ptr_Function_float %subsetCoord %int_0
OpStore %47 %46
%50 = OpLoad %v2float %inCoord
%51 = OpCompositeExtract %float %50 1
%52 = OpAccessChain %_ptr_Function_float %subsetCoord %int_1
OpStore %52 %51
%55 = OpLoad %v2float %subsetCoord
OpStore %clampedCoord %55
%58 = OpLoad %24 %uTextureSampler_0_Stage1
%59 = OpLoad %v2float %clampedCoord
%60 = OpAccessChain %_ptr_Uniform_v4float %6 %int_6
%61 = OpLoad %v4float %60
%62 = OpVectorShuffle %v2float %61 %61 2 3
%63 = OpFMul %v2float %59 %62
%57 = OpImageSampleImplicitLod %v4float %58 %63
OpStore %textureColor %57
%66 = OpLoad %v2float %inCoord
%67 = OpCompositeExtract %float %66 0
%69 = OpFAdd %float %67 %float_0_00100000005
%65 = OpExtInst %float %1 Floor %69
%71 = OpFAdd %float %65 %float_0_5
OpStore %snappedX %71
%73 = OpLoad %float %snappedX
%75 = OpAccessChain %_ptr_Uniform_v4float %6 %int_5
%76 = OpLoad %v4float %75
%77 = OpCompositeExtract %float %76 0
%78 = OpFOrdLessThan %bool %73 %77
OpSelectionMerge %80 None
OpBranchConditional %78 %80 %79
%79 = OpLabel
%81 = OpLoad %float %snappedX
%82 = OpAccessChain %_ptr_Uniform_v4float %6 %int_5
%83 = OpLoad %v4float %82
%84 = OpCompositeExtract %float %83 2
%85 = OpFOrdGreaterThan %bool %81 %84
OpBranch %80
%80 = OpLabel
%86 = OpPhi %bool %true %33 %85 %79
OpSelectionMerge %88 None
OpBranchConditional %86 %87 %88
%87 = OpLabel
%90 = OpAccessChain %_ptr_Uniform_v4float %6 %int_4
%91 = OpLoad %v4float %90
OpStore %textureColor %91
OpBranch %88
%88 = OpLabel
%92 = OpLoad %v4float %textureColor
OpReturnValue %92
OpFunctionEnd
%MatrixEffect_Stage1_c0_c0 = OpFunction %v4float None %28
%93 = OpFunctionParameter %_ptr_Function_v4float
%94 = OpFunctionParameter %_ptr_Function_v2float
%95 = OpLabel
%_output_0 = OpVariable %_ptr_Function_v4float Function
%98 = OpVariable %_ptr_Function_v4float Function
%110 = OpVariable %_ptr_Function_v2float Function
%97 = OpLoad %v4float %93
OpStore %98 %97
%100 = OpAccessChain %_ptr_Uniform_mat3v3float %6 %int_3
%102 = OpLoad %mat3v3float %100
%103 = OpLoad %v2float %94
%104 = OpCompositeExtract %float %103 0
%105 = OpCompositeExtract %float %103 1
%107 = OpCompositeConstruct %v3float %104 %105 %float_1
%108 = OpMatrixTimesVector %v3float %102 %107
%109 = OpVectorShuffle %v2float %108 %108 0 1
OpStore %110 %109
%111 = OpFunctionCall %v4float %TextureEffect_Stage1_c0_c0_c0 %98 %110
OpReturnValue %111
OpFunctionEnd
%GaussianConvolution_Stage1_c0 = OpFunction %v4float None %112
%113 = OpFunctionParameter %_ptr_Function_v4float
%114 = OpLabel
%_output_1 = OpVariable %_ptr_Function_v4float Function
%coord = OpVariable %_ptr_Function_v2float Function
%coordSampled = OpVariable %_ptr_Function_v2float Function
%131 = OpVariable %_ptr_Function_v4float Function
%133 = OpVariable %_ptr_Function_v2float Function
%148 = OpVariable %_ptr_Function_v4float Function
%150 = OpVariable %_ptr_Function_v2float Function
%164 = OpVariable %_ptr_Function_v4float Function
%166 = OpVariable %_ptr_Function_v2float Function
%180 = OpVariable %_ptr_Function_v4float Function
%182 = OpVariable %_ptr_Function_v2float Function
%196 = OpVariable %_ptr_Function_v4float Function
%198 = OpVariable %_ptr_Function_v2float Function
%212 = OpVariable %_ptr_Function_v4float Function
%214 = OpVariable %_ptr_Function_v2float Function
%228 = OpVariable %_ptr_Function_v4float Function
%230 = OpVariable %_ptr_Function_v2float Function
%244 = OpVariable %_ptr_Function_v4float Function
%246 = OpVariable %_ptr_Function_v2float Function
%260 = OpVariable %_ptr_Function_v4float Function
%262 = OpVariable %_ptr_Function_v2float Function
%276 = OpVariable %_ptr_Function_v4float Function
%278 = OpVariable %_ptr_Function_v2float Function
%292 = OpVariable %_ptr_Function_v4float Function
%294 = OpVariable %_ptr_Function_v2float Function
%308 = OpVariable %_ptr_Function_v4float Function
%310 = OpVariable %_ptr_Function_v2float Function
%324 = OpVariable %_ptr_Function_v4float Function
%326 = OpVariable %_ptr_Function_v2float Function
%340 = OpVariable %_ptr_Function_v4float Function
%342 = OpVariable %_ptr_Function_v2float Function
%356 = OpVariable %_ptr_Function_v4float Function
%358 = OpVariable %_ptr_Function_v2float Function
%372 = OpVariable %_ptr_Function_v4float Function
%374 = OpVariable %_ptr_Function_v2float Function
%388 = OpVariable %_ptr_Function_v4float Function
%390 = OpVariable %_ptr_Function_v2float Function
%404 = OpVariable %_ptr_Function_v4float Function
%406 = OpVariable %_ptr_Function_v2float Function
%420 = OpVariable %_ptr_Function_v4float Function
%422 = OpVariable %_ptr_Function_v2float Function
%436 = OpVariable %_ptr_Function_v4float Function
%438 = OpVariable %_ptr_Function_v2float Function
%452 = OpVariable %_ptr_Function_v4float Function
%454 = OpVariable %_ptr_Function_v2float Function
%468 = OpVariable %_ptr_Function_v4float Function
%470 = OpVariable %_ptr_Function_v2float Function
%484 = OpVariable %_ptr_Function_v4float Function
%486 = OpVariable %_ptr_Function_v2float Function
%500 = OpVariable %_ptr_Function_v4float Function
%502 = OpVariable %_ptr_Function_v2float Function
%516 = OpVariable %_ptr_Function_v4float Function
%518 = OpVariable %_ptr_Function_v2float Function
OpStore %_output_1 %117
%119 = OpLoad %v2float %vLocalCoord_Stage0
%121 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%123 = OpLoad %v2float %121
%124 = OpVectorTimesScalar %v2float %123 %float_12
%125 = OpFSub %v2float %119 %124
OpStore %coord %125
OpStore %coordSampled %127
%128 = OpLoad %v2float %coord
OpStore %coordSampled %128
%129 = OpLoad %v4float %_output_1
%130 = OpLoad %v4float %113
OpStore %131 %130
%132 = OpLoad %v2float %coordSampled
OpStore %133 %132
%134 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %131 %133
%136 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_0
%137 = OpLoad %v4float %136
%138 = OpCompositeExtract %float %137 0
%139 = OpVectorTimesScalar %v4float %134 %138
%140 = OpFAdd %v4float %129 %139
OpStore %_output_1 %140
%141 = OpLoad %v2float %coord
%142 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%143 = OpLoad %v2float %142
%144 = OpFAdd %v2float %141 %143
OpStore %coord %144
%145 = OpLoad %v2float %coord
OpStore %coordSampled %145
%146 = OpLoad %v4float %_output_1
%147 = OpLoad %v4float %113
OpStore %148 %147
%149 = OpLoad %v2float %coordSampled
OpStore %150 %149
%151 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %148 %150
%152 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_0
%153 = OpLoad %v4float %152
%154 = OpCompositeExtract %float %153 1
%155 = OpVectorTimesScalar %v4float %151 %154
%156 = OpFAdd %v4float %146 %155
OpStore %_output_1 %156
%157 = OpLoad %v2float %coord
%158 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%159 = OpLoad %v2float %158
%160 = OpFAdd %v2float %157 %159
OpStore %coord %160
%161 = OpLoad %v2float %coord
OpStore %coordSampled %161
%162 = OpLoad %v4float %_output_1
%163 = OpLoad %v4float %113
OpStore %164 %163
%165 = OpLoad %v2float %coordSampled
OpStore %166 %165
%167 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %164 %166
%168 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_0
%169 = OpLoad %v4float %168
%170 = OpCompositeExtract %float %169 2
%171 = OpVectorTimesScalar %v4float %167 %170
%172 = OpFAdd %v4float %162 %171
OpStore %_output_1 %172
%173 = OpLoad %v2float %coord
%174 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%175 = OpLoad %v2float %174
%176 = OpFAdd %v2float %173 %175
OpStore %coord %176
%177 = OpLoad %v2float %coord
OpStore %coordSampled %177
%178 = OpLoad %v4float %_output_1
%179 = OpLoad %v4float %113
OpStore %180 %179
%181 = OpLoad %v2float %coordSampled
OpStore %182 %181
%183 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %180 %182
%184 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_0
%185 = OpLoad %v4float %184
%186 = OpCompositeExtract %float %185 3
%187 = OpVectorTimesScalar %v4float %183 %186
%188 = OpFAdd %v4float %178 %187
OpStore %_output_1 %188
%189 = OpLoad %v2float %coord
%190 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%191 = OpLoad %v2float %190
%192 = OpFAdd %v2float %189 %191
OpStore %coord %192
%193 = OpLoad %v2float %coord
OpStore %coordSampled %193
%194 = OpLoad %v4float %_output_1
%195 = OpLoad %v4float %113
OpStore %196 %195
%197 = OpLoad %v2float %coordSampled
OpStore %198 %197
%199 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %196 %198
%200 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_1
%201 = OpLoad %v4float %200
%202 = OpCompositeExtract %float %201 0
%203 = OpVectorTimesScalar %v4float %199 %202
%204 = OpFAdd %v4float %194 %203
OpStore %_output_1 %204
%205 = OpLoad %v2float %coord
%206 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%207 = OpLoad %v2float %206
%208 = OpFAdd %v2float %205 %207
OpStore %coord %208
%209 = OpLoad %v2float %coord
OpStore %coordSampled %209
%210 = OpLoad %v4float %_output_1
%211 = OpLoad %v4float %113
OpStore %212 %211
%213 = OpLoad %v2float %coordSampled
OpStore %214 %213
%215 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %212 %214
%216 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_1
%217 = OpLoad %v4float %216
%218 = OpCompositeExtract %float %217 1
%219 = OpVectorTimesScalar %v4float %215 %218
%220 = OpFAdd %v4float %210 %219
OpStore %_output_1 %220
%221 = OpLoad %v2float %coord
%222 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%223 = OpLoad %v2float %222
%224 = OpFAdd %v2float %221 %223
OpStore %coord %224
%225 = OpLoad %v2float %coord
OpStore %coordSampled %225
%226 = OpLoad %v4float %_output_1
%227 = OpLoad %v4float %113
OpStore %228 %227
%229 = OpLoad %v2float %coordSampled
OpStore %230 %229
%231 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %228 %230
%232 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_1
%233 = OpLoad %v4float %232
%234 = OpCompositeExtract %float %233 2
%235 = OpVectorTimesScalar %v4float %231 %234
%236 = OpFAdd %v4float %226 %235
OpStore %_output_1 %236
%237 = OpLoad %v2float %coord
%238 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%239 = OpLoad %v2float %238
%240 = OpFAdd %v2float %237 %239
OpStore %coord %240
%241 = OpLoad %v2float %coord
OpStore %coordSampled %241
%242 = OpLoad %v4float %_output_1
%243 = OpLoad %v4float %113
OpStore %244 %243
%245 = OpLoad %v2float %coordSampled
OpStore %246 %245
%247 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %244 %246
%248 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_1
%249 = OpLoad %v4float %248
%250 = OpCompositeExtract %float %249 3
%251 = OpVectorTimesScalar %v4float %247 %250
%252 = OpFAdd %v4float %242 %251
OpStore %_output_1 %252
%253 = OpLoad %v2float %coord
%254 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%255 = OpLoad %v2float %254
%256 = OpFAdd %v2float %253 %255
OpStore %coord %256
%257 = OpLoad %v2float %coord
OpStore %coordSampled %257
%258 = OpLoad %v4float %_output_1
%259 = OpLoad %v4float %113
OpStore %260 %259
%261 = OpLoad %v2float %coordSampled
OpStore %262 %261
%263 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %260 %262
%264 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_2
%265 = OpLoad %v4float %264
%266 = OpCompositeExtract %float %265 0
%267 = OpVectorTimesScalar %v4float %263 %266
%268 = OpFAdd %v4float %258 %267
OpStore %_output_1 %268
%269 = OpLoad %v2float %coord
%270 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%271 = OpLoad %v2float %270
%272 = OpFAdd %v2float %269 %271
OpStore %coord %272
%273 = OpLoad %v2float %coord
OpStore %coordSampled %273
%274 = OpLoad %v4float %_output_1
%275 = OpLoad %v4float %113
OpStore %276 %275
%277 = OpLoad %v2float %coordSampled
OpStore %278 %277
%279 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %276 %278
%280 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_2
%281 = OpLoad %v4float %280
%282 = OpCompositeExtract %float %281 1
%283 = OpVectorTimesScalar %v4float %279 %282
%284 = OpFAdd %v4float %274 %283
OpStore %_output_1 %284
%285 = OpLoad %v2float %coord
%286 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%287 = OpLoad %v2float %286
%288 = OpFAdd %v2float %285 %287
OpStore %coord %288
%289 = OpLoad %v2float %coord
OpStore %coordSampled %289
%290 = OpLoad %v4float %_output_1
%291 = OpLoad %v4float %113
OpStore %292 %291
%293 = OpLoad %v2float %coordSampled
OpStore %294 %293
%295 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %292 %294
%296 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_2
%297 = OpLoad %v4float %296
%298 = OpCompositeExtract %float %297 2
%299 = OpVectorTimesScalar %v4float %295 %298
%300 = OpFAdd %v4float %290 %299
OpStore %_output_1 %300
%301 = OpLoad %v2float %coord
%302 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%303 = OpLoad %v2float %302
%304 = OpFAdd %v2float %301 %303
OpStore %coord %304
%305 = OpLoad %v2float %coord
OpStore %coordSampled %305
%306 = OpLoad %v4float %_output_1
%307 = OpLoad %v4float %113
OpStore %308 %307
%309 = OpLoad %v2float %coordSampled
OpStore %310 %309
%311 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %308 %310
%312 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_2
%313 = OpLoad %v4float %312
%314 = OpCompositeExtract %float %313 3
%315 = OpVectorTimesScalar %v4float %311 %314
%316 = OpFAdd %v4float %306 %315
OpStore %_output_1 %316
%317 = OpLoad %v2float %coord
%318 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%319 = OpLoad %v2float %318
%320 = OpFAdd %v2float %317 %319
OpStore %coord %320
%321 = OpLoad %v2float %coord
OpStore %coordSampled %321
%322 = OpLoad %v4float %_output_1
%323 = OpLoad %v4float %113
OpStore %324 %323
%325 = OpLoad %v2float %coordSampled
OpStore %326 %325
%327 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %324 %326
%328 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_3
%329 = OpLoad %v4float %328
%330 = OpCompositeExtract %float %329 0
%331 = OpVectorTimesScalar %v4float %327 %330
%332 = OpFAdd %v4float %322 %331
OpStore %_output_1 %332
%333 = OpLoad %v2float %coord
%334 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%335 = OpLoad %v2float %334
%336 = OpFAdd %v2float %333 %335
OpStore %coord %336
%337 = OpLoad %v2float %coord
OpStore %coordSampled %337
%338 = OpLoad %v4float %_output_1
%339 = OpLoad %v4float %113
OpStore %340 %339
%341 = OpLoad %v2float %coordSampled
OpStore %342 %341
%343 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %340 %342
%344 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_3
%345 = OpLoad %v4float %344
%346 = OpCompositeExtract %float %345 1
%347 = OpVectorTimesScalar %v4float %343 %346
%348 = OpFAdd %v4float %338 %347
OpStore %_output_1 %348
%349 = OpLoad %v2float %coord
%350 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%351 = OpLoad %v2float %350
%352 = OpFAdd %v2float %349 %351
OpStore %coord %352
%353 = OpLoad %v2float %coord
OpStore %coordSampled %353
%354 = OpLoad %v4float %_output_1
%355 = OpLoad %v4float %113
OpStore %356 %355
%357 = OpLoad %v2float %coordSampled
OpStore %358 %357
%359 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %356 %358
%360 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_3
%361 = OpLoad %v4float %360
%362 = OpCompositeExtract %float %361 2
%363 = OpVectorTimesScalar %v4float %359 %362
%364 = OpFAdd %v4float %354 %363
OpStore %_output_1 %364
%365 = OpLoad %v2float %coord
%366 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%367 = OpLoad %v2float %366
%368 = OpFAdd %v2float %365 %367
OpStore %coord %368
%369 = OpLoad %v2float %coord
OpStore %coordSampled %369
%370 = OpLoad %v4float %_output_1
%371 = OpLoad %v4float %113
OpStore %372 %371
%373 = OpLoad %v2float %coordSampled
OpStore %374 %373
%375 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %372 %374
%376 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_3
%377 = OpLoad %v4float %376
%378 = OpCompositeExtract %float %377 3
%379 = OpVectorTimesScalar %v4float %375 %378
%380 = OpFAdd %v4float %370 %379
OpStore %_output_1 %380
%381 = OpLoad %v2float %coord
%382 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%383 = OpLoad %v2float %382
%384 = OpFAdd %v2float %381 %383
OpStore %coord %384
%385 = OpLoad %v2float %coord
OpStore %coordSampled %385
%386 = OpLoad %v4float %_output_1
%387 = OpLoad %v4float %113
OpStore %388 %387
%389 = OpLoad %v2float %coordSampled
OpStore %390 %389
%391 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %388 %390
%392 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_4
%393 = OpLoad %v4float %392
%394 = OpCompositeExtract %float %393 0
%395 = OpVectorTimesScalar %v4float %391 %394
%396 = OpFAdd %v4float %386 %395
OpStore %_output_1 %396
%397 = OpLoad %v2float %coord
%398 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%399 = OpLoad %v2float %398
%400 = OpFAdd %v2float %397 %399
OpStore %coord %400
%401 = OpLoad %v2float %coord
OpStore %coordSampled %401
%402 = OpLoad %v4float %_output_1
%403 = OpLoad %v4float %113
OpStore %404 %403
%405 = OpLoad %v2float %coordSampled
OpStore %406 %405
%407 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %404 %406
%408 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_4
%409 = OpLoad %v4float %408
%410 = OpCompositeExtract %float %409 1
%411 = OpVectorTimesScalar %v4float %407 %410
%412 = OpFAdd %v4float %402 %411
OpStore %_output_1 %412
%413 = OpLoad %v2float %coord
%414 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%415 = OpLoad %v2float %414
%416 = OpFAdd %v2float %413 %415
OpStore %coord %416
%417 = OpLoad %v2float %coord
OpStore %coordSampled %417
%418 = OpLoad %v4float %_output_1
%419 = OpLoad %v4float %113
OpStore %420 %419
%421 = OpLoad %v2float %coordSampled
OpStore %422 %421
%423 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %420 %422
%424 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_4
%425 = OpLoad %v4float %424
%426 = OpCompositeExtract %float %425 2
%427 = OpVectorTimesScalar %v4float %423 %426
%428 = OpFAdd %v4float %418 %427
OpStore %_output_1 %428
%429 = OpLoad %v2float %coord
%430 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%431 = OpLoad %v2float %430
%432 = OpFAdd %v2float %429 %431
OpStore %coord %432
%433 = OpLoad %v2float %coord
OpStore %coordSampled %433
%434 = OpLoad %v4float %_output_1
%435 = OpLoad %v4float %113
OpStore %436 %435
%437 = OpLoad %v2float %coordSampled
OpStore %438 %437
%439 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %436 %438
%440 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_4
%441 = OpLoad %v4float %440
%442 = OpCompositeExtract %float %441 3
%443 = OpVectorTimesScalar %v4float %439 %442
%444 = OpFAdd %v4float %434 %443
OpStore %_output_1 %444
%445 = OpLoad %v2float %coord
%446 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%447 = OpLoad %v2float %446
%448 = OpFAdd %v2float %445 %447
OpStore %coord %448
%449 = OpLoad %v2float %coord
OpStore %coordSampled %449
%450 = OpLoad %v4float %_output_1
%451 = OpLoad %v4float %113
OpStore %452 %451
%453 = OpLoad %v2float %coordSampled
OpStore %454 %453
%455 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %452 %454
%456 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_5
%457 = OpLoad %v4float %456
%458 = OpCompositeExtract %float %457 0
%459 = OpVectorTimesScalar %v4float %455 %458
%460 = OpFAdd %v4float %450 %459
OpStore %_output_1 %460
%461 = OpLoad %v2float %coord
%462 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%463 = OpLoad %v2float %462
%464 = OpFAdd %v2float %461 %463
OpStore %coord %464
%465 = OpLoad %v2float %coord
OpStore %coordSampled %465
%466 = OpLoad %v4float %_output_1
%467 = OpLoad %v4float %113
OpStore %468 %467
%469 = OpLoad %v2float %coordSampled
OpStore %470 %469
%471 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %468 %470
%472 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_5
%473 = OpLoad %v4float %472
%474 = OpCompositeExtract %float %473 1
%475 = OpVectorTimesScalar %v4float %471 %474
%476 = OpFAdd %v4float %466 %475
OpStore %_output_1 %476
%477 = OpLoad %v2float %coord
%478 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%479 = OpLoad %v2float %478
%480 = OpFAdd %v2float %477 %479
OpStore %coord %480
%481 = OpLoad %v2float %coord
OpStore %coordSampled %481
%482 = OpLoad %v4float %_output_1
%483 = OpLoad %v4float %113
OpStore %484 %483
%485 = OpLoad %v2float %coordSampled
OpStore %486 %485
%487 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %484 %486
%488 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_5
%489 = OpLoad %v4float %488
%490 = OpCompositeExtract %float %489 2
%491 = OpVectorTimesScalar %v4float %487 %490
%492 = OpFAdd %v4float %482 %491
OpStore %_output_1 %492
%493 = OpLoad %v2float %coord
%494 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%495 = OpLoad %v2float %494
%496 = OpFAdd %v2float %493 %495
OpStore %coord %496
%497 = OpLoad %v2float %coord
OpStore %coordSampled %497
%498 = OpLoad %v4float %_output_1
%499 = OpLoad %v4float %113
OpStore %500 %499
%501 = OpLoad %v2float %coordSampled
OpStore %502 %501
%503 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %500 %502
%504 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_5
%505 = OpLoad %v4float %504
%506 = OpCompositeExtract %float %505 3
%507 = OpVectorTimesScalar %v4float %503 %506
%508 = OpFAdd %v4float %498 %507
OpStore %_output_1 %508
%509 = OpLoad %v2float %coord
%510 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%511 = OpLoad %v2float %510
%512 = OpFAdd %v2float %509 %511
OpStore %coord %512
%513 = OpLoad %v2float %coord
OpStore %coordSampled %513
%514 = OpLoad %v4float %_output_1
%515 = OpLoad %v4float %113
OpStore %516 %515
%517 = OpLoad %v2float %coordSampled
OpStore %518 %517
%519 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %516 %518
%520 = OpAccessChain %_ptr_Uniform_v4float %6 %int_2 %int_6
%521 = OpLoad %v4float %520
%522 = OpCompositeExtract %float %521 0
%523 = OpVectorTimesScalar %v4float %519 %522
%524 = OpFAdd %v4float %514 %523
OpStore %_output_1 %524
%525 = OpLoad %v2float %coord
%526 = OpAccessChain %_ptr_Uniform_v2float %6 %int_1
%527 = OpLoad %v2float %526
%528 = OpFAdd %v2float %525 %527
OpStore %coord %528
%529 = OpLoad %v4float %_output_1
%530 = OpLoad %v4float %113
%531 = OpFMul %v4float %529 %530
OpStore %_output_1 %531
%532 = OpLoad %v4float %_output_1
OpReturnValue %532
OpFunctionEnd
%main = OpFunction %void None %534
%535 = OpLabel
%outputColor_Stage0 = OpVariable %_ptr_Function_v4float Function
%outputCoverage_Stage0 = OpVariable %_ptr_Function_v4float Function
%output_Stage1 = OpVariable %_ptr_Function_v4float Function
%541 = OpVariable %_ptr_Function_v4float Function
OpStore %outputColor_Stage0 %538
OpStore %outputCoverage_Stage0 %538
%540 = OpLoad %v4float %outputColor_Stage0
OpStore %541 %540
%542 = OpFunctionCall %v4float %GaussianConvolution_Stage1_c0 %541
OpStore %output_Stage1 %542
%543 = OpLoad %v4float %output_Stage1
%544 = OpLoad %v4float %outputCoverage_Stage0
%545 = OpFMul %v4float %543 %544
OpStore %sk_FragColor %545
OpReturn
OpFunctionEnd