skia2/tests/sksl/shared/golden/SwizzleBoolConstants.asm.frag
John Stiles cd80689192 Deduplicate vector constants in SPIR-V output.
Many of our shaders generate the same vector constant dozens of times,
e.g. Gaussian blur uses float4(1) repeatedly. This change avoids
re-emitting redundant vector constants.

Change-Id: I22a71cd8b2783fb997f52d485b49031f64ca6d96
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/350701
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
2021-01-06 21:05:50 +00:00

233 lines
7.8 KiB
JavaScript

OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450
OpEntryPoint Fragment %main "main" %sk_FragColor %sk_Clockwise
OpExecutionMode %main OriginUpperLeft
OpName %sk_FragColor "sk_FragColor"
OpName %sk_Clockwise "sk_Clockwise"
OpName %main "main"
OpName %v "v"
OpName %result "result"
OpDecorate %sk_FragColor RelaxedPrecision
OpDecorate %sk_FragColor Location 0
OpDecorate %sk_FragColor Index 0
OpDecorate %sk_Clockwise RelaxedPrecision
OpDecorate %sk_Clockwise BuiltIn FrontFacing
OpDecorate %21 RelaxedPrecision
OpDecorate %25 RelaxedPrecision
OpDecorate %32 RelaxedPrecision
OpDecorate %35 RelaxedPrecision
OpDecorate %38 RelaxedPrecision
OpDecorate %45 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %52 RelaxedPrecision
OpDecorate %55 RelaxedPrecision
OpDecorate %58 RelaxedPrecision
OpDecorate %63 RelaxedPrecision
OpDecorate %66 RelaxedPrecision
OpDecorate %69 RelaxedPrecision
OpDecorate %70 RelaxedPrecision
OpDecorate %76 RelaxedPrecision
OpDecorate %80 RelaxedPrecision
OpDecorate %83 RelaxedPrecision
OpDecorate %88 RelaxedPrecision
OpDecorate %90 RelaxedPrecision
OpDecorate %95 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %100 RelaxedPrecision
OpDecorate %102 RelaxedPrecision
OpDecorate %105 RelaxedPrecision
OpDecorate %108 RelaxedPrecision
OpDecorate %114 RelaxedPrecision
OpDecorate %119 RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %127 RelaxedPrecision
OpDecorate %132 RelaxedPrecision
OpDecorate %135 RelaxedPrecision
OpDecorate %139 RelaxedPrecision
OpDecorate %148 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
%void = OpTypeVoid
%11 = OpTypeFunction %void
%v4bool = OpTypeVector %bool 4
%_ptr_Function_v4bool = OpTypePointer Function %v4bool
%float_1 = OpConstant %float 1
%true = OpConstantTrue %bool
%v2bool = OpTypeVector %bool 2
%false = OpConstantFalse %bool
%v3bool = OpTypeVector %bool 3
%_ptr_Function_v4float = OpTypePointer Function %v4float
%145 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%float_0 = OpConstant %float 0
%147 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
%v = OpVariable %_ptr_Function_v4bool Function
%result = OpVariable %_ptr_Function_v4bool Function
%140 = OpVariable %_ptr_Function_v4float Function
%16 = OpExtInst %float %1 Sqrt %float_1
%18 = OpFOrdEqual %bool %16 %float_1
%19 = OpCompositeConstruct %v4bool %18 %18 %18 %18
OpStore %v %19
%21 = OpLoad %v4bool %v
%22 = OpCompositeExtract %bool %21 0
%24 = OpCompositeConstruct %v4bool %22 %true %true %true
OpStore %result %24
%25 = OpLoad %v4bool %v
%26 = OpVectorShuffle %v2bool %25 %25 0 1
%28 = OpCompositeExtract %bool %26 0
%29 = OpCompositeExtract %bool %26 1
%31 = OpCompositeConstruct %v4bool %28 %29 %false %true
OpStore %result %31
%32 = OpLoad %v4bool %v
%33 = OpCompositeExtract %bool %32 0
%34 = OpCompositeConstruct %v4bool %33 %true %true %false
OpStore %result %34
%35 = OpLoad %v4bool %v
%36 = OpCompositeExtract %bool %35 1
%37 = OpCompositeConstruct %v4bool %false %36 %true %true
OpStore %result %37
%38 = OpLoad %v4bool %v
%39 = OpVectorShuffle %v3bool %38 %38 0 1 2
%41 = OpCompositeExtract %bool %39 0
%42 = OpCompositeExtract %bool %39 1
%43 = OpCompositeExtract %bool %39 2
%44 = OpCompositeConstruct %v4bool %41 %42 %43 %true
OpStore %result %44
%45 = OpLoad %v4bool %v
%46 = OpVectorShuffle %v2bool %45 %45 0 1
%47 = OpCompositeExtract %bool %46 0
%48 = OpCompositeExtract %bool %46 1
%49 = OpCompositeConstruct %v4bool %47 %48 %true %true
OpStore %result %49
%50 = OpLoad %v4bool %v
%51 = OpCompositeExtract %bool %50 0
%52 = OpLoad %v4bool %v
%53 = OpCompositeExtract %bool %52 2
%54 = OpCompositeConstruct %v4bool %51 %false %53 %true
OpStore %result %54
%55 = OpLoad %v4bool %v
%56 = OpCompositeExtract %bool %55 0
%57 = OpCompositeConstruct %v4bool %56 %true %false %false
OpStore %result %57
%58 = OpLoad %v4bool %v
%59 = OpVectorShuffle %v2bool %58 %58 1 2
%60 = OpCompositeExtract %bool %59 0
%61 = OpCompositeExtract %bool %59 1
%62 = OpCompositeConstruct %v4bool %true %60 %61 %false
OpStore %result %62
%63 = OpLoad %v4bool %v
%64 = OpCompositeExtract %bool %63 1
%65 = OpCompositeConstruct %v4bool %false %64 %true %false
OpStore %result %65
%66 = OpLoad %v4bool %v
%67 = OpCompositeExtract %bool %66 2
%68 = OpCompositeConstruct %v4bool %true %true %67 %false
OpStore %result %68
%69 = OpLoad %v4bool %v
OpStore %result %69
%70 = OpLoad %v4bool %v
%71 = OpVectorShuffle %v3bool %70 %70 0 1 2
%72 = OpCompositeExtract %bool %71 0
%73 = OpCompositeExtract %bool %71 1
%74 = OpCompositeExtract %bool %71 2
%75 = OpCompositeConstruct %v4bool %72 %73 %74 %true
OpStore %result %75
%76 = OpLoad %v4bool %v
%77 = OpVectorShuffle %v2bool %76 %76 0 1
%78 = OpCompositeExtract %bool %77 0
%79 = OpCompositeExtract %bool %77 1
%80 = OpLoad %v4bool %v
%81 = OpCompositeExtract %bool %80 3
%82 = OpCompositeConstruct %v4bool %78 %79 %false %81
OpStore %result %82
%83 = OpLoad %v4bool %v
%84 = OpVectorShuffle %v2bool %83 %83 0 1
%85 = OpCompositeExtract %bool %84 0
%86 = OpCompositeExtract %bool %84 1
%87 = OpCompositeConstruct %v4bool %85 %86 %true %false
OpStore %result %87
%88 = OpLoad %v4bool %v
%89 = OpCompositeExtract %bool %88 0
%90 = OpLoad %v4bool %v
%91 = OpVectorShuffle %v2bool %90 %90 2 3
%92 = OpCompositeExtract %bool %91 0
%93 = OpCompositeExtract %bool %91 1
%94 = OpCompositeConstruct %v4bool %89 %true %92 %93
OpStore %result %94
%95 = OpLoad %v4bool %v
%96 = OpCompositeExtract %bool %95 0
%97 = OpLoad %v4bool %v
%98 = OpCompositeExtract %bool %97 2
%99 = OpCompositeConstruct %v4bool %96 %false %98 %true
OpStore %result %99
%100 = OpLoad %v4bool %v
%101 = OpCompositeExtract %bool %100 0
%102 = OpLoad %v4bool %v
%103 = OpCompositeExtract %bool %102 3
%104 = OpCompositeConstruct %v4bool %101 %true %true %103
OpStore %result %104
%105 = OpLoad %v4bool %v
%106 = OpCompositeExtract %bool %105 0
%107 = OpCompositeConstruct %v4bool %106 %true %false %true
OpStore %result %107
%108 = OpLoad %v4bool %v
%109 = OpVectorShuffle %v3bool %108 %108 1 2 3
%110 = OpCompositeExtract %bool %109 0
%111 = OpCompositeExtract %bool %109 1
%112 = OpCompositeExtract %bool %109 2
%113 = OpCompositeConstruct %v4bool %true %110 %111 %112
OpStore %result %113
%114 = OpLoad %v4bool %v
%115 = OpVectorShuffle %v2bool %114 %114 1 2
%116 = OpCompositeExtract %bool %115 0
%117 = OpCompositeExtract %bool %115 1
%118 = OpCompositeConstruct %v4bool %false %116 %117 %true
OpStore %result %118
%119 = OpLoad %v4bool %v
%120 = OpCompositeExtract %bool %119 1
%121 = OpLoad %v4bool %v
%122 = OpCompositeExtract %bool %121 3
%123 = OpCompositeConstruct %v4bool %false %120 %true %122
OpStore %result %123
%124 = OpLoad %v4bool %v
%125 = OpCompositeExtract %bool %124 1
%126 = OpCompositeConstruct %v4bool %true %125 %true %true
OpStore %result %126
%127 = OpLoad %v4bool %v
%128 = OpVectorShuffle %v2bool %127 %127 2 3
%129 = OpCompositeExtract %bool %128 0
%130 = OpCompositeExtract %bool %128 1
%131 = OpCompositeConstruct %v4bool %false %false %129 %130
OpStore %result %131
%132 = OpLoad %v4bool %v
%133 = OpCompositeExtract %bool %132 2
%134 = OpCompositeConstruct %v4bool %false %false %133 %true
OpStore %result %134
%135 = OpLoad %v4bool %v
%136 = OpCompositeExtract %bool %135 3
%137 = OpCompositeConstruct %v4bool %false %true %true %136
OpStore %result %137
%139 = OpLoad %v4bool %result
%138 = OpAny %bool %139
OpSelectionMerge %144 None
OpBranchConditional %138 %142 %143
%142 = OpLabel
OpStore %140 %145
OpBranch %144
%143 = OpLabel
OpStore %140 %147
OpBranch %144
%144 = OpLabel
%148 = OpLoad %v4float %140
OpStore %sk_FragColor %148
OpReturn
OpFunctionEnd