From acb091f71d6bf1e243115a6142ea3e389e98b3ce Mon Sep 17 00:00:00 2001 From: John Stiles Date: Wed, 6 Jan 2021 11:57:58 -0500 Subject: [PATCH] Avoid emitting duplicate constant values in SPIR-V. Previously, we had constant-value deduplication, based on the SkSL type of the constant. However, we were still generating redundant constants, because we would emit a separate constant for Float(n) and Half(n), or Int(n) and Short(n), even though we generate the exact same instruction for these constants. We now deduplicate based on the type's number-kind, separating constant literals into three categories: floats, signed ints, and unsigned ints. This better matches our type-handling in getActualType. Change-Id: I5777d4b3d567839b7aa72dc8de76908c18fc387e Reviewed-on: https://skia-review.googlesource.com/c/skia/+/350031 Reviewed-by: Ethan Nicholas Commit-Queue: Ethan Nicholas Auto-Submit: John Stiles --- src/sksl/SkSLSPIRVCodeGenerator.cpp | 54 +- src/sksl/SkSLSPIRVCodeGenerator.h | 22 +- tests/sksl/shared/golden/Assignment.asm.frag | 212 ++- .../sksl/shared/golden/FloatFolding.asm.frag | 64 +- .../sksl/shared/golden/GaussianBlur.asm.frag | 1253 ++++++++--------- .../golden/GeometricIntrinsics.asm.frag | 5 +- tests/sksl/shared/golden/Hex.asm.frag | 5 +- tests/sksl/shared/golden/IntFolding.asm.frag | 106 +- .../golden/MixedTypeCommaOperator.asm.frag | 19 +- tests/sksl/shared/golden/OutParams.asm.frag | 137 +- ...chWithConditionalBreakInsideBlock.asm.frag | 3 +- .../golden/SwitchContainingDeadCode.asm.frag | 3 +- .../golden/SwizzleBoolConstants.asm.frag | 13 +- .../shared/golden/SwizzleConstants.asm.frag | 331 +++-- .../TernaryAsLValueFoldableTest.asm.frag | 5 +- .../sksl/shared/golden/VectorFolding.asm.frag | 456 +++--- 16 files changed, 1309 insertions(+), 1379 deletions(-) diff --git a/src/sksl/SkSLSPIRVCodeGenerator.cpp b/src/sksl/SkSLSPIRVCodeGenerator.cpp index b14b5bab40..49355e2626 100644 --- a/src/sksl/SkSLSPIRVCodeGenerator.cpp +++ b/src/sksl/SkSLSPIRVCodeGenerator.cpp @@ -2592,53 +2592,31 @@ SpvId SPIRVCodeGenerator::writeBoolLiteral(const BoolLiteral& b) { } SpvId SPIRVCodeGenerator::writeIntLiteral(const IntLiteral& i) { - const Type& type = i.type(); - ConstantType constantType; - if (type == *fContext.fInt_Type || type.typeKind() == Type::TypeKind::kEnum) { - constantType = ConstantType::kInt; - } else if (type == *fContext.fUInt_Type) { - constantType = ConstantType::kUInt; - } else if (type == *fContext.fShort_Type || type == *fContext.fByte_Type) { - constantType = ConstantType::kShort; - } else if (type == *fContext.fUShort_Type || type == *fContext.fUByte_Type) { - constantType = ConstantType::kUShort; - } else { - SkASSERT(false); - } - std::pair key(i.value(), constantType); - auto entry = fNumberConstants.find(key); - if (entry == fNumberConstants.end()) { + ConstantValuePair key(i.value(), i.type().numberKind()); + auto [iter, newlyCreated] = fNumberConstants.insert({key, (SpvId)-1}); + if (newlyCreated) { SpvId result = this->nextId(); - this->writeInstruction(SpvOpConstant, this->getType(type), result, (SpvId) i.value(), + this->writeInstruction(SpvOpConstant, this->getType(i.type()), result, (SpvId) i.value(), fConstantBuffer); - fNumberConstants[key] = result; - return result; + iter->second = result; } - return entry->second; + return iter->second; } SpvId SPIRVCodeGenerator::writeFloatLiteral(const FloatLiteral& f) { - const Type& type = f.type(); - ConstantType constantType; - if (type == *fContext.fHalf_Type) { - constantType = ConstantType::kHalf; - } else { - constantType = ConstantType::kFloat; - } - float value = (float) f.value(); - std::pair key(f.value(), constantType); - auto entry = fNumberConstants.find(key); - if (entry == fNumberConstants.end()) { + ConstantValuePair key(f.value(), f.type().numberKind()); + auto [iter, newlyCreated] = fNumberConstants.insert({key, (SpvId)-1}); + if (newlyCreated) { SpvId result = this->nextId(); - uint32_t bits; - SkASSERT(sizeof(bits) == sizeof(value)); - memcpy(&bits, &value, sizeof(bits)); - this->writeInstruction(SpvOpConstant, this->getType(type), result, bits, + float value = f.value(); + uint32_t valueBits; + static_assert(sizeof(valueBits) == sizeof(value)); + memcpy(&valueBits, &value, sizeof(valueBits)); + this->writeInstruction(SpvOpConstant, this->getType(f.type()), result, valueBits, fConstantBuffer); - fNumberConstants[key] = result; - return result; + iter->second = result; } - return entry->second; + return iter->second; } SpvId SPIRVCodeGenerator::writeFunctionStart(const FunctionDeclaration& f, OutputStream& out) { diff --git a/src/sksl/SkSLSPIRVCodeGenerator.h b/src/sksl/SkSLSPIRVCodeGenerator.h index 8f3d862bbd..a77516044e 100644 --- a/src/sksl/SkSLSPIRVCodeGenerator.h +++ b/src/sksl/SkSLSPIRVCodeGenerator.h @@ -42,9 +42,9 @@ #include "src/sksl/spirv.h" union ConstantValue { - ConstantValue(int64_t i) + ConstantValue(SKSL_INT i) : fInt(i) { - SkASSERT(sizeof(*this) == sizeof(int64_t)); + static_assert(sizeof(*this) == sizeof(SKSL_INT)); } ConstantValue(SKSL_FLOAT f) { @@ -56,25 +56,17 @@ union ConstantValue { return fInt == other.fInt; } - int64_t fInt; + SKSL_INT fInt; SKSL_FLOAT fFloat; }; -enum class ConstantType { - kInt, - kUInt, - kShort, - kUShort, - kFloat, - kDouble, - kHalf, -}; +using ConstantValuePair = std::pair; namespace std { template <> -struct hash> { - size_t operator()(const std::pair& key) const { +struct hash { + size_t operator()(const ConstantValuePair& key) const { return key.first.fInt ^ (int) key.second; } }; @@ -390,7 +382,7 @@ private: SpvId fBoolTrue; SpvId fBoolFalse; - std::unordered_map, SpvId> fNumberConstants; + std::unordered_map fNumberConstants; bool fSetupFragPosition; // label of the current block, or 0 if we are not in a block SpvId fCurrentBlock; diff --git a/tests/sksl/shared/golden/Assignment.asm.frag b/tests/sksl/shared/golden/Assignment.asm.frag index 5f6daa62bc..5e56b8471d 100644 --- a/tests/sksl/shared/golden/Assignment.asm.frag +++ b/tests/sksl/shared/golden/Assignment.asm.frag @@ -38,12 +38,12 @@ OpMemberDecorate %S 2 Offset 96 OpMemberDecorate %S 2 RelaxedPrecision OpMemberDecorate %S 3 Offset 112 OpMemberDecorate %S 3 RelaxedPrecision -OpDecorate %85 RelaxedPrecision -OpDecorate %89 RelaxedPrecision -OpDecorate %126 RelaxedPrecision -OpDecorate %143 RelaxedPrecision -OpDecorate %154 RelaxedPrecision -OpDecorate %156 RelaxedPrecision +OpDecorate %83 RelaxedPrecision +OpDecorate %87 RelaxedPrecision +OpDecorate %116 RelaxedPrecision +OpDecorate %133 RelaxedPrecision +OpDecorate %144 RelaxedPrecision +OpDecorate %146 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float @@ -86,9 +86,7 @@ OpDecorate %156 RelaxedPrecision %_ptr_Function_mat2v4float = OpTypePointer Function %mat2v4float %_arr_v4float_int_1 = OpTypeArray %v4float %int_1 %_ptr_Function__arr_v4float_int_1 = OpTypePointer Function %_arr_v4float_int_1 -%float_0_0 = OpConstant %float 0 -%float_1_0 = OpConstant %float 1 -%67 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 +%66 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %int_5 = OpConstant %int 5 %_arr_float_int_5 = OpTypeArray %float %int_5 %_arr_v4float_int_5 = OpTypeArray %v4float %int_5 @@ -96,24 +94,16 @@ OpDecorate %156 RelaxedPrecision %_ptr_Function_S = OpTypePointer Function %S %float_9 = OpConstant %float 9 %v3float = OpTypeVector %float 3 -%80 = OpConstantComposite %v3float %float_9 %float_9 %float_9 -%86 = OpConstantComposite %v2float %float_5 %float_5 -%float_2_0 = OpConstant %float 2 -%93 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 -%95 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 -%97 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 -%98 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 +%78 = OpConstantComposite %v3float %float_9 %float_9 %float_9 +%84 = OpConstantComposite %v2float %float_5 %float_5 +%90 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%92 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 +%94 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%95 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4 %mat3v3float = OpTypeMatrix %v3float 3 %_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float -%float_3_0 = OpConstant %float 3 -%float_4_0 = OpConstant %float 4 -%float_5_0 = OpConstant %float 5 -%float_6_0 = OpConstant %float 6 -%float_7_0 = OpConstant %float 7 -%float_8_0 = OpConstant %float 8 -%float_9_0 = OpConstant %float 9 %_ptr_Function_v3float = OpTypePointer Function %v3float -%146 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%136 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %main = OpFunction %void None %11 %12 = OpLabel %x = OpVariable %_ptr_Function_v4float Function @@ -122,7 +112,7 @@ OpDecorate %156 RelaxedPrecision %ah2x4 = OpVariable %_ptr_Function__arr_mat2v4float_int_1 Function %af4 = OpVariable %_ptr_Function__arr_v4float_int_1 Function %s = OpVariable %_ptr_Function_S Function -%108 = OpVariable %_ptr_Function_mat3v3float Function +%105 = OpVariable %_ptr_Function_mat3v3float Function %16 = OpAccessChain %_ptr_Function_float %x %int_3 OpStore %16 %float_0 %22 = OpLoad %v4float %x @@ -143,92 +133,92 @@ OpStore %57 %int_0 %59 = OpLoad %int %58 %60 = OpAccessChain %_ptr_Function_int %ai %59 OpStore %60 %int_0 -%65 = OpAccessChain %_ptr_Function_v4float %af4 %int_0 -%66 = OpAccessChain %_ptr_Function_float %65 %int_0 -OpStore %66 %float_0_0 -%69 = OpAccessChain %_ptr_Function_v4float %af4 %int_0 -%70 = OpLoad %v4float %69 -%71 = OpVectorShuffle %v4float %70 %67 6 4 7 5 -OpStore %69 %71 -%78 = OpAccessChain %_ptr_Function_float %s %int_0 -OpStore %78 %float_0_0 -%79 = OpAccessChain %_ptr_Function_float %s %int_1 %int_1 -OpStore %79 %float_0_0 -%83 = OpAccessChain %_ptr_Function_v4float %s %int_2 -%84 = OpLoad %v4float %83 -%85 = OpVectorShuffle %v4float %84 %80 5 6 4 3 -OpStore %83 %85 -%87 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_2 -%88 = OpLoad %v4float %87 -%89 = OpVectorShuffle %v4float %88 %86 0 4 2 5 -OpStore %87 %89 -%90 = OpAccessChain %_ptr_Function_float %s %int_0 -OpStore %90 %float_1_0 -%92 = OpAccessChain %_ptr_Function_float %s %int_1 %int_0 -OpStore %92 %float_2_0 -%94 = OpAccessChain %_ptr_Function_v4float %s %int_2 -OpStore %94 %93 -%96 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0 -OpStore %96 %95 -OpStore %sk_FragColor %97 -%99 = OpCompositeExtract %int %98 0 -%100 = OpConvertSToF %float %99 -%101 = OpCompositeExtract %int %98 1 -%102 = OpConvertSToF %float %101 -%103 = OpCompositeExtract %int %98 2 -%104 = OpConvertSToF %float %103 -%105 = OpCompositeExtract %int %98 3 -%106 = OpConvertSToF %float %105 -%107 = OpCompositeConstruct %v4float %100 %102 %104 %106 -OpStore %sk_FragColor %107 -%119 = OpCompositeConstruct %v3float %float_1_0 %float_2_0 %float_3_0 -%120 = OpCompositeConstruct %v3float %float_4_0 %float_5_0 %float_6_0 -%121 = OpCompositeConstruct %v3float %float_7_0 %float_8_0 %float_9_0 -%118 = OpCompositeConstruct %mat3v3float %119 %120 %121 -OpStore %108 %118 -%122 = OpAccessChain %_ptr_Function_v3float %108 %int_0 -%124 = OpLoad %v3float %122 -%125 = OpVectorShuffle %v4float %124 %124 0 0 1 2 -OpStore %sk_FragColor %125 -%126 = OpLoad %v4float %x -OpStore %sk_FragColor %126 -%128 = OpAccessChain %_ptr_Function_int %ai %int_0 -%129 = OpLoad %int %128 -%127 = OpConvertSToF %float %129 -%130 = OpCompositeConstruct %v4float %127 %127 %127 %127 -OpStore %sk_FragColor %130 -%131 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0 -%132 = OpLoad %v4int %131 -%133 = OpCompositeExtract %int %132 0 -%134 = OpConvertSToF %float %133 -%135 = OpCompositeExtract %int %132 1 -%136 = OpConvertSToF %float %135 -%137 = OpCompositeExtract %int %132 2 -%138 = OpConvertSToF %float %137 -%139 = OpCompositeExtract %int %132 3 -%140 = OpConvertSToF %float %139 -%141 = OpCompositeConstruct %v4float %134 %136 %138 %140 -OpStore %sk_FragColor %141 -%142 = OpAccessChain %_ptr_Function_v4float %ah2x4 %int_0 %int_0 -%143 = OpLoad %v4float %142 -OpStore %sk_FragColor %143 -%144 = OpAccessChain %_ptr_Function_v4float %af4 %int_0 -%145 = OpLoad %v4float %144 -OpStore %sk_FragColor %145 +%64 = OpAccessChain %_ptr_Function_v4float %af4 %int_0 +%65 = OpAccessChain %_ptr_Function_float %64 %int_0 +OpStore %65 %float_0 +%67 = OpAccessChain %_ptr_Function_v4float %af4 %int_0 +%68 = OpLoad %v4float %67 +%69 = OpVectorShuffle %v4float %68 %66 6 4 7 5 +OpStore %67 %69 +%76 = OpAccessChain %_ptr_Function_float %s %int_0 +OpStore %76 %float_0 +%77 = OpAccessChain %_ptr_Function_float %s %int_1 %int_1 +OpStore %77 %float_0 +%81 = OpAccessChain %_ptr_Function_v4float %s %int_2 +%82 = OpLoad %v4float %81 +%83 = OpVectorShuffle %v4float %82 %78 5 6 4 3 +OpStore %81 %83 +%85 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_2 +%86 = OpLoad %v4float %85 +%87 = OpVectorShuffle %v4float %86 %84 0 4 2 5 +OpStore %85 %87 +%88 = OpAccessChain %_ptr_Function_float %s %int_0 +OpStore %88 %float_1 +%89 = OpAccessChain %_ptr_Function_float %s %int_1 %int_0 +OpStore %89 %float_2 +%91 = OpAccessChain %_ptr_Function_v4float %s %int_2 +OpStore %91 %90 +%93 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0 +OpStore %93 %92 +OpStore %sk_FragColor %94 +%96 = OpCompositeExtract %int %95 0 +%97 = OpConvertSToF %float %96 +%98 = OpCompositeExtract %int %95 1 +%99 = OpConvertSToF %float %98 +%100 = OpCompositeExtract %int %95 2 +%101 = OpConvertSToF %float %100 +%102 = OpCompositeExtract %int %95 3 +%103 = OpConvertSToF %float %102 +%104 = OpCompositeConstruct %v4float %97 %99 %101 %103 +OpStore %sk_FragColor %104 +%109 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3 +%110 = OpCompositeConstruct %v3float %float_4 %float_5 %float_6 +%111 = OpCompositeConstruct %v3float %float_7 %float_8 %float_9 +%108 = OpCompositeConstruct %mat3v3float %109 %110 %111 +OpStore %105 %108 +%112 = OpAccessChain %_ptr_Function_v3float %105 %int_0 +%114 = OpLoad %v3float %112 +%115 = OpVectorShuffle %v4float %114 %114 0 0 1 2 +OpStore %sk_FragColor %115 +%116 = OpLoad %v4float %x +OpStore %sk_FragColor %116 +%118 = OpAccessChain %_ptr_Function_int %ai %int_0 +%119 = OpLoad %int %118 +%117 = OpConvertSToF %float %119 +%120 = OpCompositeConstruct %v4float %117 %117 %117 %117 +OpStore %sk_FragColor %120 +%121 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0 +%122 = OpLoad %v4int %121 +%123 = OpCompositeExtract %int %122 0 +%124 = OpConvertSToF %float %123 +%125 = OpCompositeExtract %int %122 1 +%126 = OpConvertSToF %float %125 +%127 = OpCompositeExtract %int %122 2 +%128 = OpConvertSToF %float %127 +%129 = OpCompositeExtract %int %122 3 +%130 = OpConvertSToF %float %129 +%131 = OpCompositeConstruct %v4float %124 %126 %128 %130 +OpStore %sk_FragColor %131 +%132 = OpAccessChain %_ptr_Function_v4float %ah2x4 %int_0 %int_0 +%133 = OpLoad %v4float %132 +OpStore %sk_FragColor %133 +%134 = OpAccessChain %_ptr_Function_v4float %af4 %int_0 +%135 = OpLoad %v4float %134 +OpStore %sk_FragColor %135 +OpStore %sk_FragColor %136 +%137 = OpAccessChain %_ptr_Function_float %s %int_0 +%138 = OpLoad %float %137 +%139 = OpCompositeConstruct %v4float %138 %138 %138 %138 +OpStore %sk_FragColor %139 +%140 = OpAccessChain %_ptr_Function_float %s %int_1 %int_1 +%141 = OpLoad %float %140 +%142 = OpCompositeConstruct %v4float %141 %141 %141 %141 +OpStore %sk_FragColor %142 +%143 = OpAccessChain %_ptr_Function_v4float %s %int_2 +%144 = OpLoad %v4float %143 +OpStore %sk_FragColor %144 +%145 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0 +%146 = OpLoad %v4float %145 OpStore %sk_FragColor %146 -%147 = OpAccessChain %_ptr_Function_float %s %int_0 -%148 = OpLoad %float %147 -%149 = OpCompositeConstruct %v4float %148 %148 %148 %148 -OpStore %sk_FragColor %149 -%150 = OpAccessChain %_ptr_Function_float %s %int_1 %int_1 -%151 = OpLoad %float %150 -%152 = OpCompositeConstruct %v4float %151 %151 %151 %151 -OpStore %sk_FragColor %152 -%153 = OpAccessChain %_ptr_Function_v4float %s %int_2 -%154 = OpLoad %v4float %153 -OpStore %sk_FragColor %154 -%155 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0 -%156 = OpLoad %v4float %155 -OpStore %sk_FragColor %156 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/FloatFolding.asm.frag b/tests/sksl/shared/golden/FloatFolding.asm.frag index 03a94ad1f9..ef202d4e2e 100644 --- a/tests/sksl/shared/golden/FloatFolding.asm.frag +++ b/tests/sksl/shared/golden/FloatFolding.asm.frag @@ -11,14 +11,14 @@ OpDecorate %sk_FragColor Location 0 OpDecorate %sk_FragColor Index 0 OpDecorate %sk_Clockwise RelaxedPrecision OpDecorate %sk_Clockwise BuiltIn FrontFacing +OpDecorate %70 RelaxedPrecision +OpDecorate %71 RelaxedPrecision OpDecorate %73 RelaxedPrecision OpDecorate %74 RelaxedPrecision OpDecorate %76 RelaxedPrecision OpDecorate %77 RelaxedPrecision OpDecorate %79 RelaxedPrecision -OpDecorate %81 RelaxedPrecision -OpDecorate %83 RelaxedPrecision -OpDecorate %84 RelaxedPrecision +OpDecorate %80 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float @@ -48,14 +48,10 @@ OpDecorate %84 RelaxedPrecision %float_n10 = OpConstant %float -10 %float_11 = OpConstant %float 11 %float_n12 = OpConstant %float -12 -%float_1_0 = OpConstant %float 1 %float_2 = OpConstant %float 2 -%float_3_0 = OpConstant %float 3 %float_0 = OpConstant %float 0 -%float_5_0 = OpConstant %float 5 %float_6 = OpConstant %float 6 %float_8 = OpConstant %float 8 -%float_2_0 = OpConstant %float 2 %main = OpFunction %void None %11 %12 = OpLabel %14 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 @@ -92,45 +88,45 @@ OpStore %45 %float_n10 OpStore %47 %float_11 %49 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 OpStore %49 %float_n12 -%50 = OpExtInst %float %1 Sqrt %float_1_0 -%52 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %52 %50 -%53 = OpExtInst %float %1 Sqrt %float_2 -%55 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %55 %53 -%56 = OpExtInst %float %1 Sqrt %float_3_0 +%50 = OpExtInst %float %1 Sqrt %float_1 +%51 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %51 %50 +%52 = OpExtInst %float %1 Sqrt %float_2 +%54 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %54 %52 +%55 = OpExtInst %float %1 Sqrt %float_3 +%56 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %56 %55 %58 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %58 %56 +OpStore %58 %float_0 +%59 = OpExtInst %float %1 Sqrt %float_5 %60 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %60 %float_0 -%61 = OpExtInst %float %1 Sqrt %float_5_0 +OpStore %60 %59 +%61 = OpExtInst %float %1 Sqrt %float_6 %63 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 OpStore %63 %61 -%64 = OpExtInst %float %1 Sqrt %float_6 -%66 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %66 %64 +%64 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %64 %float_0 +%65 = OpExtInst %float %1 Sqrt %float_8 %67 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %67 %float_0 -%68 = OpExtInst %float %1 Sqrt %float_8 -%70 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %70 %68 -%71 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %71 %float_0 +OpStore %67 %65 +%68 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %68 %float_0 +%69 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +%70 = OpLoad %float %69 +%71 = OpFAdd %float %70 %float_1 +OpStore %69 %71 %72 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 %73 = OpLoad %float %72 -%74 = OpFAdd %float %73 %float_1 +%74 = OpFSub %float %73 %float_1 OpStore %72 %74 %75 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 %76 = OpLoad %float %75 -%77 = OpFSub %float %76 %float_1 +%77 = OpFMul %float %76 %float_2 OpStore %75 %77 %78 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 %79 = OpLoad %float %78 -%81 = OpFMul %float %79 %float_2_0 -OpStore %78 %81 -%82 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -%83 = OpLoad %float %82 -%84 = OpFDiv %float %83 %float_2_0 -OpStore %82 %84 +%80 = OpFDiv %float %79 %float_2 +OpStore %78 %80 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/GaussianBlur.asm.frag b/tests/sksl/shared/golden/GaussianBlur.asm.frag index 57a3bc90af..95eeab3d07 100644 --- a/tests/sksl/shared/golden/GaussianBlur.asm.frag +++ b/tests/sksl/shared/golden/GaussianBlur.asm.frag @@ -63,107 +63,107 @@ OpDecorate %100 RelaxedPrecision OpDecorate %101 RelaxedPrecision OpDecorate %114 RelaxedPrecision OpDecorate %120 RelaxedPrecision -OpDecorate %129 RelaxedPrecision -OpDecorate %132 RelaxedPrecision -OpDecorate %135 RelaxedPrecision -OpDecorate %138 RelaxedPrecision -OpDecorate %145 RelaxedPrecision -OpDecorate %148 RelaxedPrecision -OpDecorate %151 RelaxedPrecision -OpDecorate %154 RelaxedPrecision -OpDecorate %161 RelaxedPrecision -OpDecorate %164 RelaxedPrecision -OpDecorate %167 RelaxedPrecision -OpDecorate %170 RelaxedPrecision -OpDecorate %177 RelaxedPrecision -OpDecorate %180 RelaxedPrecision -OpDecorate %183 RelaxedPrecision -OpDecorate %186 RelaxedPrecision -OpDecorate %193 RelaxedPrecision -OpDecorate %196 RelaxedPrecision -OpDecorate %199 RelaxedPrecision -OpDecorate %202 RelaxedPrecision -OpDecorate %209 RelaxedPrecision -OpDecorate %212 RelaxedPrecision -OpDecorate %215 RelaxedPrecision -OpDecorate %218 RelaxedPrecision -OpDecorate %225 RelaxedPrecision -OpDecorate %228 RelaxedPrecision -OpDecorate %231 RelaxedPrecision -OpDecorate %234 RelaxedPrecision -OpDecorate %241 RelaxedPrecision -OpDecorate %244 RelaxedPrecision -OpDecorate %247 RelaxedPrecision -OpDecorate %250 RelaxedPrecision -OpDecorate %257 RelaxedPrecision -OpDecorate %260 RelaxedPrecision -OpDecorate %263 RelaxedPrecision -OpDecorate %266 RelaxedPrecision -OpDecorate %273 RelaxedPrecision -OpDecorate %276 RelaxedPrecision -OpDecorate %279 RelaxedPrecision -OpDecorate %282 RelaxedPrecision -OpDecorate %289 RelaxedPrecision -OpDecorate %292 RelaxedPrecision -OpDecorate %295 RelaxedPrecision -OpDecorate %298 RelaxedPrecision -OpDecorate %305 RelaxedPrecision -OpDecorate %308 RelaxedPrecision -OpDecorate %311 RelaxedPrecision -OpDecorate %314 RelaxedPrecision -OpDecorate %321 RelaxedPrecision -OpDecorate %324 RelaxedPrecision -OpDecorate %327 RelaxedPrecision -OpDecorate %330 RelaxedPrecision -OpDecorate %337 RelaxedPrecision -OpDecorate %340 RelaxedPrecision -OpDecorate %343 RelaxedPrecision -OpDecorate %346 RelaxedPrecision -OpDecorate %353 RelaxedPrecision -OpDecorate %356 RelaxedPrecision -OpDecorate %359 RelaxedPrecision -OpDecorate %362 RelaxedPrecision -OpDecorate %369 RelaxedPrecision -OpDecorate %372 RelaxedPrecision -OpDecorate %375 RelaxedPrecision -OpDecorate %378 RelaxedPrecision -OpDecorate %385 RelaxedPrecision -OpDecorate %388 RelaxedPrecision -OpDecorate %391 RelaxedPrecision -OpDecorate %394 RelaxedPrecision -OpDecorate %401 RelaxedPrecision -OpDecorate %404 RelaxedPrecision -OpDecorate %407 RelaxedPrecision -OpDecorate %410 RelaxedPrecision -OpDecorate %417 RelaxedPrecision -OpDecorate %420 RelaxedPrecision -OpDecorate %423 RelaxedPrecision -OpDecorate %426 RelaxedPrecision -OpDecorate %433 RelaxedPrecision -OpDecorate %436 RelaxedPrecision -OpDecorate %439 RelaxedPrecision -OpDecorate %442 RelaxedPrecision -OpDecorate %449 RelaxedPrecision -OpDecorate %452 RelaxedPrecision -OpDecorate %455 RelaxedPrecision -OpDecorate %458 RelaxedPrecision -OpDecorate %465 RelaxedPrecision -OpDecorate %468 RelaxedPrecision -OpDecorate %471 RelaxedPrecision -OpDecorate %474 RelaxedPrecision -OpDecorate %481 RelaxedPrecision -OpDecorate %484 RelaxedPrecision -OpDecorate %487 RelaxedPrecision -OpDecorate %490 RelaxedPrecision -OpDecorate %497 RelaxedPrecision -OpDecorate %500 RelaxedPrecision -OpDecorate %503 RelaxedPrecision -OpDecorate %506 RelaxedPrecision -OpDecorate %513 RelaxedPrecision -OpDecorate %516 RelaxedPrecision -OpDecorate %519 RelaxedPrecision +OpDecorate %128 RelaxedPrecision +OpDecorate %131 RelaxedPrecision +OpDecorate %134 RelaxedPrecision +OpDecorate %137 RelaxedPrecision +OpDecorate %144 RelaxedPrecision +OpDecorate %147 RelaxedPrecision +OpDecorate %150 RelaxedPrecision +OpDecorate %153 RelaxedPrecision +OpDecorate %160 RelaxedPrecision +OpDecorate %163 RelaxedPrecision +OpDecorate %166 RelaxedPrecision +OpDecorate %169 RelaxedPrecision +OpDecorate %176 RelaxedPrecision +OpDecorate %179 RelaxedPrecision +OpDecorate %182 RelaxedPrecision +OpDecorate %185 RelaxedPrecision +OpDecorate %192 RelaxedPrecision +OpDecorate %195 RelaxedPrecision +OpDecorate %198 RelaxedPrecision +OpDecorate %201 RelaxedPrecision +OpDecorate %208 RelaxedPrecision +OpDecorate %211 RelaxedPrecision +OpDecorate %214 RelaxedPrecision +OpDecorate %217 RelaxedPrecision +OpDecorate %224 RelaxedPrecision +OpDecorate %227 RelaxedPrecision +OpDecorate %230 RelaxedPrecision +OpDecorate %233 RelaxedPrecision +OpDecorate %240 RelaxedPrecision +OpDecorate %243 RelaxedPrecision +OpDecorate %246 RelaxedPrecision +OpDecorate %249 RelaxedPrecision +OpDecorate %256 RelaxedPrecision +OpDecorate %259 RelaxedPrecision +OpDecorate %262 RelaxedPrecision +OpDecorate %265 RelaxedPrecision +OpDecorate %272 RelaxedPrecision +OpDecorate %275 RelaxedPrecision +OpDecorate %278 RelaxedPrecision +OpDecorate %281 RelaxedPrecision +OpDecorate %288 RelaxedPrecision +OpDecorate %291 RelaxedPrecision +OpDecorate %294 RelaxedPrecision +OpDecorate %297 RelaxedPrecision +OpDecorate %304 RelaxedPrecision +OpDecorate %307 RelaxedPrecision +OpDecorate %310 RelaxedPrecision +OpDecorate %313 RelaxedPrecision +OpDecorate %320 RelaxedPrecision +OpDecorate %323 RelaxedPrecision +OpDecorate %326 RelaxedPrecision +OpDecorate %329 RelaxedPrecision +OpDecorate %336 RelaxedPrecision +OpDecorate %339 RelaxedPrecision +OpDecorate %342 RelaxedPrecision +OpDecorate %345 RelaxedPrecision +OpDecorate %352 RelaxedPrecision +OpDecorate %355 RelaxedPrecision +OpDecorate %358 RelaxedPrecision +OpDecorate %361 RelaxedPrecision +OpDecorate %368 RelaxedPrecision +OpDecorate %371 RelaxedPrecision +OpDecorate %374 RelaxedPrecision +OpDecorate %377 RelaxedPrecision +OpDecorate %384 RelaxedPrecision +OpDecorate %387 RelaxedPrecision +OpDecorate %390 RelaxedPrecision +OpDecorate %393 RelaxedPrecision +OpDecorate %400 RelaxedPrecision +OpDecorate %403 RelaxedPrecision +OpDecorate %406 RelaxedPrecision +OpDecorate %409 RelaxedPrecision +OpDecorate %416 RelaxedPrecision +OpDecorate %419 RelaxedPrecision +OpDecorate %422 RelaxedPrecision +OpDecorate %425 RelaxedPrecision +OpDecorate %432 RelaxedPrecision +OpDecorate %435 RelaxedPrecision +OpDecorate %438 RelaxedPrecision +OpDecorate %441 RelaxedPrecision +OpDecorate %448 RelaxedPrecision +OpDecorate %451 RelaxedPrecision +OpDecorate %454 RelaxedPrecision +OpDecorate %457 RelaxedPrecision +OpDecorate %464 RelaxedPrecision +OpDecorate %467 RelaxedPrecision +OpDecorate %470 RelaxedPrecision +OpDecorate %473 RelaxedPrecision +OpDecorate %480 RelaxedPrecision +OpDecorate %483 RelaxedPrecision +OpDecorate %486 RelaxedPrecision +OpDecorate %489 RelaxedPrecision +OpDecorate %496 RelaxedPrecision +OpDecorate %499 RelaxedPrecision +OpDecorate %502 RelaxedPrecision +OpDecorate %505 RelaxedPrecision +OpDecorate %512 RelaxedPrecision +OpDecorate %515 RelaxedPrecision +OpDecorate %518 RelaxedPrecision +OpDecorate %520 RelaxedPrecision OpDecorate %521 RelaxedPrecision -OpDecorate %522 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %v2float = OpTypeVector %float 2 @@ -209,33 +209,32 @@ OpDecorate %522 RelaxedPrecision %float_12 = OpConstant %float 12 %_ptr_Uniform_v2float = OpTypePointer Uniform %v2float %118 = OpConstantComposite %v2float %float_0 %float_0 -%float_1_0 = OpConstant %float 1 -%121 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 +%121 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %int_2 = OpConstant %int 2 -%139 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%155 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%171 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%187 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%203 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%219 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%235 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%251 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%267 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%283 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%299 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%315 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%331 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%347 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%363 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%379 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%395 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%411 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%427 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%443 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%459 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%475 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%491 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 -%507 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 +%138 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%154 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%170 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%186 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%202 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%218 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%234 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%250 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%266 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%282 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%298 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%314 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%330 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%346 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%362 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%378 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%394 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%410 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%426 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%442 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%458 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%474 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%490 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%506 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 %MatrixEffect_Stage1_c0_c0 = OpFunction %v4float None %26 %29 = OpFunctionParameter %_ptr_Function_v4float %30 = OpFunctionParameter %_ptr_Function_v2float @@ -320,56 +319,56 @@ OpFunctionEnd %_8_output = OpVariable %_ptr_Function_v4float Function %_9_coord = OpVariable %_ptr_Function_v2float Function %_10_coordSampled = OpVariable %_ptr_Function_v2float Function -%123 = OpVariable %_ptr_Function_v4float Function -%125 = OpVariable %_ptr_Function_v2float Function -%140 = OpVariable %_ptr_Function_v4float Function -%142 = OpVariable %_ptr_Function_v2float Function -%156 = OpVariable %_ptr_Function_v4float Function -%158 = OpVariable %_ptr_Function_v2float Function -%172 = OpVariable %_ptr_Function_v4float Function -%174 = OpVariable %_ptr_Function_v2float Function -%188 = OpVariable %_ptr_Function_v4float Function -%190 = OpVariable %_ptr_Function_v2float Function -%204 = OpVariable %_ptr_Function_v4float Function -%206 = OpVariable %_ptr_Function_v2float Function -%220 = OpVariable %_ptr_Function_v4float Function -%222 = OpVariable %_ptr_Function_v2float Function -%236 = OpVariable %_ptr_Function_v4float Function -%238 = OpVariable %_ptr_Function_v2float Function -%252 = OpVariable %_ptr_Function_v4float Function -%254 = OpVariable %_ptr_Function_v2float Function -%268 = OpVariable %_ptr_Function_v4float Function -%270 = OpVariable %_ptr_Function_v2float Function -%284 = OpVariable %_ptr_Function_v4float Function -%286 = OpVariable %_ptr_Function_v2float Function -%300 = OpVariable %_ptr_Function_v4float Function -%302 = OpVariable %_ptr_Function_v2float Function -%316 = OpVariable %_ptr_Function_v4float Function -%318 = OpVariable %_ptr_Function_v2float Function -%332 = OpVariable %_ptr_Function_v4float Function -%334 = OpVariable %_ptr_Function_v2float Function -%348 = OpVariable %_ptr_Function_v4float Function -%350 = OpVariable %_ptr_Function_v2float Function -%364 = OpVariable %_ptr_Function_v4float Function -%366 = OpVariable %_ptr_Function_v2float Function -%380 = OpVariable %_ptr_Function_v4float Function -%382 = OpVariable %_ptr_Function_v2float Function -%396 = OpVariable %_ptr_Function_v4float Function -%398 = OpVariable %_ptr_Function_v2float Function -%412 = OpVariable %_ptr_Function_v4float Function -%414 = OpVariable %_ptr_Function_v2float Function -%428 = OpVariable %_ptr_Function_v4float Function -%430 = OpVariable %_ptr_Function_v2float Function -%444 = OpVariable %_ptr_Function_v4float Function -%446 = OpVariable %_ptr_Function_v2float Function -%460 = OpVariable %_ptr_Function_v4float Function -%462 = OpVariable %_ptr_Function_v2float Function -%476 = OpVariable %_ptr_Function_v4float Function -%478 = OpVariable %_ptr_Function_v2float Function -%492 = OpVariable %_ptr_Function_v4float Function -%494 = OpVariable %_ptr_Function_v2float Function -%508 = OpVariable %_ptr_Function_v4float Function -%510 = OpVariable %_ptr_Function_v2float Function +%122 = OpVariable %_ptr_Function_v4float Function +%124 = OpVariable %_ptr_Function_v2float Function +%139 = OpVariable %_ptr_Function_v4float Function +%141 = OpVariable %_ptr_Function_v2float Function +%155 = OpVariable %_ptr_Function_v4float Function +%157 = OpVariable %_ptr_Function_v2float Function +%171 = OpVariable %_ptr_Function_v4float Function +%173 = OpVariable %_ptr_Function_v2float Function +%187 = OpVariable %_ptr_Function_v4float Function +%189 = OpVariable %_ptr_Function_v2float Function +%203 = OpVariable %_ptr_Function_v4float Function +%205 = OpVariable %_ptr_Function_v2float Function +%219 = OpVariable %_ptr_Function_v4float Function +%221 = OpVariable %_ptr_Function_v2float Function +%235 = OpVariable %_ptr_Function_v4float Function +%237 = OpVariable %_ptr_Function_v2float Function +%251 = OpVariable %_ptr_Function_v4float Function +%253 = OpVariable %_ptr_Function_v2float Function +%267 = OpVariable %_ptr_Function_v4float Function +%269 = OpVariable %_ptr_Function_v2float Function +%283 = OpVariable %_ptr_Function_v4float Function +%285 = OpVariable %_ptr_Function_v2float Function +%299 = OpVariable %_ptr_Function_v4float Function +%301 = OpVariable %_ptr_Function_v2float Function +%315 = OpVariable %_ptr_Function_v4float Function +%317 = OpVariable %_ptr_Function_v2float Function +%331 = OpVariable %_ptr_Function_v4float Function +%333 = OpVariable %_ptr_Function_v2float Function +%347 = OpVariable %_ptr_Function_v4float Function +%349 = OpVariable %_ptr_Function_v2float Function +%363 = OpVariable %_ptr_Function_v4float Function +%365 = OpVariable %_ptr_Function_v2float Function +%379 = OpVariable %_ptr_Function_v4float Function +%381 = OpVariable %_ptr_Function_v2float Function +%395 = OpVariable %_ptr_Function_v4float Function +%397 = OpVariable %_ptr_Function_v2float Function +%411 = OpVariable %_ptr_Function_v4float Function +%413 = OpVariable %_ptr_Function_v2float Function +%427 = OpVariable %_ptr_Function_v4float Function +%429 = OpVariable %_ptr_Function_v2float Function +%443 = OpVariable %_ptr_Function_v4float Function +%445 = OpVariable %_ptr_Function_v2float Function +%459 = OpVariable %_ptr_Function_v4float Function +%461 = OpVariable %_ptr_Function_v2float Function +%475 = OpVariable %_ptr_Function_v4float Function +%477 = OpVariable %_ptr_Function_v2float Function +%491 = OpVariable %_ptr_Function_v4float Function +%493 = OpVariable %_ptr_Function_v2float Function +%507 = OpVariable %_ptr_Function_v4float Function +%509 = OpVariable %_ptr_Function_v2float Function OpStore %_8_output %107 %110 = OpLoad %v2float %vLocalCoord_Stage0 %112 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 @@ -381,457 +380,457 @@ OpStore %_10_coordSampled %118 %119 = OpLoad %v2float %_9_coord OpStore %_10_coordSampled %119 %120 = OpLoad %v4float %_8_output -OpStore %123 %121 -%124 = OpLoad %v2float %_10_coordSampled -OpStore %125 %124 -%126 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %123 %125 -%128 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 -%129 = OpLoad %v4float %128 -%130 = OpCompositeExtract %float %129 0 -%131 = OpVectorTimesScalar %v4float %126 %130 -%132 = OpFAdd %v4float %120 %131 -OpStore %_8_output %132 -%133 = OpLoad %v2float %_9_coord -%134 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%135 = OpLoad %v2float %134 -%136 = OpFAdd %v2float %133 %135 -OpStore %_9_coord %136 -%137 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %137 -%138 = OpLoad %v4float %_8_output -OpStore %140 %139 -%141 = OpLoad %v2float %_10_coordSampled -OpStore %142 %141 -%143 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %140 %142 -%144 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 -%145 = OpLoad %v4float %144 -%146 = OpCompositeExtract %float %145 1 -%147 = OpVectorTimesScalar %v4float %143 %146 -%148 = OpFAdd %v4float %138 %147 -OpStore %_8_output %148 -%149 = OpLoad %v2float %_9_coord -%150 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%151 = OpLoad %v2float %150 -%152 = OpFAdd %v2float %149 %151 -OpStore %_9_coord %152 -%153 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %153 -%154 = OpLoad %v4float %_8_output -OpStore %156 %155 -%157 = OpLoad %v2float %_10_coordSampled -OpStore %158 %157 -%159 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %156 %158 -%160 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 -%161 = OpLoad %v4float %160 -%162 = OpCompositeExtract %float %161 2 -%163 = OpVectorTimesScalar %v4float %159 %162 -%164 = OpFAdd %v4float %154 %163 -OpStore %_8_output %164 -%165 = OpLoad %v2float %_9_coord -%166 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%167 = OpLoad %v2float %166 -%168 = OpFAdd %v2float %165 %167 -OpStore %_9_coord %168 -%169 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %169 -%170 = OpLoad %v4float %_8_output -OpStore %172 %171 -%173 = OpLoad %v2float %_10_coordSampled -OpStore %174 %173 -%175 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %172 %174 -%176 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 -%177 = OpLoad %v4float %176 -%178 = OpCompositeExtract %float %177 3 -%179 = OpVectorTimesScalar %v4float %175 %178 -%180 = OpFAdd %v4float %170 %179 -OpStore %_8_output %180 -%181 = OpLoad %v2float %_9_coord -%182 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%183 = OpLoad %v2float %182 -%184 = OpFAdd %v2float %181 %183 -OpStore %_9_coord %184 -%185 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %185 -%186 = OpLoad %v4float %_8_output -OpStore %188 %187 -%189 = OpLoad %v2float %_10_coordSampled -OpStore %190 %189 -%191 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %188 %190 -%192 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 -%193 = OpLoad %v4float %192 -%194 = OpCompositeExtract %float %193 0 -%195 = OpVectorTimesScalar %v4float %191 %194 -%196 = OpFAdd %v4float %186 %195 -OpStore %_8_output %196 -%197 = OpLoad %v2float %_9_coord -%198 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%199 = OpLoad %v2float %198 -%200 = OpFAdd %v2float %197 %199 -OpStore %_9_coord %200 -%201 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %201 -%202 = OpLoad %v4float %_8_output -OpStore %204 %203 -%205 = OpLoad %v2float %_10_coordSampled -OpStore %206 %205 -%207 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %204 %206 -%208 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 -%209 = OpLoad %v4float %208 -%210 = OpCompositeExtract %float %209 1 -%211 = OpVectorTimesScalar %v4float %207 %210 -%212 = OpFAdd %v4float %202 %211 -OpStore %_8_output %212 -%213 = OpLoad %v2float %_9_coord -%214 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%215 = OpLoad %v2float %214 -%216 = OpFAdd %v2float %213 %215 -OpStore %_9_coord %216 -%217 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %217 -%218 = OpLoad %v4float %_8_output -OpStore %220 %219 -%221 = OpLoad %v2float %_10_coordSampled -OpStore %222 %221 -%223 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %220 %222 -%224 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 -%225 = OpLoad %v4float %224 -%226 = OpCompositeExtract %float %225 2 -%227 = OpVectorTimesScalar %v4float %223 %226 -%228 = OpFAdd %v4float %218 %227 -OpStore %_8_output %228 -%229 = OpLoad %v2float %_9_coord -%230 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%231 = OpLoad %v2float %230 -%232 = OpFAdd %v2float %229 %231 -OpStore %_9_coord %232 -%233 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %233 -%234 = OpLoad %v4float %_8_output -OpStore %236 %235 -%237 = OpLoad %v2float %_10_coordSampled -OpStore %238 %237 -%239 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %236 %238 -%240 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 -%241 = OpLoad %v4float %240 -%242 = OpCompositeExtract %float %241 3 -%243 = OpVectorTimesScalar %v4float %239 %242 -%244 = OpFAdd %v4float %234 %243 -OpStore %_8_output %244 -%245 = OpLoad %v2float %_9_coord -%246 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%247 = OpLoad %v2float %246 -%248 = OpFAdd %v2float %245 %247 -OpStore %_9_coord %248 -%249 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %249 -%250 = OpLoad %v4float %_8_output -OpStore %252 %251 -%253 = OpLoad %v2float %_10_coordSampled -OpStore %254 %253 -%255 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %252 %254 -%256 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 -%257 = OpLoad %v4float %256 -%258 = OpCompositeExtract %float %257 0 -%259 = OpVectorTimesScalar %v4float %255 %258 -%260 = OpFAdd %v4float %250 %259 -OpStore %_8_output %260 -%261 = OpLoad %v2float %_9_coord -%262 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%263 = OpLoad %v2float %262 -%264 = OpFAdd %v2float %261 %263 -OpStore %_9_coord %264 -%265 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %265 -%266 = OpLoad %v4float %_8_output -OpStore %268 %267 -%269 = OpLoad %v2float %_10_coordSampled -OpStore %270 %269 -%271 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %268 %270 -%272 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 -%273 = OpLoad %v4float %272 -%274 = OpCompositeExtract %float %273 1 -%275 = OpVectorTimesScalar %v4float %271 %274 -%276 = OpFAdd %v4float %266 %275 -OpStore %_8_output %276 -%277 = OpLoad %v2float %_9_coord -%278 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%279 = OpLoad %v2float %278 -%280 = OpFAdd %v2float %277 %279 -OpStore %_9_coord %280 -%281 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %281 -%282 = OpLoad %v4float %_8_output -OpStore %284 %283 -%285 = OpLoad %v2float %_10_coordSampled -OpStore %286 %285 -%287 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %284 %286 -%288 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 -%289 = OpLoad %v4float %288 -%290 = OpCompositeExtract %float %289 2 -%291 = OpVectorTimesScalar %v4float %287 %290 -%292 = OpFAdd %v4float %282 %291 -OpStore %_8_output %292 -%293 = OpLoad %v2float %_9_coord -%294 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%295 = OpLoad %v2float %294 -%296 = OpFAdd %v2float %293 %295 -OpStore %_9_coord %296 -%297 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %297 -%298 = OpLoad %v4float %_8_output -OpStore %300 %299 -%301 = OpLoad %v2float %_10_coordSampled -OpStore %302 %301 -%303 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %300 %302 -%304 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 -%305 = OpLoad %v4float %304 -%306 = OpCompositeExtract %float %305 3 -%307 = OpVectorTimesScalar %v4float %303 %306 -%308 = OpFAdd %v4float %298 %307 -OpStore %_8_output %308 -%309 = OpLoad %v2float %_9_coord -%310 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%311 = OpLoad %v2float %310 -%312 = OpFAdd %v2float %309 %311 -OpStore %_9_coord %312 -%313 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %313 -%314 = OpLoad %v4float %_8_output -OpStore %316 %315 -%317 = OpLoad %v2float %_10_coordSampled -OpStore %318 %317 -%319 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %316 %318 -%320 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 -%321 = OpLoad %v4float %320 -%322 = OpCompositeExtract %float %321 0 -%323 = OpVectorTimesScalar %v4float %319 %322 -%324 = OpFAdd %v4float %314 %323 -OpStore %_8_output %324 -%325 = OpLoad %v2float %_9_coord -%326 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%327 = OpLoad %v2float %326 -%328 = OpFAdd %v2float %325 %327 -OpStore %_9_coord %328 -%329 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %329 -%330 = OpLoad %v4float %_8_output -OpStore %332 %331 -%333 = OpLoad %v2float %_10_coordSampled -OpStore %334 %333 -%335 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %332 %334 -%336 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 -%337 = OpLoad %v4float %336 -%338 = OpCompositeExtract %float %337 1 -%339 = OpVectorTimesScalar %v4float %335 %338 -%340 = OpFAdd %v4float %330 %339 -OpStore %_8_output %340 -%341 = OpLoad %v2float %_9_coord -%342 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%343 = OpLoad %v2float %342 -%344 = OpFAdd %v2float %341 %343 -OpStore %_9_coord %344 -%345 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %345 -%346 = OpLoad %v4float %_8_output -OpStore %348 %347 -%349 = OpLoad %v2float %_10_coordSampled -OpStore %350 %349 -%351 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %348 %350 -%352 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 -%353 = OpLoad %v4float %352 -%354 = OpCompositeExtract %float %353 2 -%355 = OpVectorTimesScalar %v4float %351 %354 -%356 = OpFAdd %v4float %346 %355 -OpStore %_8_output %356 -%357 = OpLoad %v2float %_9_coord -%358 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%359 = OpLoad %v2float %358 -%360 = OpFAdd %v2float %357 %359 -OpStore %_9_coord %360 -%361 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %361 -%362 = OpLoad %v4float %_8_output -OpStore %364 %363 -%365 = OpLoad %v2float %_10_coordSampled -OpStore %366 %365 -%367 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %364 %366 -%368 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 -%369 = OpLoad %v4float %368 -%370 = OpCompositeExtract %float %369 3 -%371 = OpVectorTimesScalar %v4float %367 %370 -%372 = OpFAdd %v4float %362 %371 -OpStore %_8_output %372 -%373 = OpLoad %v2float %_9_coord -%374 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%375 = OpLoad %v2float %374 -%376 = OpFAdd %v2float %373 %375 -OpStore %_9_coord %376 -%377 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %377 -%378 = OpLoad %v4float %_8_output -OpStore %380 %379 -%381 = OpLoad %v2float %_10_coordSampled -OpStore %382 %381 -%383 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %380 %382 -%384 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 -%385 = OpLoad %v4float %384 -%386 = OpCompositeExtract %float %385 0 -%387 = OpVectorTimesScalar %v4float %383 %386 -%388 = OpFAdd %v4float %378 %387 -OpStore %_8_output %388 -%389 = OpLoad %v2float %_9_coord -%390 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%391 = OpLoad %v2float %390 -%392 = OpFAdd %v2float %389 %391 -OpStore %_9_coord %392 -%393 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %393 -%394 = OpLoad %v4float %_8_output -OpStore %396 %395 -%397 = OpLoad %v2float %_10_coordSampled -OpStore %398 %397 -%399 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %396 %398 -%400 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 -%401 = OpLoad %v4float %400 -%402 = OpCompositeExtract %float %401 1 -%403 = OpVectorTimesScalar %v4float %399 %402 -%404 = OpFAdd %v4float %394 %403 -OpStore %_8_output %404 -%405 = OpLoad %v2float %_9_coord -%406 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%407 = OpLoad %v2float %406 -%408 = OpFAdd %v2float %405 %407 -OpStore %_9_coord %408 -%409 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %409 -%410 = OpLoad %v4float %_8_output -OpStore %412 %411 -%413 = OpLoad %v2float %_10_coordSampled -OpStore %414 %413 -%415 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %412 %414 -%416 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 -%417 = OpLoad %v4float %416 -%418 = OpCompositeExtract %float %417 2 -%419 = OpVectorTimesScalar %v4float %415 %418 -%420 = OpFAdd %v4float %410 %419 -OpStore %_8_output %420 -%421 = OpLoad %v2float %_9_coord -%422 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%423 = OpLoad %v2float %422 -%424 = OpFAdd %v2float %421 %423 -OpStore %_9_coord %424 -%425 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %425 -%426 = OpLoad %v4float %_8_output -OpStore %428 %427 -%429 = OpLoad %v2float %_10_coordSampled -OpStore %430 %429 -%431 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %428 %430 -%432 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 -%433 = OpLoad %v4float %432 -%434 = OpCompositeExtract %float %433 3 -%435 = OpVectorTimesScalar %v4float %431 %434 -%436 = OpFAdd %v4float %426 %435 -OpStore %_8_output %436 -%437 = OpLoad %v2float %_9_coord -%438 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%439 = OpLoad %v2float %438 -%440 = OpFAdd %v2float %437 %439 -OpStore %_9_coord %440 -%441 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %441 -%442 = OpLoad %v4float %_8_output -OpStore %444 %443 -%445 = OpLoad %v2float %_10_coordSampled -OpStore %446 %445 -%447 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %444 %446 -%448 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 -%449 = OpLoad %v4float %448 -%450 = OpCompositeExtract %float %449 0 -%451 = OpVectorTimesScalar %v4float %447 %450 -%452 = OpFAdd %v4float %442 %451 -OpStore %_8_output %452 -%453 = OpLoad %v2float %_9_coord -%454 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%455 = OpLoad %v2float %454 -%456 = OpFAdd %v2float %453 %455 -OpStore %_9_coord %456 -%457 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %457 -%458 = OpLoad %v4float %_8_output -OpStore %460 %459 -%461 = OpLoad %v2float %_10_coordSampled -OpStore %462 %461 -%463 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %460 %462 -%464 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 -%465 = OpLoad %v4float %464 -%466 = OpCompositeExtract %float %465 1 -%467 = OpVectorTimesScalar %v4float %463 %466 -%468 = OpFAdd %v4float %458 %467 -OpStore %_8_output %468 -%469 = OpLoad %v2float %_9_coord -%470 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%471 = OpLoad %v2float %470 -%472 = OpFAdd %v2float %469 %471 -OpStore %_9_coord %472 -%473 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %473 -%474 = OpLoad %v4float %_8_output -OpStore %476 %475 -%477 = OpLoad %v2float %_10_coordSampled -OpStore %478 %477 -%479 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %476 %478 -%480 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 -%481 = OpLoad %v4float %480 -%482 = OpCompositeExtract %float %481 2 -%483 = OpVectorTimesScalar %v4float %479 %482 -%484 = OpFAdd %v4float %474 %483 -OpStore %_8_output %484 -%485 = OpLoad %v2float %_9_coord -%486 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%487 = OpLoad %v2float %486 -%488 = OpFAdd %v2float %485 %487 -OpStore %_9_coord %488 -%489 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %489 -%490 = OpLoad %v4float %_8_output -OpStore %492 %491 -%493 = OpLoad %v2float %_10_coordSampled -OpStore %494 %493 -%495 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %492 %494 -%496 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 -%497 = OpLoad %v4float %496 -%498 = OpCompositeExtract %float %497 3 -%499 = OpVectorTimesScalar %v4float %495 %498 -%500 = OpFAdd %v4float %490 %499 -OpStore %_8_output %500 -%501 = OpLoad %v2float %_9_coord -%502 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%503 = OpLoad %v2float %502 -%504 = OpFAdd %v2float %501 %503 -OpStore %_9_coord %504 -%505 = OpLoad %v2float %_9_coord -OpStore %_10_coordSampled %505 -%506 = OpLoad %v4float %_8_output -OpStore %508 %507 -%509 = OpLoad %v2float %_10_coordSampled -OpStore %510 %509 -%511 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %508 %510 -%512 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_6 -%513 = OpLoad %v4float %512 -%514 = OpCompositeExtract %float %513 0 -%515 = OpVectorTimesScalar %v4float %511 %514 -%516 = OpFAdd %v4float %506 %515 -OpStore %_8_output %516 -%517 = OpLoad %v2float %_9_coord -%518 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 -%519 = OpLoad %v2float %518 -%520 = OpFAdd %v2float %517 %519 -OpStore %_9_coord %520 -%521 = OpLoad %v4float %_8_output -OpStore %output_Stage1 %521 -%522 = OpLoad %v4float %output_Stage1 -OpStore %sk_FragColor %522 +OpStore %122 %121 +%123 = OpLoad %v2float %_10_coordSampled +OpStore %124 %123 +%125 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %122 %124 +%127 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 +%128 = OpLoad %v4float %127 +%129 = OpCompositeExtract %float %128 0 +%130 = OpVectorTimesScalar %v4float %125 %129 +%131 = OpFAdd %v4float %120 %130 +OpStore %_8_output %131 +%132 = OpLoad %v2float %_9_coord +%133 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%134 = OpLoad %v2float %133 +%135 = OpFAdd %v2float %132 %134 +OpStore %_9_coord %135 +%136 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %136 +%137 = OpLoad %v4float %_8_output +OpStore %139 %138 +%140 = OpLoad %v2float %_10_coordSampled +OpStore %141 %140 +%142 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %139 %141 +%143 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 +%144 = OpLoad %v4float %143 +%145 = OpCompositeExtract %float %144 1 +%146 = OpVectorTimesScalar %v4float %142 %145 +%147 = OpFAdd %v4float %137 %146 +OpStore %_8_output %147 +%148 = OpLoad %v2float %_9_coord +%149 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%150 = OpLoad %v2float %149 +%151 = OpFAdd %v2float %148 %150 +OpStore %_9_coord %151 +%152 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %152 +%153 = OpLoad %v4float %_8_output +OpStore %155 %154 +%156 = OpLoad %v2float %_10_coordSampled +OpStore %157 %156 +%158 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %155 %157 +%159 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 +%160 = OpLoad %v4float %159 +%161 = OpCompositeExtract %float %160 2 +%162 = OpVectorTimesScalar %v4float %158 %161 +%163 = OpFAdd %v4float %153 %162 +OpStore %_8_output %163 +%164 = OpLoad %v2float %_9_coord +%165 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%166 = OpLoad %v2float %165 +%167 = OpFAdd %v2float %164 %166 +OpStore %_9_coord %167 +%168 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %168 +%169 = OpLoad %v4float %_8_output +OpStore %171 %170 +%172 = OpLoad %v2float %_10_coordSampled +OpStore %173 %172 +%174 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %171 %173 +%175 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_0 +%176 = OpLoad %v4float %175 +%177 = OpCompositeExtract %float %176 3 +%178 = OpVectorTimesScalar %v4float %174 %177 +%179 = OpFAdd %v4float %169 %178 +OpStore %_8_output %179 +%180 = OpLoad %v2float %_9_coord +%181 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%182 = OpLoad %v2float %181 +%183 = OpFAdd %v2float %180 %182 +OpStore %_9_coord %183 +%184 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %184 +%185 = OpLoad %v4float %_8_output +OpStore %187 %186 +%188 = OpLoad %v2float %_10_coordSampled +OpStore %189 %188 +%190 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %187 %189 +%191 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 +%192 = OpLoad %v4float %191 +%193 = OpCompositeExtract %float %192 0 +%194 = OpVectorTimesScalar %v4float %190 %193 +%195 = OpFAdd %v4float %185 %194 +OpStore %_8_output %195 +%196 = OpLoad %v2float %_9_coord +%197 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%198 = OpLoad %v2float %197 +%199 = OpFAdd %v2float %196 %198 +OpStore %_9_coord %199 +%200 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %200 +%201 = OpLoad %v4float %_8_output +OpStore %203 %202 +%204 = OpLoad %v2float %_10_coordSampled +OpStore %205 %204 +%206 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %203 %205 +%207 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 +%208 = OpLoad %v4float %207 +%209 = OpCompositeExtract %float %208 1 +%210 = OpVectorTimesScalar %v4float %206 %209 +%211 = OpFAdd %v4float %201 %210 +OpStore %_8_output %211 +%212 = OpLoad %v2float %_9_coord +%213 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%214 = OpLoad %v2float %213 +%215 = OpFAdd %v2float %212 %214 +OpStore %_9_coord %215 +%216 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %216 +%217 = OpLoad %v4float %_8_output +OpStore %219 %218 +%220 = OpLoad %v2float %_10_coordSampled +OpStore %221 %220 +%222 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %219 %221 +%223 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 +%224 = OpLoad %v4float %223 +%225 = OpCompositeExtract %float %224 2 +%226 = OpVectorTimesScalar %v4float %222 %225 +%227 = OpFAdd %v4float %217 %226 +OpStore %_8_output %227 +%228 = OpLoad %v2float %_9_coord +%229 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%230 = OpLoad %v2float %229 +%231 = OpFAdd %v2float %228 %230 +OpStore %_9_coord %231 +%232 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %232 +%233 = OpLoad %v4float %_8_output +OpStore %235 %234 +%236 = OpLoad %v2float %_10_coordSampled +OpStore %237 %236 +%238 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %235 %237 +%239 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_1 +%240 = OpLoad %v4float %239 +%241 = OpCompositeExtract %float %240 3 +%242 = OpVectorTimesScalar %v4float %238 %241 +%243 = OpFAdd %v4float %233 %242 +OpStore %_8_output %243 +%244 = OpLoad %v2float %_9_coord +%245 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%246 = OpLoad %v2float %245 +%247 = OpFAdd %v2float %244 %246 +OpStore %_9_coord %247 +%248 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %248 +%249 = OpLoad %v4float %_8_output +OpStore %251 %250 +%252 = OpLoad %v2float %_10_coordSampled +OpStore %253 %252 +%254 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %251 %253 +%255 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 +%256 = OpLoad %v4float %255 +%257 = OpCompositeExtract %float %256 0 +%258 = OpVectorTimesScalar %v4float %254 %257 +%259 = OpFAdd %v4float %249 %258 +OpStore %_8_output %259 +%260 = OpLoad %v2float %_9_coord +%261 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%262 = OpLoad %v2float %261 +%263 = OpFAdd %v2float %260 %262 +OpStore %_9_coord %263 +%264 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %264 +%265 = OpLoad %v4float %_8_output +OpStore %267 %266 +%268 = OpLoad %v2float %_10_coordSampled +OpStore %269 %268 +%270 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %267 %269 +%271 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 +%272 = OpLoad %v4float %271 +%273 = OpCompositeExtract %float %272 1 +%274 = OpVectorTimesScalar %v4float %270 %273 +%275 = OpFAdd %v4float %265 %274 +OpStore %_8_output %275 +%276 = OpLoad %v2float %_9_coord +%277 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%278 = OpLoad %v2float %277 +%279 = OpFAdd %v2float %276 %278 +OpStore %_9_coord %279 +%280 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %280 +%281 = OpLoad %v4float %_8_output +OpStore %283 %282 +%284 = OpLoad %v2float %_10_coordSampled +OpStore %285 %284 +%286 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %283 %285 +%287 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 +%288 = OpLoad %v4float %287 +%289 = OpCompositeExtract %float %288 2 +%290 = OpVectorTimesScalar %v4float %286 %289 +%291 = OpFAdd %v4float %281 %290 +OpStore %_8_output %291 +%292 = OpLoad %v2float %_9_coord +%293 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%294 = OpLoad %v2float %293 +%295 = OpFAdd %v2float %292 %294 +OpStore %_9_coord %295 +%296 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %296 +%297 = OpLoad %v4float %_8_output +OpStore %299 %298 +%300 = OpLoad %v2float %_10_coordSampled +OpStore %301 %300 +%302 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %299 %301 +%303 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_2 +%304 = OpLoad %v4float %303 +%305 = OpCompositeExtract %float %304 3 +%306 = OpVectorTimesScalar %v4float %302 %305 +%307 = OpFAdd %v4float %297 %306 +OpStore %_8_output %307 +%308 = OpLoad %v2float %_9_coord +%309 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%310 = OpLoad %v2float %309 +%311 = OpFAdd %v2float %308 %310 +OpStore %_9_coord %311 +%312 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %312 +%313 = OpLoad %v4float %_8_output +OpStore %315 %314 +%316 = OpLoad %v2float %_10_coordSampled +OpStore %317 %316 +%318 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %315 %317 +%319 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 +%320 = OpLoad %v4float %319 +%321 = OpCompositeExtract %float %320 0 +%322 = OpVectorTimesScalar %v4float %318 %321 +%323 = OpFAdd %v4float %313 %322 +OpStore %_8_output %323 +%324 = OpLoad %v2float %_9_coord +%325 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%326 = OpLoad %v2float %325 +%327 = OpFAdd %v2float %324 %326 +OpStore %_9_coord %327 +%328 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %328 +%329 = OpLoad %v4float %_8_output +OpStore %331 %330 +%332 = OpLoad %v2float %_10_coordSampled +OpStore %333 %332 +%334 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %331 %333 +%335 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 +%336 = OpLoad %v4float %335 +%337 = OpCompositeExtract %float %336 1 +%338 = OpVectorTimesScalar %v4float %334 %337 +%339 = OpFAdd %v4float %329 %338 +OpStore %_8_output %339 +%340 = OpLoad %v2float %_9_coord +%341 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%342 = OpLoad %v2float %341 +%343 = OpFAdd %v2float %340 %342 +OpStore %_9_coord %343 +%344 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %344 +%345 = OpLoad %v4float %_8_output +OpStore %347 %346 +%348 = OpLoad %v2float %_10_coordSampled +OpStore %349 %348 +%350 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %347 %349 +%351 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 +%352 = OpLoad %v4float %351 +%353 = OpCompositeExtract %float %352 2 +%354 = OpVectorTimesScalar %v4float %350 %353 +%355 = OpFAdd %v4float %345 %354 +OpStore %_8_output %355 +%356 = OpLoad %v2float %_9_coord +%357 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%358 = OpLoad %v2float %357 +%359 = OpFAdd %v2float %356 %358 +OpStore %_9_coord %359 +%360 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %360 +%361 = OpLoad %v4float %_8_output +OpStore %363 %362 +%364 = OpLoad %v2float %_10_coordSampled +OpStore %365 %364 +%366 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %363 %365 +%367 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_3 +%368 = OpLoad %v4float %367 +%369 = OpCompositeExtract %float %368 3 +%370 = OpVectorTimesScalar %v4float %366 %369 +%371 = OpFAdd %v4float %361 %370 +OpStore %_8_output %371 +%372 = OpLoad %v2float %_9_coord +%373 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%374 = OpLoad %v2float %373 +%375 = OpFAdd %v2float %372 %374 +OpStore %_9_coord %375 +%376 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %376 +%377 = OpLoad %v4float %_8_output +OpStore %379 %378 +%380 = OpLoad %v2float %_10_coordSampled +OpStore %381 %380 +%382 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %379 %381 +%383 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 +%384 = OpLoad %v4float %383 +%385 = OpCompositeExtract %float %384 0 +%386 = OpVectorTimesScalar %v4float %382 %385 +%387 = OpFAdd %v4float %377 %386 +OpStore %_8_output %387 +%388 = OpLoad %v2float %_9_coord +%389 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%390 = OpLoad %v2float %389 +%391 = OpFAdd %v2float %388 %390 +OpStore %_9_coord %391 +%392 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %392 +%393 = OpLoad %v4float %_8_output +OpStore %395 %394 +%396 = OpLoad %v2float %_10_coordSampled +OpStore %397 %396 +%398 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %395 %397 +%399 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 +%400 = OpLoad %v4float %399 +%401 = OpCompositeExtract %float %400 1 +%402 = OpVectorTimesScalar %v4float %398 %401 +%403 = OpFAdd %v4float %393 %402 +OpStore %_8_output %403 +%404 = OpLoad %v2float %_9_coord +%405 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%406 = OpLoad %v2float %405 +%407 = OpFAdd %v2float %404 %406 +OpStore %_9_coord %407 +%408 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %408 +%409 = OpLoad %v4float %_8_output +OpStore %411 %410 +%412 = OpLoad %v2float %_10_coordSampled +OpStore %413 %412 +%414 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %411 %413 +%415 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 +%416 = OpLoad %v4float %415 +%417 = OpCompositeExtract %float %416 2 +%418 = OpVectorTimesScalar %v4float %414 %417 +%419 = OpFAdd %v4float %409 %418 +OpStore %_8_output %419 +%420 = OpLoad %v2float %_9_coord +%421 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%422 = OpLoad %v2float %421 +%423 = OpFAdd %v2float %420 %422 +OpStore %_9_coord %423 +%424 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %424 +%425 = OpLoad %v4float %_8_output +OpStore %427 %426 +%428 = OpLoad %v2float %_10_coordSampled +OpStore %429 %428 +%430 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %427 %429 +%431 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_4 +%432 = OpLoad %v4float %431 +%433 = OpCompositeExtract %float %432 3 +%434 = OpVectorTimesScalar %v4float %430 %433 +%435 = OpFAdd %v4float %425 %434 +OpStore %_8_output %435 +%436 = OpLoad %v2float %_9_coord +%437 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%438 = OpLoad %v2float %437 +%439 = OpFAdd %v2float %436 %438 +OpStore %_9_coord %439 +%440 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %440 +%441 = OpLoad %v4float %_8_output +OpStore %443 %442 +%444 = OpLoad %v2float %_10_coordSampled +OpStore %445 %444 +%446 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %443 %445 +%447 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 +%448 = OpLoad %v4float %447 +%449 = OpCompositeExtract %float %448 0 +%450 = OpVectorTimesScalar %v4float %446 %449 +%451 = OpFAdd %v4float %441 %450 +OpStore %_8_output %451 +%452 = OpLoad %v2float %_9_coord +%453 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%454 = OpLoad %v2float %453 +%455 = OpFAdd %v2float %452 %454 +OpStore %_9_coord %455 +%456 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %456 +%457 = OpLoad %v4float %_8_output +OpStore %459 %458 +%460 = OpLoad %v2float %_10_coordSampled +OpStore %461 %460 +%462 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %459 %461 +%463 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 +%464 = OpLoad %v4float %463 +%465 = OpCompositeExtract %float %464 1 +%466 = OpVectorTimesScalar %v4float %462 %465 +%467 = OpFAdd %v4float %457 %466 +OpStore %_8_output %467 +%468 = OpLoad %v2float %_9_coord +%469 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%470 = OpLoad %v2float %469 +%471 = OpFAdd %v2float %468 %470 +OpStore %_9_coord %471 +%472 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %472 +%473 = OpLoad %v4float %_8_output +OpStore %475 %474 +%476 = OpLoad %v2float %_10_coordSampled +OpStore %477 %476 +%478 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %475 %477 +%479 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 +%480 = OpLoad %v4float %479 +%481 = OpCompositeExtract %float %480 2 +%482 = OpVectorTimesScalar %v4float %478 %481 +%483 = OpFAdd %v4float %473 %482 +OpStore %_8_output %483 +%484 = OpLoad %v2float %_9_coord +%485 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%486 = OpLoad %v2float %485 +%487 = OpFAdd %v2float %484 %486 +OpStore %_9_coord %487 +%488 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %488 +%489 = OpLoad %v4float %_8_output +OpStore %491 %490 +%492 = OpLoad %v2float %_10_coordSampled +OpStore %493 %492 +%494 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %491 %493 +%495 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_5 +%496 = OpLoad %v4float %495 +%497 = OpCompositeExtract %float %496 3 +%498 = OpVectorTimesScalar %v4float %494 %497 +%499 = OpFAdd %v4float %489 %498 +OpStore %_8_output %499 +%500 = OpLoad %v2float %_9_coord +%501 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%502 = OpLoad %v2float %501 +%503 = OpFAdd %v2float %500 %502 +OpStore %_9_coord %503 +%504 = OpLoad %v2float %_9_coord +OpStore %_10_coordSampled %504 +%505 = OpLoad %v4float %_8_output +OpStore %507 %506 +%508 = OpLoad %v2float %_10_coordSampled +OpStore %509 %508 +%510 = OpFunctionCall %v4float %MatrixEffect_Stage1_c0_c0 %507 %509 +%511 = OpAccessChain %_ptr_Uniform_v4float %4 %int_2 %int_6 +%512 = OpLoad %v4float %511 +%513 = OpCompositeExtract %float %512 0 +%514 = OpVectorTimesScalar %v4float %510 %513 +%515 = OpFAdd %v4float %505 %514 +OpStore %_8_output %515 +%516 = OpLoad %v2float %_9_coord +%517 = OpAccessChain %_ptr_Uniform_v2float %4 %int_1 +%518 = OpLoad %v2float %517 +%519 = OpFAdd %v2float %516 %518 +OpStore %_9_coord %519 +%520 = OpLoad %v4float %_8_output +OpStore %output_Stage1 %520 +%521 = OpLoad %v4float %output_Stage1 +OpStore %sk_FragColor %521 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/GeometricIntrinsics.asm.frag b/tests/sksl/shared/golden/GeometricIntrinsics.asm.frag index 24f2475b8a..77e37b40d1 100644 --- a/tests/sksl/shared/golden/GeometricIntrinsics.asm.frag +++ b/tests/sksl/shared/golden/GeometricIntrinsics.asm.frag @@ -35,7 +35,6 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing %float_4 = OpConstant %float 4 %35 = OpConstantComposite %v2float %float_3 %float_4 %41 = OpConstantComposite %v2float %float_3 %float_4 -%float_1_0 = OpConstant %float 1 %main = OpFunction %void None %11 %12 = OpLabel %_1_x = OpVariable %_ptr_Function_float Function @@ -77,7 +76,7 @@ OpStore %y %46 %48 = OpLoad %v2float %y %49 = OpCompositeExtract %float %48 0 %50 = OpCompositeExtract %float %48 1 -%52 = OpCompositeConstruct %v4float %47 %49 %50 %float_1_0 -OpStore %sk_FragColor %52 +%51 = OpCompositeConstruct %v4float %47 %49 %50 %float_1 +OpStore %sk_FragColor %51 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/Hex.asm.frag b/tests/sksl/shared/golden/Hex.asm.frag index 2b5b5f5fbf..e22911d3a7 100644 --- a/tests/sksl/shared/golden/Hex.asm.frag +++ b/tests/sksl/shared/golden/Hex.asm.frag @@ -39,7 +39,6 @@ OpDecorate %53 RelaxedPrecision %uint_2147483647 = OpConstant %uint 2147483647 %uint_4294967295 = OpConstant %uint 4294967295 %uint_65535 = OpConstant %uint 65535 -%uint_1_0 = OpConstant %uint 1 %main = OpFunction %void None %7 %8 = OpLabel %i1 = OpVariable %_ptr_Function_int Function @@ -90,7 +89,7 @@ OpStore %u4 %uint_4294967295 OpStore %u4 %50 OpStore %u5 %uint_65535 %53 = OpLoad %uint %u5 -%55 = OpIAdd %uint %53 %uint_1_0 -OpStore %u5 %55 +%54 = OpIAdd %uint %53 %uint_1 +OpStore %u5 %54 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/IntFolding.asm.frag b/tests/sksl/shared/golden/IntFolding.asm.frag index d69204e4c0..7d104bf1d7 100644 --- a/tests/sksl/shared/golden/IntFolding.asm.frag +++ b/tests/sksl/shared/golden/IntFolding.asm.frag @@ -44,12 +44,8 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing %float_n10 = OpConstant %float -10 %float_11 = OpConstant %float 11 %float_n12 = OpConstant %float -12 -%float_1_0 = OpConstant %float 1 %float_2 = OpConstant %float 2 -%float_3_0 = OpConstant %float 3 %float_0 = OpConstant %float 0 -%float_5_0 = OpConstant %float 5 -%float_6_0 = OpConstant %float 6 %float_8 = OpConstant %float 8 %_ptr_Function_int = OpTypePointer Function %int %int_1 = OpConstant %int 1 @@ -101,60 +97,60 @@ OpStore %53 %float_n10 OpStore %55 %float_11 %57 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 OpStore %57 %float_n12 -%60 = OpExtInst %float %1 Sqrt %float_1_0 +%60 = OpExtInst %float %1 Sqrt %float_1 %59 = OpConvertFToS %int %60 %58 = OpConvertSToF %float %59 -%62 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %62 %58 -%65 = OpExtInst %float %1 Sqrt %float_2 -%64 = OpConvertFToS %int %65 -%63 = OpConvertSToF %float %64 -%67 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %67 %63 -%70 = OpExtInst %float %1 Sqrt %float_3_0 -%69 = OpConvertFToS %int %70 -%68 = OpConvertSToF %float %69 +%61 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %61 %58 +%64 = OpExtInst %float %1 Sqrt %float_2 +%63 = OpConvertFToS %int %64 +%62 = OpConvertSToF %float %63 +%66 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %66 %62 +%69 = OpExtInst %float %1 Sqrt %float_3 +%68 = OpConvertFToS %int %69 +%67 = OpConvertSToF %float %68 +%70 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %70 %67 %72 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %72 %68 -%74 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %74 %float_0 -%77 = OpExtInst %float %1 Sqrt %float_5_0 -%76 = OpConvertFToS %int %77 -%75 = OpConvertSToF %float %76 -%79 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %79 %75 -%82 = OpExtInst %float %1 Sqrt %float_6_0 -%81 = OpConvertFToS %int %82 -%80 = OpConvertSToF %float %81 -%84 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %84 %80 -%85 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %85 %float_0 -%88 = OpExtInst %float %1 Sqrt %float_8 -%87 = OpConvertFToS %int %88 -%86 = OpConvertSToF %float %87 -%90 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %90 %86 -%91 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %91 %float_0 -%95 = OpExtInst %float %1 Sqrt %float_2 -%94 = OpConvertFToS %int %95 +OpStore %72 %float_0 +%75 = OpExtInst %float %1 Sqrt %float_5 +%74 = OpConvertFToS %int %75 +%73 = OpConvertSToF %float %74 +%76 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %76 %73 +%79 = OpExtInst %float %1 Sqrt %float_6 +%78 = OpConvertFToS %int %79 +%77 = OpConvertSToF %float %78 +%80 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %80 %77 +%81 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %81 %float_0 +%84 = OpExtInst %float %1 Sqrt %float_8 +%83 = OpConvertFToS %int %84 +%82 = OpConvertSToF %float %83 +%86 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %86 %82 +%87 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %87 %float_0 +%91 = OpExtInst %float %1 Sqrt %float_2 +%90 = OpConvertFToS %int %91 +OpStore %x %90 +%92 = OpLoad %int %x +%94 = OpIAdd %int %92 %int_1 OpStore %x %94 -%96 = OpLoad %int %x -%98 = OpIAdd %int %96 %int_1 -OpStore %x %98 -%99 = OpLoad %int %x -%100 = OpISub %int %99 %int_1 -OpStore %x %100 -%101 = OpLoad %int %x -%103 = OpIMul %int %101 %int_2 -OpStore %x %103 -%104 = OpLoad %int %x -%105 = OpSDiv %int %104 %int_2 -OpStore %x %105 -%107 = OpLoad %int %x -%106 = OpConvertSToF %float %107 -%108 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %108 %106 +%95 = OpLoad %int %x +%96 = OpISub %int %95 %int_1 +OpStore %x %96 +%97 = OpLoad %int %x +%99 = OpIMul %int %97 %int_2 +OpStore %x %99 +%100 = OpLoad %int %x +%101 = OpSDiv %int %100 %int_2 +OpStore %x %101 +%103 = OpLoad %int %x +%102 = OpConvertSToF %float %103 +%104 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %104 %102 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/MixedTypeCommaOperator.asm.frag b/tests/sksl/shared/golden/MixedTypeCommaOperator.asm.frag index 816b839c68..e3317540d1 100644 --- a/tests/sksl/shared/golden/MixedTypeCommaOperator.asm.frag +++ b/tests/sksl/shared/golden/MixedTypeCommaOperator.asm.frag @@ -27,9 +27,8 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing %int_0 = OpConstant %int 0 %v2float = OpTypeVector %float 2 %21 = OpConstantComposite %v2float %float_1 %float_1 -%float_1_0 = OpConstant %float 1 %v3float = OpTypeVector %float 3 -%25 = OpConstantComposite %v3float %float_1_0 %float_1_0 %float_1_0 +%25 = OpConstantComposite %v3float %float_1 %float_1 %float_1 %int_2 = OpConstant %int 2 %float_0 = OpConstant %float 0 %mat2v2float = OpTypeMatrix %v2float 2 @@ -43,13 +42,13 @@ OpStore %17 %13 %23 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_1 OpStore %23 %20 %24 = OpConvertSToF %float %int_1 -%28 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_2 -OpStore %28 %24 -%33 = OpCompositeConstruct %v2float %float_1 %float_0 -%34 = OpCompositeConstruct %v2float %float_0 %float_1 -%31 = OpCompositeConstruct %mat2v2float %33 %34 -%30 = OpConvertSToF %float %int_1 -%36 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_3 -OpStore %36 %30 +%27 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_2 +OpStore %27 %24 +%32 = OpCompositeConstruct %v2float %float_1 %float_0 +%33 = OpCompositeConstruct %v2float %float_0 %float_1 +%30 = OpCompositeConstruct %mat2v2float %32 %33 +%29 = OpConvertSToF %float %int_1 +%35 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_3 +OpStore %35 %29 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/OutParams.asm.frag b/tests/sksl/shared/golden/OutParams.asm.frag index 1a3fd0a6a9..761c176801 100644 --- a/tests/sksl/shared/golden/OutParams.asm.frag +++ b/tests/sksl/shared/golden/OutParams.asm.frag @@ -45,9 +45,9 @@ OpDecorate %57 RelaxedPrecision OpDecorate %72 RelaxedPrecision OpDecorate %75 RelaxedPrecision OpDecorate %78 RelaxedPrecision +OpDecorate %157 RelaxedPrecision OpDecorate %161 RelaxedPrecision -OpDecorate %166 RelaxedPrecision -OpDecorate %169 RelaxedPrecision +OpDecorate %164 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float @@ -94,25 +94,20 @@ OpDecorate %169 RelaxedPrecision %v3int = OpTypeVector %int 3 %91 = OpConstantComposite %v3int %int_3 %int_3 %int_3 %_ptr_Function_int = OpTypePointer Function %int -%float_2_0 = OpConstant %float 2 -%105 = OpConstantComposite %v2float %float_2_0 %float_2_0 -%float_3_0 = OpConstant %float 3 -%108 = OpConstantComposite %v3float %float_3_0 %float_3_0 %float_3_0 -%110 = OpConstantComposite %v2float %float_2_0 %float_2_0 -%float_1_0 = OpConstant %float 1 -%float_4_0 = OpConstant %float 4 +%105 = OpConstantComposite %v2float %float_2 %float_2 +%107 = OpConstantComposite %v3float %float_3 %float_3 %float_3 +%108 = OpConstantComposite %v2float %float_2 %float_2 %v3bool = OpTypeVector %bool 3 %_ptr_Function_v3bool = OpTypePointer Function %v3bool %true = OpConstantTrue %bool -%151 = OpConstantComposite %v3bool %true %true %true +%147 = OpConstantComposite %v3bool %true %true %true %v4bool = OpTypeVector %bool 4 %_ptr_Function_v4bool = OpTypePointer Function %v4bool %false = OpConstantFalse %bool -%156 = OpConstantComposite %v4bool %false %false %false %false +%152 = OpConstantComposite %v4bool %false %false %false %false %v2bool = OpTypeVector %bool 2 -%158 = OpConstantComposite %v2bool %false %false +%154 = OpConstantComposite %v2bool %false %false %_ptr_Function_bool = OpTypePointer Function %bool -%float_0_0 = OpConstant %float 0 %main = OpFunction %void None %11 %12 = OpLabel %h3 = OpVariable %_ptr_Function_v3float Function @@ -125,8 +120,8 @@ OpDecorate %169 RelaxedPrecision %f2 = OpVariable %_ptr_Function_v2float Function %f3 = OpVariable %_ptr_Function_v3float Function %f2x2 = OpVariable %_ptr_Function_mat2v2float Function -%129 = OpVariable %_ptr_Function_mat3v3float Function -%137 = OpVariable %_ptr_Function_mat4v4float Function +%126 = OpVariable %_ptr_Function_mat3v3float Function +%134 = OpVariable %_ptr_Function_mat4v4float Function %b3 = OpVariable %_ptr_Function_v3bool Function %b4 = OpVariable %_ptr_Function_v4bool Function OpStore %h3 %16 @@ -195,61 +190,61 @@ OpStore %95 %int_1 %103 = OpCompositeConstruct %v4float %float_1 %97 %float_3 %100 OpStore %sk_FragColor %103 OpStore %f2 %105 -OpStore %f3 %108 -%111 = OpLoad %v3float %f3 -%112 = OpVectorShuffle %v3float %111 %110 3 4 2 -OpStore %f3 %112 -%114 = OpAccessChain %_ptr_Function_float %f2 %int_0 -OpStore %114 %float_1_0 -%115 = OpLoad %v2float %f2 -%116 = OpCompositeExtract %float %115 0 -%117 = OpLoad %v3float %f3 -%118 = OpCompositeExtract %float %117 0 -%119 = OpCompositeConstruct %v4float %float_1 %116 %118 %float_4 -OpStore %sk_FragColor %119 -%122 = OpCompositeConstruct %v2float %float_2_0 %float_0 -%123 = OpCompositeConstruct %v2float %float_0 %float_2_0 -%121 = OpCompositeConstruct %mat2v2float %122 %123 -OpStore %f2x2 %121 -%124 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0 -%125 = OpAccessChain %_ptr_Function_float %124 %int_0 -OpStore %125 %float_1_0 -%126 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0 -%127 = OpLoad %v2float %126 -%128 = OpCompositeExtract %float %127 0 -%131 = OpCompositeConstruct %v3float %float_3_0 %float_0 %float_0 -%132 = OpCompositeConstruct %v3float %float_0 %float_3_0 %float_0 -%133 = OpCompositeConstruct %v3float %float_0 %float_0 %float_3_0 -%130 = OpCompositeConstruct %mat3v3float %131 %132 %133 -OpStore %129 %130 -%134 = OpAccessChain %_ptr_Function_v3float %129 %int_0 -%135 = OpLoad %v3float %134 -%136 = OpCompositeExtract %float %135 0 -%140 = OpCompositeConstruct %v4float %float_4_0 %float_0 %float_0 %float_0 -%141 = OpCompositeConstruct %v4float %float_0 %float_4_0 %float_0 %float_0 -%142 = OpCompositeConstruct %v4float %float_0 %float_0 %float_4_0 %float_0 -%143 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_4_0 -%139 = OpCompositeConstruct %mat4v4float %140 %141 %142 %143 -OpStore %137 %139 -%144 = OpAccessChain %_ptr_Function_v4float %137 %int_0 -%145 = OpLoad %v4float %144 -%146 = OpCompositeExtract %float %145 0 -%147 = OpCompositeConstruct %v4float %128 %136 %146 %float_1 -OpStore %sk_FragColor %147 -OpStore %b3 %151 -OpStore %b4 %156 -%160 = OpLoad %v4bool %b4 -%161 = OpVectorShuffle %v4bool %160 %158 4 1 2 5 -OpStore %b4 %161 -%162 = OpAccessChain %_ptr_Function_bool %b3 %int_2 -OpStore %162 %true -%166 = OpLoad %v3bool %b3 -%167 = OpCompositeExtract %bool %166 0 -%165 = OpSelect %float %167 %float_1_0 %float_0 -%169 = OpLoad %v4bool %b4 -%170 = OpCompositeExtract %bool %169 0 -%168 = OpSelect %float %170 %float_1_0 %float_0 -%171 = OpCompositeConstruct %v4float %float_1 %float_0_0 %165 %168 -OpStore %sk_FragColor %171 +OpStore %f3 %107 +%109 = OpLoad %v3float %f3 +%110 = OpVectorShuffle %v3float %109 %108 3 4 2 +OpStore %f3 %110 +%111 = OpAccessChain %_ptr_Function_float %f2 %int_0 +OpStore %111 %float_1 +%112 = OpLoad %v2float %f2 +%113 = OpCompositeExtract %float %112 0 +%114 = OpLoad %v3float %f3 +%115 = OpCompositeExtract %float %114 0 +%116 = OpCompositeConstruct %v4float %float_1 %113 %115 %float_4 +OpStore %sk_FragColor %116 +%119 = OpCompositeConstruct %v2float %float_2 %float_0 +%120 = OpCompositeConstruct %v2float %float_0 %float_2 +%118 = OpCompositeConstruct %mat2v2float %119 %120 +OpStore %f2x2 %118 +%121 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0 +%122 = OpAccessChain %_ptr_Function_float %121 %int_0 +OpStore %122 %float_1 +%123 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0 +%124 = OpLoad %v2float %123 +%125 = OpCompositeExtract %float %124 0 +%128 = OpCompositeConstruct %v3float %float_3 %float_0 %float_0 +%129 = OpCompositeConstruct %v3float %float_0 %float_3 %float_0 +%130 = OpCompositeConstruct %v3float %float_0 %float_0 %float_3 +%127 = OpCompositeConstruct %mat3v3float %128 %129 %130 +OpStore %126 %127 +%131 = OpAccessChain %_ptr_Function_v3float %126 %int_0 +%132 = OpLoad %v3float %131 +%133 = OpCompositeExtract %float %132 0 +%136 = OpCompositeConstruct %v4float %float_4 %float_0 %float_0 %float_0 +%137 = OpCompositeConstruct %v4float %float_0 %float_4 %float_0 %float_0 +%138 = OpCompositeConstruct %v4float %float_0 %float_0 %float_4 %float_0 +%139 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_4 +%135 = OpCompositeConstruct %mat4v4float %136 %137 %138 %139 +OpStore %134 %135 +%140 = OpAccessChain %_ptr_Function_v4float %134 %int_0 +%141 = OpLoad %v4float %140 +%142 = OpCompositeExtract %float %141 0 +%143 = OpCompositeConstruct %v4float %125 %133 %142 %float_1 +OpStore %sk_FragColor %143 +OpStore %b3 %147 +OpStore %b4 %152 +%156 = OpLoad %v4bool %b4 +%157 = OpVectorShuffle %v4bool %156 %154 4 1 2 5 +OpStore %b4 %157 +%158 = OpAccessChain %_ptr_Function_bool %b3 %int_2 +OpStore %158 %true +%161 = OpLoad %v3bool %b3 +%162 = OpCompositeExtract %bool %161 0 +%160 = OpSelect %float %162 %float_1 %float_0 +%164 = OpLoad %v4bool %b4 +%165 = OpCompositeExtract %bool %164 0 +%163 = OpSelect %float %165 %float_1 %float_0 +%166 = OpCompositeConstruct %v4float %float_1 %float_0 %160 %163 +OpStore %sk_FragColor %166 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/StaticSwitchWithConditionalBreakInsideBlock.asm.frag b/tests/sksl/shared/golden/StaticSwitchWithConditionalBreakInsideBlock.asm.frag index dd3ed4c605..5f95f47309 100644 --- a/tests/sksl/shared/golden/StaticSwitchWithConditionalBreakInsideBlock.asm.frag +++ b/tests/sksl/shared/golden/StaticSwitchWithConditionalBreakInsideBlock.asm.frag @@ -24,8 +24,7 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing %int_0 = OpConstant %int 0 %float_0 = OpConstant %float 0 %float_1 = OpConstant %float 1 -%float_0_0 = OpConstant %float 0 -%24 = OpConstantComposite %v4float %float_0_0 %float_0_0 %float_0_0 %float_0_0 +%24 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %main = OpFunction %void None %11 %12 = OpLabel OpSelectionMerge %15 None diff --git a/tests/sksl/shared/golden/SwitchContainingDeadCode.asm.frag b/tests/sksl/shared/golden/SwitchContainingDeadCode.asm.frag index 1e70d69a9e..b6e9e55ed6 100644 --- a/tests/sksl/shared/golden/SwitchContainingDeadCode.asm.frag +++ b/tests/sksl/shared/golden/SwitchContainingDeadCode.asm.frag @@ -22,8 +22,7 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing %11 = OpTypeFunction %void %float_2 = OpConstant %float 2 %int = OpTypeInt 32 1 -%float_2_0 = OpConstant %float 2 -%21 = OpConstantComposite %v4float %float_2_0 %float_2_0 %float_2_0 %float_2_0 +%21 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 %main = OpFunction %void None %11 %12 = OpLabel %14 = OpExtInst %float %1 Sqrt %float_2 diff --git a/tests/sksl/shared/golden/SwizzleBoolConstants.asm.frag b/tests/sksl/shared/golden/SwizzleBoolConstants.asm.frag index f2f0cdab75..c7e85bb36e 100644 --- a/tests/sksl/shared/golden/SwizzleBoolConstants.asm.frag +++ b/tests/sksl/shared/golden/SwizzleBoolConstants.asm.frag @@ -46,7 +46,7 @@ OpDecorate %127 RelaxedPrecision OpDecorate %132 RelaxedPrecision OpDecorate %135 RelaxedPrecision OpDecorate %139 RelaxedPrecision -OpDecorate %149 RelaxedPrecision +OpDecorate %148 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float @@ -64,10 +64,9 @@ OpDecorate %149 RelaxedPrecision %false = OpConstantFalse %bool %v3bool = OpTypeVector %bool 3 %_ptr_Function_v4float = OpTypePointer Function %v4float -%float_1_0 = OpConstant %float 1 -%145 = OpConstantComposite %v4float %float_1_0 %float_1_0 %float_1_0 %float_1_0 +%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 +%146 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %main = OpFunction %void None %11 %12 = OpLabel %v = OpVariable %_ptr_Function_v4bool Function @@ -224,10 +223,10 @@ OpBranchConditional %138 %142 %143 OpStore %140 %145 OpBranch %144 %143 = OpLabel -OpStore %140 %147 +OpStore %140 %146 OpBranch %144 %144 = OpLabel -%149 = OpLoad %v4float %140 -OpStore %sk_FragColor %149 +%148 = OpLoad %v4float %140 +OpStore %sk_FragColor %148 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/SwizzleConstants.asm.frag b/tests/sksl/shared/golden/SwizzleConstants.asm.frag index 0c3beef208..f6509a7c09 100644 --- a/tests/sksl/shared/golden/SwizzleConstants.asm.frag +++ b/tests/sksl/shared/golden/SwizzleConstants.asm.frag @@ -13,37 +13,37 @@ OpDecorate %sk_FragColor Index 0 OpDecorate %sk_Clockwise RelaxedPrecision OpDecorate %sk_Clockwise BuiltIn FrontFacing OpDecorate %18 RelaxedPrecision -OpDecorate %22 RelaxedPrecision -OpDecorate %28 RelaxedPrecision -OpDecorate %32 RelaxedPrecision -OpDecorate %35 RelaxedPrecision -OpDecorate %42 RelaxedPrecision -OpDecorate %47 RelaxedPrecision -OpDecorate %49 RelaxedPrecision -OpDecorate %52 RelaxedPrecision -OpDecorate %55 RelaxedPrecision -OpDecorate %60 RelaxedPrecision -OpDecorate %63 RelaxedPrecision +OpDecorate %21 RelaxedPrecision +OpDecorate %27 RelaxedPrecision +OpDecorate %31 RelaxedPrecision +OpDecorate %34 RelaxedPrecision +OpDecorate %41 RelaxedPrecision +OpDecorate %46 RelaxedPrecision +OpDecorate %48 RelaxedPrecision +OpDecorate %51 RelaxedPrecision +OpDecorate %54 RelaxedPrecision +OpDecorate %59 RelaxedPrecision +OpDecorate %62 RelaxedPrecision +OpDecorate %65 RelaxedPrecision OpDecorate %66 RelaxedPrecision -OpDecorate %67 RelaxedPrecision -OpDecorate %73 RelaxedPrecision -OpDecorate %77 RelaxedPrecision -OpDecorate %80 RelaxedPrecision -OpDecorate %85 RelaxedPrecision -OpDecorate %87 RelaxedPrecision -OpDecorate %92 RelaxedPrecision -OpDecorate %94 RelaxedPrecision -OpDecorate %97 RelaxedPrecision -OpDecorate %99 RelaxedPrecision -OpDecorate %102 RelaxedPrecision -OpDecorate %105 RelaxedPrecision -OpDecorate %111 RelaxedPrecision -OpDecorate %116 RelaxedPrecision -OpDecorate %118 RelaxedPrecision -OpDecorate %121 RelaxedPrecision -OpDecorate %124 RelaxedPrecision -OpDecorate %129 RelaxedPrecision -OpDecorate %132 RelaxedPrecision +OpDecorate %72 RelaxedPrecision +OpDecorate %76 RelaxedPrecision +OpDecorate %79 RelaxedPrecision +OpDecorate %84 RelaxedPrecision +OpDecorate %86 RelaxedPrecision +OpDecorate %91 RelaxedPrecision +OpDecorate %93 RelaxedPrecision +OpDecorate %96 RelaxedPrecision +OpDecorate %98 RelaxedPrecision +OpDecorate %101 RelaxedPrecision +OpDecorate %104 RelaxedPrecision +OpDecorate %110 RelaxedPrecision +OpDecorate %115 RelaxedPrecision +OpDecorate %117 RelaxedPrecision +OpDecorate %120 RelaxedPrecision +OpDecorate %123 RelaxedPrecision +OpDecorate %128 RelaxedPrecision +OpDecorate %131 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float @@ -55,7 +55,6 @@ OpDecorate %132 RelaxedPrecision %11 = OpTypeFunction %void %_ptr_Function_v4float = OpTypePointer Function %v4float %float_1 = OpConstant %float 1 -%float_1_0 = OpConstant %float 1 %v2float = OpTypeVector %float 2 %float_0 = OpConstant %float 0 %v3float = OpTypeVector %float 3 @@ -67,142 +66,142 @@ OpDecorate %132 RelaxedPrecision OpStore %v %17 %18 = OpLoad %v4float %v %19 = OpCompositeExtract %float %18 0 -%21 = OpCompositeConstruct %v4float %19 %float_1_0 %float_1_0 %float_1_0 -OpStore %sk_FragColor %21 -%22 = OpLoad %v4float %v -%23 = OpVectorShuffle %v2float %22 %22 0 1 -%25 = OpCompositeExtract %float %23 0 -%26 = OpCompositeExtract %float %23 1 -%27 = OpCompositeConstruct %v4float %25 %26 %float_1_0 %float_1_0 -OpStore %sk_FragColor %27 -%28 = OpLoad %v4float %v -%29 = OpCompositeExtract %float %28 0 -%30 = OpCompositeConstruct %v4float %29 %float_1_0 %float_1_0 %float_1_0 -OpStore %sk_FragColor %30 -%32 = OpLoad %v4float %v -%33 = OpCompositeExtract %float %32 1 -%34 = OpCompositeConstruct %v4float %float_0 %33 %float_1_0 %float_1_0 -OpStore %sk_FragColor %34 -%35 = OpLoad %v4float %v -%36 = OpVectorShuffle %v3float %35 %35 0 1 2 -%38 = OpCompositeExtract %float %36 0 -%39 = OpCompositeExtract %float %36 1 -%40 = OpCompositeExtract %float %36 2 -%41 = OpCompositeConstruct %v4float %38 %39 %40 %float_1_0 -OpStore %sk_FragColor %41 -%42 = OpLoad %v4float %v -%43 = OpVectorShuffle %v2float %42 %42 0 1 -%44 = OpCompositeExtract %float %43 0 -%45 = OpCompositeExtract %float %43 1 -%46 = OpCompositeConstruct %v4float %44 %45 %float_1_0 %float_1_0 -OpStore %sk_FragColor %46 -%47 = OpLoad %v4float %v -%48 = OpCompositeExtract %float %47 0 -%49 = OpLoad %v4float %v -%50 = OpCompositeExtract %float %49 2 -%51 = OpCompositeConstruct %v4float %48 %float_0 %50 %float_1_0 -OpStore %sk_FragColor %51 -%52 = OpLoad %v4float %v -%53 = OpCompositeExtract %float %52 0 -%54 = OpCompositeConstruct %v4float %53 %float_1_0 %float_0 %float_1_0 -OpStore %sk_FragColor %54 -%55 = OpLoad %v4float %v -%56 = OpVectorShuffle %v2float %55 %55 1 2 -%57 = OpCompositeExtract %float %56 0 -%58 = OpCompositeExtract %float %56 1 -%59 = OpCompositeConstruct %v4float %float_1_0 %57 %58 %float_1_0 -OpStore %sk_FragColor %59 -%60 = OpLoad %v4float %v -%61 = OpCompositeExtract %float %60 1 -%62 = OpCompositeConstruct %v4float %float_0 %61 %float_1_0 %float_1_0 -OpStore %sk_FragColor %62 -%63 = OpLoad %v4float %v -%64 = OpCompositeExtract %float %63 2 -%65 = OpCompositeConstruct %v4float %float_1_0 %float_1_0 %64 %float_1_0 +%20 = OpCompositeConstruct %v4float %19 %float_1 %float_1 %float_1 +OpStore %sk_FragColor %20 +%21 = OpLoad %v4float %v +%22 = OpVectorShuffle %v2float %21 %21 0 1 +%24 = OpCompositeExtract %float %22 0 +%25 = OpCompositeExtract %float %22 1 +%26 = OpCompositeConstruct %v4float %24 %25 %float_1 %float_1 +OpStore %sk_FragColor %26 +%27 = OpLoad %v4float %v +%28 = OpCompositeExtract %float %27 0 +%29 = OpCompositeConstruct %v4float %28 %float_1 %float_1 %float_1 +OpStore %sk_FragColor %29 +%31 = OpLoad %v4float %v +%32 = OpCompositeExtract %float %31 1 +%33 = OpCompositeConstruct %v4float %float_0 %32 %float_1 %float_1 +OpStore %sk_FragColor %33 +%34 = OpLoad %v4float %v +%35 = OpVectorShuffle %v3float %34 %34 0 1 2 +%37 = OpCompositeExtract %float %35 0 +%38 = OpCompositeExtract %float %35 1 +%39 = OpCompositeExtract %float %35 2 +%40 = OpCompositeConstruct %v4float %37 %38 %39 %float_1 +OpStore %sk_FragColor %40 +%41 = OpLoad %v4float %v +%42 = OpVectorShuffle %v2float %41 %41 0 1 +%43 = OpCompositeExtract %float %42 0 +%44 = OpCompositeExtract %float %42 1 +%45 = OpCompositeConstruct %v4float %43 %44 %float_1 %float_1 +OpStore %sk_FragColor %45 +%46 = OpLoad %v4float %v +%47 = OpCompositeExtract %float %46 0 +%48 = OpLoad %v4float %v +%49 = OpCompositeExtract %float %48 2 +%50 = OpCompositeConstruct %v4float %47 %float_0 %49 %float_1 +OpStore %sk_FragColor %50 +%51 = OpLoad %v4float %v +%52 = OpCompositeExtract %float %51 0 +%53 = OpCompositeConstruct %v4float %52 %float_1 %float_0 %float_1 +OpStore %sk_FragColor %53 +%54 = OpLoad %v4float %v +%55 = OpVectorShuffle %v2float %54 %54 1 2 +%56 = OpCompositeExtract %float %55 0 +%57 = OpCompositeExtract %float %55 1 +%58 = OpCompositeConstruct %v4float %float_1 %56 %57 %float_1 +OpStore %sk_FragColor %58 +%59 = OpLoad %v4float %v +%60 = OpCompositeExtract %float %59 1 +%61 = OpCompositeConstruct %v4float %float_0 %60 %float_1 %float_1 +OpStore %sk_FragColor %61 +%62 = OpLoad %v4float %v +%63 = OpCompositeExtract %float %62 2 +%64 = OpCompositeConstruct %v4float %float_1 %float_1 %63 %float_1 +OpStore %sk_FragColor %64 +%65 = OpLoad %v4float %v OpStore %sk_FragColor %65 %66 = OpLoad %v4float %v -OpStore %sk_FragColor %66 -%67 = OpLoad %v4float %v -%68 = OpVectorShuffle %v3float %67 %67 0 1 2 -%69 = OpCompositeExtract %float %68 0 -%70 = OpCompositeExtract %float %68 1 -%71 = OpCompositeExtract %float %68 2 -%72 = OpCompositeConstruct %v4float %69 %70 %71 %float_1_0 -OpStore %sk_FragColor %72 -%73 = OpLoad %v4float %v -%74 = OpVectorShuffle %v2float %73 %73 0 1 -%75 = OpCompositeExtract %float %74 0 -%76 = OpCompositeExtract %float %74 1 -%77 = OpLoad %v4float %v -%78 = OpCompositeExtract %float %77 3 -%79 = OpCompositeConstruct %v4float %75 %76 %float_0 %78 -OpStore %sk_FragColor %79 -%80 = OpLoad %v4float %v -%81 = OpVectorShuffle %v2float %80 %80 0 1 -%82 = OpCompositeExtract %float %81 0 -%83 = OpCompositeExtract %float %81 1 -%84 = OpCompositeConstruct %v4float %82 %83 %float_1_0 %float_0 -OpStore %sk_FragColor %84 -%85 = OpLoad %v4float %v -%86 = OpCompositeExtract %float %85 0 -%87 = OpLoad %v4float %v -%88 = OpVectorShuffle %v2float %87 %87 2 3 -%89 = OpCompositeExtract %float %88 0 -%90 = OpCompositeExtract %float %88 1 -%91 = OpCompositeConstruct %v4float %86 %float_1_0 %89 %90 -OpStore %sk_FragColor %91 -%92 = OpLoad %v4float %v -%93 = OpCompositeExtract %float %92 0 -%94 = OpLoad %v4float %v -%95 = OpCompositeExtract %float %94 2 -%96 = OpCompositeConstruct %v4float %93 %float_0 %95 %float_1_0 -OpStore %sk_FragColor %96 -%97 = OpLoad %v4float %v -%98 = OpCompositeExtract %float %97 0 -%99 = OpLoad %v4float %v -%100 = OpCompositeExtract %float %99 3 -%101 = OpCompositeConstruct %v4float %98 %float_1_0 %float_1_0 %100 -OpStore %sk_FragColor %101 -%102 = OpLoad %v4float %v -%103 = OpCompositeExtract %float %102 0 -%104 = OpCompositeConstruct %v4float %103 %float_1_0 %float_0 %float_1_0 -OpStore %sk_FragColor %104 -%105 = OpLoad %v4float %v -%106 = OpVectorShuffle %v3float %105 %105 1 2 3 -%107 = OpCompositeExtract %float %106 0 -%108 = OpCompositeExtract %float %106 1 -%109 = OpCompositeExtract %float %106 2 -%110 = OpCompositeConstruct %v4float %float_1_0 %107 %108 %109 -OpStore %sk_FragColor %110 -%111 = OpLoad %v4float %v -%112 = OpVectorShuffle %v2float %111 %111 1 2 -%113 = OpCompositeExtract %float %112 0 -%114 = OpCompositeExtract %float %112 1 -%115 = OpCompositeConstruct %v4float %float_0 %113 %114 %float_1_0 -OpStore %sk_FragColor %115 -%116 = OpLoad %v4float %v -%117 = OpCompositeExtract %float %116 1 -%118 = OpLoad %v4float %v -%119 = OpCompositeExtract %float %118 3 -%120 = OpCompositeConstruct %v4float %float_0 %117 %float_1_0 %119 -OpStore %sk_FragColor %120 -%121 = OpLoad %v4float %v -%122 = OpCompositeExtract %float %121 1 -%123 = OpCompositeConstruct %v4float %float_1_0 %122 %float_1_0 %float_1_0 -OpStore %sk_FragColor %123 -%124 = OpLoad %v4float %v -%125 = OpVectorShuffle %v2float %124 %124 2 3 -%126 = OpCompositeExtract %float %125 0 -%127 = OpCompositeExtract %float %125 1 -%128 = OpCompositeConstruct %v4float %float_0 %float_0 %126 %127 -OpStore %sk_FragColor %128 -%129 = OpLoad %v4float %v -%130 = OpCompositeExtract %float %129 2 -%131 = OpCompositeConstruct %v4float %float_0 %float_0 %130 %float_1_0 -OpStore %sk_FragColor %131 -%132 = OpLoad %v4float %v -%133 = OpCompositeExtract %float %132 3 -%134 = OpCompositeConstruct %v4float %float_0 %float_1_0 %float_1_0 %133 -OpStore %sk_FragColor %134 +%67 = OpVectorShuffle %v3float %66 %66 0 1 2 +%68 = OpCompositeExtract %float %67 0 +%69 = OpCompositeExtract %float %67 1 +%70 = OpCompositeExtract %float %67 2 +%71 = OpCompositeConstruct %v4float %68 %69 %70 %float_1 +OpStore %sk_FragColor %71 +%72 = OpLoad %v4float %v +%73 = OpVectorShuffle %v2float %72 %72 0 1 +%74 = OpCompositeExtract %float %73 0 +%75 = OpCompositeExtract %float %73 1 +%76 = OpLoad %v4float %v +%77 = OpCompositeExtract %float %76 3 +%78 = OpCompositeConstruct %v4float %74 %75 %float_0 %77 +OpStore %sk_FragColor %78 +%79 = OpLoad %v4float %v +%80 = OpVectorShuffle %v2float %79 %79 0 1 +%81 = OpCompositeExtract %float %80 0 +%82 = OpCompositeExtract %float %80 1 +%83 = OpCompositeConstruct %v4float %81 %82 %float_1 %float_0 +OpStore %sk_FragColor %83 +%84 = OpLoad %v4float %v +%85 = OpCompositeExtract %float %84 0 +%86 = OpLoad %v4float %v +%87 = OpVectorShuffle %v2float %86 %86 2 3 +%88 = OpCompositeExtract %float %87 0 +%89 = OpCompositeExtract %float %87 1 +%90 = OpCompositeConstruct %v4float %85 %float_1 %88 %89 +OpStore %sk_FragColor %90 +%91 = OpLoad %v4float %v +%92 = OpCompositeExtract %float %91 0 +%93 = OpLoad %v4float %v +%94 = OpCompositeExtract %float %93 2 +%95 = OpCompositeConstruct %v4float %92 %float_0 %94 %float_1 +OpStore %sk_FragColor %95 +%96 = OpLoad %v4float %v +%97 = OpCompositeExtract %float %96 0 +%98 = OpLoad %v4float %v +%99 = OpCompositeExtract %float %98 3 +%100 = OpCompositeConstruct %v4float %97 %float_1 %float_1 %99 +OpStore %sk_FragColor %100 +%101 = OpLoad %v4float %v +%102 = OpCompositeExtract %float %101 0 +%103 = OpCompositeConstruct %v4float %102 %float_1 %float_0 %float_1 +OpStore %sk_FragColor %103 +%104 = OpLoad %v4float %v +%105 = OpVectorShuffle %v3float %104 %104 1 2 3 +%106 = OpCompositeExtract %float %105 0 +%107 = OpCompositeExtract %float %105 1 +%108 = OpCompositeExtract %float %105 2 +%109 = OpCompositeConstruct %v4float %float_1 %106 %107 %108 +OpStore %sk_FragColor %109 +%110 = OpLoad %v4float %v +%111 = OpVectorShuffle %v2float %110 %110 1 2 +%112 = OpCompositeExtract %float %111 0 +%113 = OpCompositeExtract %float %111 1 +%114 = OpCompositeConstruct %v4float %float_0 %112 %113 %float_1 +OpStore %sk_FragColor %114 +%115 = OpLoad %v4float %v +%116 = OpCompositeExtract %float %115 1 +%117 = OpLoad %v4float %v +%118 = OpCompositeExtract %float %117 3 +%119 = OpCompositeConstruct %v4float %float_0 %116 %float_1 %118 +OpStore %sk_FragColor %119 +%120 = OpLoad %v4float %v +%121 = OpCompositeExtract %float %120 1 +%122 = OpCompositeConstruct %v4float %float_1 %121 %float_1 %float_1 +OpStore %sk_FragColor %122 +%123 = OpLoad %v4float %v +%124 = OpVectorShuffle %v2float %123 %123 2 3 +%125 = OpCompositeExtract %float %124 0 +%126 = OpCompositeExtract %float %124 1 +%127 = OpCompositeConstruct %v4float %float_0 %float_0 %125 %126 +OpStore %sk_FragColor %127 +%128 = OpLoad %v4float %v +%129 = OpCompositeExtract %float %128 2 +%130 = OpCompositeConstruct %v4float %float_0 %float_0 %129 %float_1 +OpStore %sk_FragColor %130 +%131 = OpLoad %v4float %v +%132 = OpCompositeExtract %float %131 3 +%133 = OpCompositeConstruct %v4float %float_0 %float_1 %float_1 %132 +OpStore %sk_FragColor %133 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/TernaryAsLValueFoldableTest.asm.frag b/tests/sksl/shared/golden/TernaryAsLValueFoldableTest.asm.frag index 84e961aec1..9ac848ec2c 100644 --- a/tests/sksl/shared/golden/TernaryAsLValueFoldableTest.asm.frag +++ b/tests/sksl/shared/golden/TernaryAsLValueFoldableTest.asm.frag @@ -27,7 +27,6 @@ OpDecorate %21 RelaxedPrecision %_ptr_Function_float = OpTypePointer Function %float %float_1 = OpConstant %float 1 %float_0 = OpConstant %float 0 -%float_1_0 = OpConstant %float 1 %main = OpFunction %void None %11 %12 = OpLabel %r = OpVariable %_ptr_Function_float Function @@ -38,7 +37,7 @@ OpStore %r %16 OpStore %g %18 %20 = OpLoad %float %r %21 = OpLoad %float %g -%23 = OpCompositeConstruct %v4float %20 %21 %float_1_0 %float_1_0 -OpStore %sk_FragColor %23 +%22 = OpCompositeConstruct %v4float %20 %21 %float_1 %float_1 +OpStore %sk_FragColor %22 OpReturn OpFunctionEnd diff --git a/tests/sksl/shared/golden/VectorFolding.asm.frag b/tests/sksl/shared/golden/VectorFolding.asm.frag index 81eecae572..abf45f7abd 100644 --- a/tests/sksl/shared/golden/VectorFolding.asm.frag +++ b/tests/sksl/shared/golden/VectorFolding.asm.frag @@ -12,14 +12,14 @@ OpDecorate %sk_FragColor Location 0 OpDecorate %sk_FragColor Index 0 OpDecorate %sk_Clockwise RelaxedPrecision OpDecorate %sk_Clockwise BuiltIn FrontFacing -OpDecorate %122 RelaxedPrecision +OpDecorate %115 RelaxedPrecision +OpDecorate %117 RelaxedPrecision +OpDecorate %118 RelaxedPrecision +OpDecorate %120 RelaxedPrecision +OpDecorate %121 RelaxedPrecision +OpDecorate %123 RelaxedPrecision OpDecorate %124 RelaxedPrecision -OpDecorate %125 RelaxedPrecision -OpDecorate %127 RelaxedPrecision -OpDecorate %128 RelaxedPrecision -OpDecorate %131 RelaxedPrecision -OpDecorate %132 RelaxedPrecision -OpDecorate %134 RelaxedPrecision +OpDecorate %126 RelaxedPrecision %float = OpTypeFloat 32 %v4float = OpTypeVector %float 4 %_ptr_Output_v4float = OpTypePointer Output %v4float @@ -46,33 +46,26 @@ OpDecorate %134 RelaxedPrecision %float_12 = OpConstant %float 12 %float_3 = OpConstant %float 3 %28 = OpConstantComposite %v4float %float_12 %float_6 %float_4 %float_3 -%float_6_0 = OpConstant %float 6 %float_1 = OpConstant %float 1 %float_n2 = OpConstant %float -2 -%float_3_0 = OpConstant %float 3 -%float_4_0 = OpConstant %float 4 %float_n5 = OpConstant %float -5 -%float_7_0 = OpConstant %float 7 %float_n8 = OpConstant %float -8 -%float_9_0 = OpConstant %float 9 %float_n10 = OpConstant %float -10 %float_n11 = OpConstant %float -11 %float_n12 = OpConstant %float -12 %float_13 = OpConstant %float 13 %float_n13 = OpConstant %float -13 -%float_1_0 = OpConstant %float 1 %float_0 = OpConstant %float 0 -%73 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 -%75 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 -%76 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%67 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%69 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%70 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%79 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%80 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %85 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %86 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 -%float_13_0 = OpConstant %float 13 -%92 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 -%93 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %float_16 = OpConstant %float 16 %float_17 = OpConstant %float 17 -%100 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 +%93 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0 %float_19 = OpConstant %float 19 %float_19_5 = OpConstant %float 19.5 %float_20 = OpConstant %float 20 @@ -80,11 +73,10 @@ OpDecorate %134 RelaxedPrecision %float_22 = OpConstant %float 22 %float_23 = OpConstant %float 23 %float_24 = OpConstant %float 24 -%123 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 -%126 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 -%float_2_0 = OpConstant %float 2 -%129 = OpConstantComposite %v4float %float_2_0 %float_2_0 %float_2_0 %float_2_0 -%133 = OpConstantComposite %v4float %float_2_0 %float_2_0 %float_2_0 %float_2_0 +%116 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%119 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 +%122 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 +%125 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2 %v4int = OpTypeVector %int 4 %_ptr_Function_v4int = OpTypePointer Function %v4int %int_2 = OpConstant %int 2 @@ -93,27 +85,27 @@ OpDecorate %134 RelaxedPrecision %int_7 = OpConstant %int 7 %int_9 = OpConstant %int 9 %int_11 = OpConstant %int 11 -%141 = OpConstantComposite %v4int %int_6 %int_7 %int_9 %int_11 -%146 = OpConstantComposite %v4int %int_7 %int_9 %int_9 %int_9 +%133 = OpConstantComposite %v4int %int_6 %int_7 %int_9 %int_11 +%138 = OpConstantComposite %v4int %int_7 %int_9 %int_9 %int_9 %int_4 = OpConstant %int 4 %int_8 = OpConstant %int 8 -%147 = OpConstantComposite %v4int %int_2 %int_4 %int_6 %int_8 +%139 = OpConstantComposite %v4int %int_2 %int_4 %int_6 %int_8 %int_12 = OpConstant %int 12 %int_3 = OpConstant %int 3 -%150 = OpConstantComposite %v4int %int_12 %int_6 %int_4 %int_3 -%170 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 -%171 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 -%172 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 +%142 = OpConstantComposite %v4int %int_12 %int_6 %int_4 %int_3 +%162 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 +%163 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 +%164 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 +%177 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 +%178 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 %185 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 %186 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 %193 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 -%194 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 -%201 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0 %int_1 = OpConstant %int 1 -%224 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 -%228 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 -%231 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 -%234 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 +%216 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 +%220 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1 +%223 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 +%226 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2 %main = OpFunction %void None %11 %12 = OpLabel %_0_result = OpVariable %_ptr_Function_v4int Function @@ -123,249 +115,249 @@ OpStore %sk_FragColor %18 OpStore %sk_FragColor %23 OpStore %sk_FragColor %24 OpStore %sk_FragColor %28 -%32 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %32 %float_6_0 -%34 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %34 %float_1 +%31 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %31 %float_6 +%33 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %33 %float_1 +%35 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %35 %float_n2 %36 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %36 %float_n2 -%38 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %38 %float_3_0 +OpStore %36 %float_3 +%37 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %37 %float_4 +%39 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %39 %float_n5 %40 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %40 %float_4_0 -%42 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %42 %float_n5 +OpStore %40 %float_6 +%41 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %41 %float_7 %43 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %43 %float_6_0 -%45 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %45 %float_7_0 -%47 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %47 %float_n8 -%49 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %49 %float_9_0 -%51 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %51 %float_n10 +OpStore %43 %float_n8 +%44 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %44 %float_9 +%46 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %46 %float_n10 +%48 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %48 %float_n11 +%50 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %50 %float_n12 +%52 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %52 %float_13 %53 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 OpStore %53 %float_n11 +%54 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %54 %float_n12 %55 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %55 %float_n12 +OpStore %55 %float_13 +%56 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %56 %float_n11 %57 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %57 %float_13 -%58 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %58 %float_n11 +OpStore %57 %float_n12 %59 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %59 %float_n12 +OpStore %59 %float_n13 %60 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %60 %float_13 +OpStore %60 %float_n11 %61 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %61 %float_n11 +OpStore %61 %float_n12 %62 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %62 %float_n12 -%64 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %64 %float_n13 -%65 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %65 %float_n11 -%66 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %66 %float_n12 -%67 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %67 %float_n13 -%68 = OpExtInst %float %1 Sqrt %float_1_0 -%70 = OpCompositeConstruct %v4float %68 %68 %68 %68 +OpStore %62 %float_n13 +%63 = OpExtInst %float %1 Sqrt %float_1 +%64 = OpCompositeConstruct %v4float %63 %63 %63 %63 +OpStore %sk_FragColor %64 +%65 = OpExtInst %float %1 Sqrt %float_2 +%66 = OpCompositeConstruct %v4float %65 %65 %65 %65 +OpStore %sk_FragColor %66 +OpStore %sk_FragColor %67 +OpStore %sk_FragColor %69 OpStore %sk_FragColor %70 -%71 = OpExtInst %float %1 Sqrt %float_2 +%71 = OpExtInst %float %1 Sqrt %float_6 %72 = OpCompositeConstruct %v4float %71 %71 %71 %71 OpStore %sk_FragColor %72 -OpStore %sk_FragColor %73 -OpStore %sk_FragColor %75 +%73 = OpExtInst %float %1 Sqrt %float_7 +%74 = OpCompositeConstruct %v4float %73 %73 %73 %73 +OpStore %sk_FragColor %74 +%75 = OpExtInst %float %1 Sqrt %float_8 +%76 = OpCompositeConstruct %v4float %75 %75 %75 %75 OpStore %sk_FragColor %76 -%77 = OpExtInst %float %1 Sqrt %float_6 +%77 = OpExtInst %float %1 Sqrt %float_9 %78 = OpCompositeConstruct %v4float %77 %77 %77 %77 OpStore %sk_FragColor %78 -%79 = OpExtInst %float %1 Sqrt %float_7 -%80 = OpCompositeConstruct %v4float %79 %79 %79 %79 +OpStore %sk_FragColor %79 OpStore %sk_FragColor %80 -%81 = OpExtInst %float %1 Sqrt %float_8 +%81 = OpExtInst %float %1 Sqrt %float_12 %82 = OpCompositeConstruct %v4float %81 %81 %81 %81 OpStore %sk_FragColor %82 -%83 = OpExtInst %float %1 Sqrt %float_9 +%83 = OpExtInst %float %1 Sqrt %float_13 %84 = OpCompositeConstruct %v4float %83 %83 %83 %83 OpStore %sk_FragColor %84 OpStore %sk_FragColor %85 OpStore %sk_FragColor %86 -%87 = OpExtInst %float %1 Sqrt %float_12 -%88 = OpCompositeConstruct %v4float %87 %87 %87 %87 -OpStore %sk_FragColor %88 -%89 = OpExtInst %float %1 Sqrt %float_13_0 -%91 = OpCompositeConstruct %v4float %89 %89 %89 %89 -OpStore %sk_FragColor %91 +%87 = OpExtInst %float %1 Sqrt %float_16 +%89 = OpCompositeConstruct %v4float %87 %87 %87 %87 +OpStore %sk_FragColor %89 +%90 = OpExtInst %float %1 Sqrt %float_17 +%92 = OpCompositeConstruct %v4float %90 %90 %90 %90 OpStore %sk_FragColor %92 OpStore %sk_FragColor %93 -%94 = OpExtInst %float %1 Sqrt %float_16 +%94 = OpExtInst %float %1 Sqrt %float_19 %96 = OpCompositeConstruct %v4float %94 %94 %94 %94 OpStore %sk_FragColor %96 -%97 = OpExtInst %float %1 Sqrt %float_17 +%97 = OpExtInst %float %1 Sqrt %float_19_5 %99 = OpCompositeConstruct %v4float %97 %97 %97 %97 OpStore %sk_FragColor %99 -OpStore %sk_FragColor %100 -%101 = OpExtInst %float %1 Sqrt %float_19 -%103 = OpCompositeConstruct %v4float %101 %101 %101 %101 -OpStore %sk_FragColor %103 -%104 = OpExtInst %float %1 Sqrt %float_19_5 -%106 = OpCompositeConstruct %v4float %104 %104 %104 %104 -OpStore %sk_FragColor %106 -%107 = OpExtInst %float %1 Sqrt %float_20 -%109 = OpCompositeConstruct %v4float %107 %107 %107 %107 -OpStore %sk_FragColor %109 -%110 = OpExtInst %float %1 Sqrt %float_21 -%112 = OpCompositeConstruct %v4float %110 %110 %110 %110 -OpStore %sk_FragColor %112 -%113 = OpExtInst %float %1 Sqrt %float_22 -%115 = OpCompositeConstruct %v4float %113 %113 %113 %113 -OpStore %sk_FragColor %115 -%116 = OpExtInst %float %1 Sqrt %float_23 -%118 = OpCompositeConstruct %v4float %116 %116 %116 %116 -OpStore %sk_FragColor %118 -%119 = OpExtInst %float %1 Sqrt %float_24 -%121 = OpCompositeConstruct %v4float %119 %119 %119 %119 -OpStore %sk_FragColor %121 -%122 = OpLoad %v4float %sk_FragColor -%124 = OpFAdd %v4float %122 %123 -OpStore %sk_FragColor %124 -%125 = OpLoad %v4float %sk_FragColor -%127 = OpFSub %v4float %125 %126 -OpStore %sk_FragColor %127 -%128 = OpLoad %v4float %sk_FragColor -%131 = OpFMul %v4float %128 %129 -OpStore %sk_FragColor %131 -%132 = OpLoad %v4float %sk_FragColor -%134 = OpFDiv %v4float %132 %133 -OpStore %sk_FragColor %134 -%139 = OpAccessChain %_ptr_Function_int %_0_result %int_0 -OpStore %139 %int_2 -OpStore %_0_result %141 -OpStore %_0_result %146 -OpStore %_0_result %147 -OpStore %_0_result %150 +%100 = OpExtInst %float %1 Sqrt %float_20 +%102 = OpCompositeConstruct %v4float %100 %100 %100 %100 +OpStore %sk_FragColor %102 +%103 = OpExtInst %float %1 Sqrt %float_21 +%105 = OpCompositeConstruct %v4float %103 %103 %103 %103 +OpStore %sk_FragColor %105 +%106 = OpExtInst %float %1 Sqrt %float_22 +%108 = OpCompositeConstruct %v4float %106 %106 %106 %106 +OpStore %sk_FragColor %108 +%109 = OpExtInst %float %1 Sqrt %float_23 +%111 = OpCompositeConstruct %v4float %109 %109 %109 %109 +OpStore %sk_FragColor %111 +%112 = OpExtInst %float %1 Sqrt %float_24 +%114 = OpCompositeConstruct %v4float %112 %112 %112 %112 +OpStore %sk_FragColor %114 +%115 = OpLoad %v4float %sk_FragColor +%117 = OpFAdd %v4float %115 %116 +OpStore %sk_FragColor %117 +%118 = OpLoad %v4float %sk_FragColor +%120 = OpFSub %v4float %118 %119 +OpStore %sk_FragColor %120 +%121 = OpLoad %v4float %sk_FragColor +%123 = OpFMul %v4float %121 %122 +OpStore %sk_FragColor %123 +%124 = OpLoad %v4float %sk_FragColor +%126 = OpFDiv %v4float %124 %125 +OpStore %sk_FragColor %126 +%131 = OpAccessChain %_ptr_Function_int %_0_result %int_0 +OpStore %131 %int_2 +OpStore %_0_result %133 +OpStore %_0_result %138 +OpStore %_0_result %139 +OpStore %_0_result %142 +%145 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %145 %float_6 +%146 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %146 %float_1 +%147 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %147 %float_n2 +%148 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %148 %float_3 +%149 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %149 %float_4 +%150 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %150 %float_n5 +%151 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %151 %float_6 +%152 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 +OpStore %152 %float_7 %153 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %153 %float_6_0 +OpStore %153 %float_n8 %154 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %154 %float_1 +OpStore %154 %float_9 %155 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %155 %float_n2 -%156 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %156 %float_3_0 -%157 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %157 %float_4_0 -%158 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %158 %float_n5 -%159 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %159 %float_6_0 -%160 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %160 %float_7_0 -%161 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %161 %float_n8 -%162 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %162 %float_9_0 -%163 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0 -OpStore %163 %float_n10 -%165 = OpExtInst %float %1 Sqrt %float_1_0 -%164 = OpConvertFToS %int %165 -%166 = OpCompositeConstruct %v4int %164 %164 %164 %164 -OpStore %_0_result %166 -%168 = OpExtInst %float %1 Sqrt %float_2 -%167 = OpConvertFToS %int %168 -%169 = OpCompositeConstruct %v4int %167 %167 %167 %167 -OpStore %_0_result %169 +OpStore %155 %float_n10 +%157 = OpExtInst %float %1 Sqrt %float_1 +%156 = OpConvertFToS %int %157 +%158 = OpCompositeConstruct %v4int %156 %156 %156 %156 +OpStore %_0_result %158 +%160 = OpExtInst %float %1 Sqrt %float_2 +%159 = OpConvertFToS %int %160 +%161 = OpCompositeConstruct %v4int %159 %159 %159 %159 +OpStore %_0_result %161 +OpStore %_0_result %162 +OpStore %_0_result %163 +OpStore %_0_result %164 +%166 = OpExtInst %float %1 Sqrt %float_6 +%165 = OpConvertFToS %int %166 +%167 = OpCompositeConstruct %v4int %165 %165 %165 %165 +OpStore %_0_result %167 +%169 = OpExtInst %float %1 Sqrt %float_7 +%168 = OpConvertFToS %int %169 +%170 = OpCompositeConstruct %v4int %168 %168 %168 %168 OpStore %_0_result %170 -OpStore %_0_result %171 -OpStore %_0_result %172 -%174 = OpExtInst %float %1 Sqrt %float_6 -%173 = OpConvertFToS %int %174 -%175 = OpCompositeConstruct %v4int %173 %173 %173 %173 -OpStore %_0_result %175 -%177 = OpExtInst %float %1 Sqrt %float_7 -%176 = OpConvertFToS %int %177 -%178 = OpCompositeConstruct %v4int %176 %176 %176 %176 +%172 = OpExtInst %float %1 Sqrt %float_8 +%171 = OpConvertFToS %int %172 +%173 = OpCompositeConstruct %v4int %171 %171 %171 %171 +OpStore %_0_result %173 +%175 = OpExtInst %float %1 Sqrt %float_9 +%174 = OpConvertFToS %int %175 +%176 = OpCompositeConstruct %v4int %174 %174 %174 %174 +OpStore %_0_result %176 +OpStore %_0_result %177 OpStore %_0_result %178 -%180 = OpExtInst %float %1 Sqrt %float_8 +%180 = OpExtInst %float %1 Sqrt %float_12 %179 = OpConvertFToS %int %180 %181 = OpCompositeConstruct %v4int %179 %179 %179 %179 OpStore %_0_result %181 -%183 = OpExtInst %float %1 Sqrt %float_9 +%183 = OpExtInst %float %1 Sqrt %float_13 %182 = OpConvertFToS %int %183 %184 = OpCompositeConstruct %v4int %182 %182 %182 %182 OpStore %_0_result %184 OpStore %_0_result %185 OpStore %_0_result %186 -%188 = OpExtInst %float %1 Sqrt %float_12 +%188 = OpExtInst %float %1 Sqrt %float_16 %187 = OpConvertFToS %int %188 %189 = OpCompositeConstruct %v4int %187 %187 %187 %187 OpStore %_0_result %189 -%191 = OpExtInst %float %1 Sqrt %float_13_0 +%191 = OpExtInst %float %1 Sqrt %float_17 %190 = OpConvertFToS %int %191 %192 = OpCompositeConstruct %v4int %190 %190 %190 %190 OpStore %_0_result %192 OpStore %_0_result %193 -OpStore %_0_result %194 -%196 = OpExtInst %float %1 Sqrt %float_16 -%195 = OpConvertFToS %int %196 -%197 = OpCompositeConstruct %v4int %195 %195 %195 %195 -OpStore %_0_result %197 -%199 = OpExtInst %float %1 Sqrt %float_17 -%198 = OpConvertFToS %int %199 -%200 = OpCompositeConstruct %v4int %198 %198 %198 %198 -OpStore %_0_result %200 -OpStore %_0_result %201 -%203 = OpExtInst %float %1 Sqrt %float_19 -%202 = OpConvertFToS %int %203 -%204 = OpCompositeConstruct %v4int %202 %202 %202 %202 -OpStore %_0_result %204 -%206 = OpExtInst %float %1 Sqrt %float_19_5 -%205 = OpConvertFToS %int %206 -%207 = OpCompositeConstruct %v4int %205 %205 %205 %205 -OpStore %_0_result %207 -%209 = OpExtInst %float %1 Sqrt %float_20 -%208 = OpConvertFToS %int %209 -%210 = OpCompositeConstruct %v4int %208 %208 %208 %208 -OpStore %_0_result %210 -%212 = OpExtInst %float %1 Sqrt %float_21 -%211 = OpConvertFToS %int %212 -%213 = OpCompositeConstruct %v4int %211 %211 %211 %211 -OpStore %_0_result %213 -%215 = OpExtInst %float %1 Sqrt %float_22 -%214 = OpConvertFToS %int %215 -%216 = OpCompositeConstruct %v4int %214 %214 %214 %214 -OpStore %_0_result %216 -%218 = OpExtInst %float %1 Sqrt %float_23 -%217 = OpConvertFToS %int %218 -%219 = OpCompositeConstruct %v4int %217 %217 %217 %217 -OpStore %_0_result %219 -%221 = OpExtInst %float %1 Sqrt %float_24 -%220 = OpConvertFToS %int %221 -%222 = OpCompositeConstruct %v4int %220 %220 %220 %220 -OpStore %_0_result %222 -%223 = OpLoad %v4int %_0_result -%226 = OpIAdd %v4int %223 %224 -OpStore %_0_result %226 -%227 = OpLoad %v4int %_0_result -%229 = OpISub %v4int %227 %228 -OpStore %_0_result %229 -%230 = OpLoad %v4int %_0_result -%232 = OpIMul %v4int %230 %231 -OpStore %_0_result %232 -%233 = OpLoad %v4int %_0_result -%235 = OpSDiv %v4int %233 %234 -OpStore %_0_result %235 -%236 = OpLoad %v4int %_0_result -%237 = OpCompositeExtract %int %236 0 -%238 = OpConvertSToF %float %237 -%239 = OpCompositeExtract %int %236 1 -%240 = OpConvertSToF %float %239 -%241 = OpCompositeExtract %int %236 2 -%242 = OpConvertSToF %float %241 -%243 = OpCompositeExtract %int %236 3 -%244 = OpConvertSToF %float %243 -%245 = OpCompositeConstruct %v4float %238 %240 %242 %244 -OpStore %sk_FragColor %245 +%195 = OpExtInst %float %1 Sqrt %float_19 +%194 = OpConvertFToS %int %195 +%196 = OpCompositeConstruct %v4int %194 %194 %194 %194 +OpStore %_0_result %196 +%198 = OpExtInst %float %1 Sqrt %float_19_5 +%197 = OpConvertFToS %int %198 +%199 = OpCompositeConstruct %v4int %197 %197 %197 %197 +OpStore %_0_result %199 +%201 = OpExtInst %float %1 Sqrt %float_20 +%200 = OpConvertFToS %int %201 +%202 = OpCompositeConstruct %v4int %200 %200 %200 %200 +OpStore %_0_result %202 +%204 = OpExtInst %float %1 Sqrt %float_21 +%203 = OpConvertFToS %int %204 +%205 = OpCompositeConstruct %v4int %203 %203 %203 %203 +OpStore %_0_result %205 +%207 = OpExtInst %float %1 Sqrt %float_22 +%206 = OpConvertFToS %int %207 +%208 = OpCompositeConstruct %v4int %206 %206 %206 %206 +OpStore %_0_result %208 +%210 = OpExtInst %float %1 Sqrt %float_23 +%209 = OpConvertFToS %int %210 +%211 = OpCompositeConstruct %v4int %209 %209 %209 %209 +OpStore %_0_result %211 +%213 = OpExtInst %float %1 Sqrt %float_24 +%212 = OpConvertFToS %int %213 +%214 = OpCompositeConstruct %v4int %212 %212 %212 %212 +OpStore %_0_result %214 +%215 = OpLoad %v4int %_0_result +%218 = OpIAdd %v4int %215 %216 +OpStore %_0_result %218 +%219 = OpLoad %v4int %_0_result +%221 = OpISub %v4int %219 %220 +OpStore %_0_result %221 +%222 = OpLoad %v4int %_0_result +%224 = OpIMul %v4int %222 %223 +OpStore %_0_result %224 +%225 = OpLoad %v4int %_0_result +%227 = OpSDiv %v4int %225 %226 +OpStore %_0_result %227 +%228 = OpLoad %v4int %_0_result +%229 = OpCompositeExtract %int %228 0 +%230 = OpConvertSToF %float %229 +%231 = OpCompositeExtract %int %228 1 +%232 = OpConvertSToF %float %231 +%233 = OpCompositeExtract %int %228 2 +%234 = OpConvertSToF %float %233 +%235 = OpCompositeExtract %int %228 3 +%236 = OpConvertSToF %float %235 +%237 = OpCompositeConstruct %v4float %230 %232 %234 %236 +OpStore %sk_FragColor %237 OpReturn OpFunctionEnd