9b9415e0f1
Previously, we'd gauge suitability for inlining by counting the nodes in a function; past a certain limit, the function was considered "too big." Now, we also incorporate the number of times that function is called. So if a function is called three times, and its size is 20 nodes, it would be considered to have an inlining cost of 60 (3 * 20) instead of 20. This should tamp down the aggressive nature of the inliner in cases like gaussian convolution or complicated blends, and will hopefully satisfy Pinpoint. No change visible in Nanobench (which doesn't test any of these sorts of patterns, but certainly inlines things): http://screen/AwD5hkgkEfjVx4g Change-Id: Ie5e32898245ac854adb9ddd52d87001df6a67125 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/337676 Commit-Queue: John Stiles <johnstiles@google.com> Reviewed-by: Brian Osman <brianosman@google.com> Auto-Submit: John Stiles <johnstiles@google.com>
416 lines
13 KiB
JavaScript
416 lines
13 KiB
JavaScript
OpCapability Shader
|
|
%1 = OpExtInstImport "GLSL.std.450"
|
|
OpMemoryModel Logical GLSL450
|
|
OpEntryPoint Fragment %main "main" %sk_FragColor %sk_Clockwise %src %dst
|
|
OpExecutionMode %main OriginUpperLeft
|
|
OpName %sk_FragColor "sk_FragColor"
|
|
OpName %sk_Clockwise "sk_Clockwise"
|
|
OpName %src "src"
|
|
OpName %dst "dst"
|
|
OpName %_soft_light_component "_soft_light_component"
|
|
OpName %_7_guarded_divide "_7_guarded_divide"
|
|
OpName %_8_n "_8_n"
|
|
OpName %DSqd "DSqd"
|
|
OpName %DCub "DCub"
|
|
OpName %DaSqd "DaSqd"
|
|
OpName %DaCub "DaCub"
|
|
OpName %_9_guarded_divide "_9_guarded_divide"
|
|
OpName %_10_n "_10_n"
|
|
OpName %main "main"
|
|
OpName %_0_blend_soft_light "_0_blend_soft_light"
|
|
OpDecorate %sk_FragColor RelaxedPrecision
|
|
OpDecorate %sk_FragColor Location 0
|
|
OpDecorate %sk_FragColor Index 0
|
|
OpDecorate %sk_Clockwise RelaxedPrecision
|
|
OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
|
OpDecorate %src RelaxedPrecision
|
|
OpDecorate %dst RelaxedPrecision
|
|
OpDecorate %21 RelaxedPrecision
|
|
OpDecorate %23 RelaxedPrecision
|
|
OpDecorate %24 RelaxedPrecision
|
|
OpDecorate %33 RelaxedPrecision
|
|
OpDecorate %35 RelaxedPrecision
|
|
OpDecorate %37 RelaxedPrecision
|
|
OpDecorate %38 RelaxedPrecision
|
|
OpDecorate %40 RelaxedPrecision
|
|
OpDecorate %42 RelaxedPrecision
|
|
OpDecorate %43 RelaxedPrecision
|
|
OpDecorate %44 RelaxedPrecision
|
|
OpDecorate %45 RelaxedPrecision
|
|
OpDecorate %46 RelaxedPrecision
|
|
OpDecorate %48 RelaxedPrecision
|
|
OpDecorate %49 RelaxedPrecision
|
|
OpDecorate %51 RelaxedPrecision
|
|
OpDecorate %53 RelaxedPrecision
|
|
OpDecorate %54 RelaxedPrecision
|
|
OpDecorate %56 RelaxedPrecision
|
|
OpDecorate %57 RelaxedPrecision
|
|
OpDecorate %58 RelaxedPrecision
|
|
OpDecorate %61 RelaxedPrecision
|
|
OpDecorate %60 RelaxedPrecision
|
|
OpDecorate %63 RelaxedPrecision
|
|
OpDecorate %65 RelaxedPrecision
|
|
OpDecorate %66 RelaxedPrecision
|
|
OpDecorate %67 RelaxedPrecision
|
|
OpDecorate %68 RelaxedPrecision
|
|
OpDecorate %69 RelaxedPrecision
|
|
OpDecorate %71 RelaxedPrecision
|
|
OpDecorate %73 RelaxedPrecision
|
|
OpDecorate %74 RelaxedPrecision
|
|
OpDecorate %81 RelaxedPrecision
|
|
OpDecorate %83 RelaxedPrecision
|
|
OpDecorate %85 RelaxedPrecision
|
|
OpDecorate %87 RelaxedPrecision
|
|
OpDecorate %88 RelaxedPrecision
|
|
OpDecorate %90 RelaxedPrecision
|
|
OpDecorate %92 RelaxedPrecision
|
|
OpDecorate %94 RelaxedPrecision
|
|
OpDecorate %96 RelaxedPrecision
|
|
OpDecorate %98 RelaxedPrecision
|
|
OpDecorate %99 RelaxedPrecision
|
|
OpDecorate %101 RelaxedPrecision
|
|
OpDecorate %104 RelaxedPrecision
|
|
OpDecorate %105 RelaxedPrecision
|
|
OpDecorate %107 RelaxedPrecision
|
|
OpDecorate %110 RelaxedPrecision
|
|
OpDecorate %112 RelaxedPrecision
|
|
OpDecorate %114 RelaxedPrecision
|
|
OpDecorate %116 RelaxedPrecision
|
|
OpDecorate %117 RelaxedPrecision
|
|
OpDecorate %118 RelaxedPrecision
|
|
OpDecorate %119 RelaxedPrecision
|
|
OpDecorate %120 RelaxedPrecision
|
|
OpDecorate %121 RelaxedPrecision
|
|
OpDecorate %123 RelaxedPrecision
|
|
OpDecorate %125 RelaxedPrecision
|
|
OpDecorate %126 RelaxedPrecision
|
|
OpDecorate %127 RelaxedPrecision
|
|
OpDecorate %128 RelaxedPrecision
|
|
OpDecorate %130 RelaxedPrecision
|
|
OpDecorate %132 RelaxedPrecision
|
|
OpDecorate %133 RelaxedPrecision
|
|
OpDecorate %134 RelaxedPrecision
|
|
OpDecorate %135 RelaxedPrecision
|
|
OpDecorate %137 RelaxedPrecision
|
|
OpDecorate %138 RelaxedPrecision
|
|
OpDecorate %139 RelaxedPrecision
|
|
OpDecorate %141 RelaxedPrecision
|
|
OpDecorate %143 RelaxedPrecision
|
|
OpDecorate %144 RelaxedPrecision
|
|
OpDecorate %145 RelaxedPrecision
|
|
OpDecorate %146 RelaxedPrecision
|
|
OpDecorate %147 RelaxedPrecision
|
|
OpDecorate %148 RelaxedPrecision
|
|
OpDecorate %150 RelaxedPrecision
|
|
OpDecorate %151 RelaxedPrecision
|
|
OpDecorate %152 RelaxedPrecision
|
|
OpDecorate %153 RelaxedPrecision
|
|
OpDecorate %154 RelaxedPrecision
|
|
OpDecorate %155 RelaxedPrecision
|
|
OpDecorate %156 RelaxedPrecision
|
|
OpDecorate %158 RelaxedPrecision
|
|
OpDecorate %160 RelaxedPrecision
|
|
OpDecorate %162 RelaxedPrecision
|
|
OpDecorate %163 RelaxedPrecision
|
|
OpDecorate %164 RelaxedPrecision
|
|
OpDecorate %165 RelaxedPrecision
|
|
OpDecorate %166 RelaxedPrecision
|
|
OpDecorate %168 RelaxedPrecision
|
|
OpDecorate %170 RelaxedPrecision
|
|
OpDecorate %172 RelaxedPrecision
|
|
OpDecorate %174 RelaxedPrecision
|
|
OpDecorate %175 RelaxedPrecision
|
|
OpDecorate %177 RelaxedPrecision
|
|
OpDecorate %179 RelaxedPrecision
|
|
OpDecorate %180 RelaxedPrecision
|
|
OpDecorate %181 RelaxedPrecision
|
|
OpDecorate %182 RelaxedPrecision
|
|
OpDecorate %183 RelaxedPrecision
|
|
OpDecorate %185 RelaxedPrecision
|
|
OpDecorate %187 RelaxedPrecision
|
|
OpDecorate %188 RelaxedPrecision
|
|
OpDecorate %194 RelaxedPrecision
|
|
OpDecorate %202 RelaxedPrecision
|
|
OpDecorate %203 RelaxedPrecision
|
|
OpDecorate %206 RelaxedPrecision
|
|
OpDecorate %210 RelaxedPrecision
|
|
OpDecorate %213 RelaxedPrecision
|
|
OpDecorate %217 RelaxedPrecision
|
|
OpDecorate %220 RelaxedPrecision
|
|
OpDecorate %224 RelaxedPrecision
|
|
OpDecorate %226 RelaxedPrecision
|
|
OpDecorate %228 RelaxedPrecision
|
|
OpDecorate %229 RelaxedPrecision
|
|
OpDecorate %231 RelaxedPrecision
|
|
OpDecorate %232 RelaxedPrecision
|
|
OpDecorate %234 RelaxedPrecision
|
|
OpDecorate %235 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
|
|
%_ptr_Input_v4float = OpTypePointer Input %v4float
|
|
%src = OpVariable %_ptr_Input_v4float Input
|
|
%dst = OpVariable %_ptr_Input_v4float Input
|
|
%v2float = OpTypeVector %float 2
|
|
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
|
%15 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
|
|
%float_2 = OpConstant %float 2
|
|
%_ptr_Function_float = OpTypePointer Function %float
|
|
%float_1 = OpConstant %float 1
|
|
%float_4 = OpConstant %float 4
|
|
%float_3 = OpConstant %float 3
|
|
%float_6 = OpConstant %float 6
|
|
%float_12 = OpConstant %float 12
|
|
%float_16 = OpConstant %float 16
|
|
%void = OpTypeVoid
|
|
%190 = OpTypeFunction %void
|
|
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
|
%float_0 = OpConstant %float 0
|
|
%_soft_light_component = OpFunction %float None %15
|
|
%17 = OpFunctionParameter %_ptr_Function_v2float
|
|
%18 = OpFunctionParameter %_ptr_Function_v2float
|
|
%19 = OpLabel
|
|
%_7_guarded_divide = OpVariable %_ptr_Function_float Function
|
|
%_8_n = OpVariable %_ptr_Function_float Function
|
|
%DSqd = OpVariable %_ptr_Function_float Function
|
|
%DCub = OpVariable %_ptr_Function_float Function
|
|
%DaSqd = OpVariable %_ptr_Function_float Function
|
|
%DaCub = OpVariable %_ptr_Function_float Function
|
|
%_9_guarded_divide = OpVariable %_ptr_Function_float Function
|
|
%_10_n = OpVariable %_ptr_Function_float Function
|
|
%21 = OpLoad %v2float %17
|
|
%22 = OpCompositeExtract %float %21 0
|
|
%23 = OpFMul %float %float_2 %22
|
|
%24 = OpLoad %v2float %17
|
|
%25 = OpCompositeExtract %float %24 1
|
|
%26 = OpFOrdLessThanEqual %bool %23 %25
|
|
OpSelectionMerge %29 None
|
|
OpBranchConditional %26 %27 %28
|
|
%27 = OpLabel
|
|
%33 = OpLoad %v2float %18
|
|
%34 = OpCompositeExtract %float %33 0
|
|
%35 = OpLoad %v2float %18
|
|
%36 = OpCompositeExtract %float %35 0
|
|
%37 = OpFMul %float %34 %36
|
|
%38 = OpLoad %v2float %17
|
|
%39 = OpCompositeExtract %float %38 1
|
|
%40 = OpLoad %v2float %17
|
|
%41 = OpCompositeExtract %float %40 0
|
|
%42 = OpFMul %float %float_2 %41
|
|
%43 = OpFSub %float %39 %42
|
|
%44 = OpFMul %float %37 %43
|
|
OpStore %_8_n %44
|
|
%45 = OpLoad %float %_8_n
|
|
%46 = OpLoad %v2float %18
|
|
%47 = OpCompositeExtract %float %46 1
|
|
%48 = OpFDiv %float %45 %47
|
|
OpStore %_7_guarded_divide %48
|
|
%49 = OpLoad %float %_7_guarded_divide
|
|
%51 = OpLoad %v2float %18
|
|
%52 = OpCompositeExtract %float %51 1
|
|
%53 = OpFSub %float %float_1 %52
|
|
%54 = OpLoad %v2float %17
|
|
%55 = OpCompositeExtract %float %54 0
|
|
%56 = OpFMul %float %53 %55
|
|
%57 = OpFAdd %float %49 %56
|
|
%58 = OpLoad %v2float %18
|
|
%59 = OpCompositeExtract %float %58 0
|
|
%61 = OpLoad %v2float %17
|
|
%62 = OpCompositeExtract %float %61 1
|
|
%60 = OpFNegate %float %62
|
|
%63 = OpLoad %v2float %17
|
|
%64 = OpCompositeExtract %float %63 0
|
|
%65 = OpFMul %float %float_2 %64
|
|
%66 = OpFAdd %float %60 %65
|
|
%67 = OpFAdd %float %66 %float_1
|
|
%68 = OpFMul %float %59 %67
|
|
%69 = OpFAdd %float %57 %68
|
|
OpReturnValue %69
|
|
%28 = OpLabel
|
|
%71 = OpLoad %v2float %18
|
|
%72 = OpCompositeExtract %float %71 0
|
|
%73 = OpFMul %float %float_4 %72
|
|
%74 = OpLoad %v2float %18
|
|
%75 = OpCompositeExtract %float %74 1
|
|
%76 = OpFOrdLessThanEqual %bool %73 %75
|
|
OpSelectionMerge %79 None
|
|
OpBranchConditional %76 %77 %78
|
|
%77 = OpLabel
|
|
%81 = OpLoad %v2float %18
|
|
%82 = OpCompositeExtract %float %81 0
|
|
%83 = OpLoad %v2float %18
|
|
%84 = OpCompositeExtract %float %83 0
|
|
%85 = OpFMul %float %82 %84
|
|
OpStore %DSqd %85
|
|
%87 = OpLoad %float %DSqd
|
|
%88 = OpLoad %v2float %18
|
|
%89 = OpCompositeExtract %float %88 0
|
|
%90 = OpFMul %float %87 %89
|
|
OpStore %DCub %90
|
|
%92 = OpLoad %v2float %18
|
|
%93 = OpCompositeExtract %float %92 1
|
|
%94 = OpLoad %v2float %18
|
|
%95 = OpCompositeExtract %float %94 1
|
|
%96 = OpFMul %float %93 %95
|
|
OpStore %DaSqd %96
|
|
%98 = OpLoad %float %DaSqd
|
|
%99 = OpLoad %v2float %18
|
|
%100 = OpCompositeExtract %float %99 1
|
|
%101 = OpFMul %float %98 %100
|
|
OpStore %DaCub %101
|
|
%104 = OpLoad %float %DaSqd
|
|
%105 = OpLoad %v2float %17
|
|
%106 = OpCompositeExtract %float %105 0
|
|
%107 = OpLoad %v2float %18
|
|
%108 = OpCompositeExtract %float %107 0
|
|
%110 = OpLoad %v2float %17
|
|
%111 = OpCompositeExtract %float %110 1
|
|
%112 = OpFMul %float %float_3 %111
|
|
%114 = OpLoad %v2float %17
|
|
%115 = OpCompositeExtract %float %114 0
|
|
%116 = OpFMul %float %float_6 %115
|
|
%117 = OpFSub %float %112 %116
|
|
%118 = OpFSub %float %117 %float_1
|
|
%119 = OpFMul %float %108 %118
|
|
%120 = OpFSub %float %106 %119
|
|
%121 = OpFMul %float %104 %120
|
|
%123 = OpLoad %v2float %18
|
|
%124 = OpCompositeExtract %float %123 1
|
|
%125 = OpFMul %float %float_12 %124
|
|
%126 = OpLoad %float %DSqd
|
|
%127 = OpFMul %float %125 %126
|
|
%128 = OpLoad %v2float %17
|
|
%129 = OpCompositeExtract %float %128 1
|
|
%130 = OpLoad %v2float %17
|
|
%131 = OpCompositeExtract %float %130 0
|
|
%132 = OpFMul %float %float_2 %131
|
|
%133 = OpFSub %float %129 %132
|
|
%134 = OpFMul %float %127 %133
|
|
%135 = OpFAdd %float %121 %134
|
|
%137 = OpLoad %float %DCub
|
|
%138 = OpFMul %float %float_16 %137
|
|
%139 = OpLoad %v2float %17
|
|
%140 = OpCompositeExtract %float %139 1
|
|
%141 = OpLoad %v2float %17
|
|
%142 = OpCompositeExtract %float %141 0
|
|
%143 = OpFMul %float %float_2 %142
|
|
%144 = OpFSub %float %140 %143
|
|
%145 = OpFMul %float %138 %144
|
|
%146 = OpFSub %float %135 %145
|
|
%147 = OpLoad %float %DaCub
|
|
%148 = OpLoad %v2float %17
|
|
%149 = OpCompositeExtract %float %148 0
|
|
%150 = OpFMul %float %147 %149
|
|
%151 = OpFSub %float %146 %150
|
|
OpStore %_10_n %151
|
|
%152 = OpLoad %float %_10_n
|
|
%153 = OpLoad %float %DaSqd
|
|
%154 = OpFDiv %float %152 %153
|
|
OpStore %_9_guarded_divide %154
|
|
%155 = OpLoad %float %_9_guarded_divide
|
|
OpReturnValue %155
|
|
%78 = OpLabel
|
|
%156 = OpLoad %v2float %18
|
|
%157 = OpCompositeExtract %float %156 0
|
|
%158 = OpLoad %v2float %17
|
|
%159 = OpCompositeExtract %float %158 1
|
|
%160 = OpLoad %v2float %17
|
|
%161 = OpCompositeExtract %float %160 0
|
|
%162 = OpFMul %float %float_2 %161
|
|
%163 = OpFSub %float %159 %162
|
|
%164 = OpFAdd %float %163 %float_1
|
|
%165 = OpFMul %float %157 %164
|
|
%166 = OpLoad %v2float %17
|
|
%167 = OpCompositeExtract %float %166 0
|
|
%168 = OpFAdd %float %165 %167
|
|
%170 = OpLoad %v2float %18
|
|
%171 = OpCompositeExtract %float %170 1
|
|
%172 = OpLoad %v2float %18
|
|
%173 = OpCompositeExtract %float %172 0
|
|
%174 = OpFMul %float %171 %173
|
|
%169 = OpExtInst %float %1 Sqrt %174
|
|
%175 = OpLoad %v2float %17
|
|
%176 = OpCompositeExtract %float %175 1
|
|
%177 = OpLoad %v2float %17
|
|
%178 = OpCompositeExtract %float %177 0
|
|
%179 = OpFMul %float %float_2 %178
|
|
%180 = OpFSub %float %176 %179
|
|
%181 = OpFMul %float %169 %180
|
|
%182 = OpFSub %float %168 %181
|
|
%183 = OpLoad %v2float %18
|
|
%184 = OpCompositeExtract %float %183 1
|
|
%185 = OpLoad %v2float %17
|
|
%186 = OpCompositeExtract %float %185 0
|
|
%187 = OpFMul %float %184 %186
|
|
%188 = OpFSub %float %182 %187
|
|
OpReturnValue %188
|
|
%79 = OpLabel
|
|
OpBranch %29
|
|
%29 = OpLabel
|
|
OpUnreachable
|
|
OpFunctionEnd
|
|
%main = OpFunction %void None %190
|
|
%191 = OpLabel
|
|
%_0_blend_soft_light = OpVariable %_ptr_Function_v4float Function
|
|
%198 = OpVariable %_ptr_Function_v4float Function
|
|
%205 = OpVariable %_ptr_Function_v2float Function
|
|
%208 = OpVariable %_ptr_Function_v2float Function
|
|
%212 = OpVariable %_ptr_Function_v2float Function
|
|
%215 = OpVariable %_ptr_Function_v2float Function
|
|
%219 = OpVariable %_ptr_Function_v2float Function
|
|
%222 = OpVariable %_ptr_Function_v2float Function
|
|
%194 = OpLoad %v4float %dst
|
|
%195 = OpCompositeExtract %float %194 3
|
|
%197 = OpFOrdEqual %bool %195 %float_0
|
|
OpSelectionMerge %201 None
|
|
OpBranchConditional %197 %199 %200
|
|
%199 = OpLabel
|
|
%202 = OpLoad %v4float %src
|
|
OpStore %198 %202
|
|
OpBranch %201
|
|
%200 = OpLabel
|
|
%203 = OpLoad %v4float %src
|
|
%204 = OpVectorShuffle %v2float %203 %203 0 3
|
|
OpStore %205 %204
|
|
%206 = OpLoad %v4float %dst
|
|
%207 = OpVectorShuffle %v2float %206 %206 0 3
|
|
OpStore %208 %207
|
|
%209 = OpFunctionCall %float %_soft_light_component %205 %208
|
|
%210 = OpLoad %v4float %src
|
|
%211 = OpVectorShuffle %v2float %210 %210 1 3
|
|
OpStore %212 %211
|
|
%213 = OpLoad %v4float %dst
|
|
%214 = OpVectorShuffle %v2float %213 %213 1 3
|
|
OpStore %215 %214
|
|
%216 = OpFunctionCall %float %_soft_light_component %212 %215
|
|
%217 = OpLoad %v4float %src
|
|
%218 = OpVectorShuffle %v2float %217 %217 2 3
|
|
OpStore %219 %218
|
|
%220 = OpLoad %v4float %dst
|
|
%221 = OpVectorShuffle %v2float %220 %220 2 3
|
|
OpStore %222 %221
|
|
%223 = OpFunctionCall %float %_soft_light_component %219 %222
|
|
%224 = OpLoad %v4float %src
|
|
%225 = OpCompositeExtract %float %224 3
|
|
%226 = OpLoad %v4float %src
|
|
%227 = OpCompositeExtract %float %226 3
|
|
%228 = OpFSub %float %float_1 %227
|
|
%229 = OpLoad %v4float %dst
|
|
%230 = OpCompositeExtract %float %229 3
|
|
%231 = OpFMul %float %228 %230
|
|
%232 = OpFAdd %float %225 %231
|
|
%233 = OpCompositeConstruct %v4float %209 %216 %223 %232
|
|
OpStore %198 %233
|
|
OpBranch %201
|
|
%201 = OpLabel
|
|
%234 = OpLoad %v4float %198
|
|
OpStore %_0_blend_soft_light %234
|
|
%235 = OpLoad %v4float %_0_blend_soft_light
|
|
OpStore %sk_FragColor %235
|
|
OpReturn
|
|
OpFunctionEnd
|