skia2/tests/sksl/blend/BlendHardLight.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

219 lines
7.1 KiB
JavaScript

### Compilation failed:
error: SPIR-V validation error: Variable must be decorated with a location
%src = OpVariable %_ptr_Input_v4float Input
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 %_blend_overlay_component "_blend_overlay_component"
OpName %blend_overlay "blend_overlay"
OpName %result "result"
OpName %main "main"
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 %22 RelaxedPrecision
OpDecorate %24 RelaxedPrecision
OpDecorate %25 RelaxedPrecision
OpDecorate %33 RelaxedPrecision
OpDecorate %35 RelaxedPrecision
OpDecorate %36 RelaxedPrecision
OpDecorate %38 RelaxedPrecision
OpDecorate %39 RelaxedPrecision
OpDecorate %41 RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %44 RelaxedPrecision
OpDecorate %46 RelaxedPrecision
OpDecorate %48 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %52 RelaxedPrecision
OpDecorate %54 RelaxedPrecision
OpDecorate %55 RelaxedPrecision
OpDecorate %56 RelaxedPrecision
OpDecorate %57 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
OpDecorate %71 RelaxedPrecision
OpDecorate %74 RelaxedPrecision
OpDecorate %78 RelaxedPrecision
OpDecorate %81 RelaxedPrecision
OpDecorate %85 RelaxedPrecision
OpDecorate %88 RelaxedPrecision
OpDecorate %90 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %93 RelaxedPrecision
OpDecorate %94 RelaxedPrecision
OpDecorate %96 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %99 RelaxedPrecision
OpDecorate %101 RelaxedPrecision
OpDecorate %103 RelaxedPrecision
OpDecorate %105 RelaxedPrecision
OpDecorate %107 RelaxedPrecision
OpDecorate %109 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %112 RelaxedPrecision
OpDecorate %114 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %119 RelaxedPrecision
OpDecorate %121 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
%16 = OpTypeFunction %float %_ptr_Function_v2float %_ptr_Function_v2float
%float_2 = OpConstant %float 2
%_ptr_Function_float = OpTypePointer Function %float
%_ptr_Function_v4float = OpTypePointer Function %v4float
%58 = OpTypeFunction %v4float %_ptr_Function_v4float %_ptr_Function_v4float
%float_1 = OpConstant %float 1
%v3float = OpTypeVector %float 3
%void = OpTypeVoid
%117 = OpTypeFunction %void
%_blend_overlay_component = OpFunction %float None %16
%18 = OpFunctionParameter %_ptr_Function_v2float
%19 = OpFunctionParameter %_ptr_Function_v2float
%20 = OpLabel
%28 = OpVariable %_ptr_Function_float Function
%22 = OpLoad %v2float %19
%23 = OpCompositeExtract %float %22 0
%24 = OpFMul %float %float_2 %23
%25 = OpLoad %v2float %19
%26 = OpCompositeExtract %float %25 1
%27 = OpFOrdLessThanEqual %bool %24 %26
OpSelectionMerge %32 None
OpBranchConditional %27 %30 %31
%30 = OpLabel
%33 = OpLoad %v2float %18
%34 = OpCompositeExtract %float %33 0
%35 = OpFMul %float %float_2 %34
%36 = OpLoad %v2float %19
%37 = OpCompositeExtract %float %36 0
%38 = OpFMul %float %35 %37
OpStore %28 %38
OpBranch %32
%31 = OpLabel
%39 = OpLoad %v2float %18
%40 = OpCompositeExtract %float %39 1
%41 = OpLoad %v2float %19
%42 = OpCompositeExtract %float %41 1
%43 = OpFMul %float %40 %42
%44 = OpLoad %v2float %19
%45 = OpCompositeExtract %float %44 1
%46 = OpLoad %v2float %19
%47 = OpCompositeExtract %float %46 0
%48 = OpFSub %float %45 %47
%49 = OpFMul %float %float_2 %48
%50 = OpLoad %v2float %18
%51 = OpCompositeExtract %float %50 1
%52 = OpLoad %v2float %18
%53 = OpCompositeExtract %float %52 0
%54 = OpFSub %float %51 %53
%55 = OpFMul %float %49 %54
%56 = OpFSub %float %43 %55
OpStore %28 %56
OpBranch %32
%32 = OpLabel
%57 = OpLoad %float %28
OpReturnValue %57
OpFunctionEnd
%blend_overlay = OpFunction %v4float None %58
%60 = OpFunctionParameter %_ptr_Function_v4float
%61 = OpFunctionParameter %_ptr_Function_v4float
%62 = OpLabel
%result = OpVariable %_ptr_Function_v4float Function
%66 = OpVariable %_ptr_Function_v2float Function
%69 = OpVariable %_ptr_Function_v2float Function
%73 = OpVariable %_ptr_Function_v2float Function
%76 = OpVariable %_ptr_Function_v2float Function
%80 = OpVariable %_ptr_Function_v2float Function
%83 = OpVariable %_ptr_Function_v2float Function
%64 = OpLoad %v4float %60
%65 = OpVectorShuffle %v2float %64 %64 0 3
OpStore %66 %65
%67 = OpLoad %v4float %61
%68 = OpVectorShuffle %v2float %67 %67 0 3
OpStore %69 %68
%70 = OpFunctionCall %float %_blend_overlay_component %66 %69
%71 = OpLoad %v4float %60
%72 = OpVectorShuffle %v2float %71 %71 1 3
OpStore %73 %72
%74 = OpLoad %v4float %61
%75 = OpVectorShuffle %v2float %74 %74 1 3
OpStore %76 %75
%77 = OpFunctionCall %float %_blend_overlay_component %73 %76
%78 = OpLoad %v4float %60
%79 = OpVectorShuffle %v2float %78 %78 2 3
OpStore %80 %79
%81 = OpLoad %v4float %61
%82 = OpVectorShuffle %v2float %81 %81 2 3
OpStore %83 %82
%84 = OpFunctionCall %float %_blend_overlay_component %80 %83
%85 = OpLoad %v4float %60
%86 = OpCompositeExtract %float %85 3
%88 = OpLoad %v4float %60
%89 = OpCompositeExtract %float %88 3
%90 = OpFSub %float %float_1 %89
%91 = OpLoad %v4float %61
%92 = OpCompositeExtract %float %91 3
%93 = OpFMul %float %90 %92
%94 = OpFAdd %float %86 %93
%95 = OpCompositeConstruct %v4float %70 %77 %84 %94
OpStore %result %95
%96 = OpLoad %v4float %result
%97 = OpVectorShuffle %v3float %96 %96 0 1 2
%99 = OpLoad %v4float %61
%100 = OpVectorShuffle %v3float %99 %99 0 1 2
%101 = OpLoad %v4float %60
%102 = OpCompositeExtract %float %101 3
%103 = OpFSub %float %float_1 %102
%104 = OpVectorTimesScalar %v3float %100 %103
%105 = OpLoad %v4float %60
%106 = OpVectorShuffle %v3float %105 %105 0 1 2
%107 = OpLoad %v4float %61
%108 = OpCompositeExtract %float %107 3
%109 = OpFSub %float %float_1 %108
%110 = OpVectorTimesScalar %v3float %106 %109
%111 = OpFAdd %v3float %104 %110
%112 = OpFAdd %v3float %97 %111
%113 = OpLoad %v4float %result
%114 = OpVectorShuffle %v4float %113 %112 4 5 6 3
OpStore %result %114
%115 = OpLoad %v4float %result
OpReturnValue %115
OpFunctionEnd
%main = OpFunction %void None %117
%118 = OpLabel
%120 = OpVariable %_ptr_Function_v4float Function
%122 = OpVariable %_ptr_Function_v4float Function
%119 = OpLoad %v4float %dst
OpStore %120 %119
%121 = OpLoad %v4float %src
OpStore %122 %121
%123 = OpFunctionCall %v4float %blend_overlay %120 %122
OpStore %sk_FragColor %123
OpReturn
OpFunctionEnd
1 error