Deduplicate vector constants in SPIR-V output.

Many of our shaders generate the same vector constant dozens of times,
e.g. Gaussian blur uses float4(1) repeatedly. This change avoids
re-emitting redundant vector constants.

Change-Id: I22a71cd8b2783fb997f52d485b49031f64ca6d96
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/350701
Auto-Submit: John Stiles <johnstiles@google.com>
Commit-Queue: Brian Osman <brianosman@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
This commit is contained in:
John Stiles 2021-01-06 13:33:31 -05:00 committed by Skia Commit-Bot
parent 95c1a08b24
commit cd80689192
49 changed files with 1752 additions and 1782 deletions

View File

@ -44,8 +44,6 @@
namespace SkSL {
#define kLast_Capability SpvCapabilityMultiViewport
/**
* Converts a Program into GLSL code.
*/

View File

@ -46,8 +46,6 @@
namespace SkSL {
#define kLast_Capability SpvCapabilityMultiViewport
/**
* Converts a Program into Metal code.
*/

View File

@ -19,6 +19,8 @@
#include "src/gpu/vk/GrVkCaps.h"
#endif
#define kLast_Capability SpvCapabilityMultiViewport
namespace SkSL {
static const int32_t SKSL_MAGIC = 0x0; // FIXME: we should probably register a magic number
@ -1148,30 +1150,40 @@ SpvId SPIRVCodeGenerator::writeFunctionCall(const FunctionCall& c, OutputStream&
SpvId SPIRVCodeGenerator::writeConstantVector(const Constructor& c) {
const Type& type = c.type();
SkASSERT(type.isVector() && c.isCompileTimeConstant());
SpvId result = this->nextId();
std::vector<SpvId> arguments;
for (const std::unique_ptr<Expression>& arg : c.arguments()) {
arguments.push_back(this->writeExpression(*arg, fConstantBuffer));
}
SpvId typeId = this->getType(type);
SPIRVVectorConstant key{this->getType(type),
/*fValueId=*/{SpvId(-1), SpvId(-1), SpvId(-1), SpvId(-1)}};
size_t numValues;
if (c.arguments().size() == 1) {
// with a single argument, a vector will have all of its entries equal to the argument
this->writeOpCode(SpvOpConstantComposite, 3 + type.columns(), fConstantBuffer);
this->writeWord(typeId, fConstantBuffer);
this->writeWord(result, fConstantBuffer);
for (int i = 0; i < type.columns(); i++) {
this->writeWord(arguments[0], fConstantBuffer);
// GLSL automatically splats single-argument constructors across every column. In SPIR-V, we
// need to handle this splat ourselves.
numValues = type.columns();
key.fValueId[0] = this->writeExpression(*c.arguments()[0], fConstantBuffer);
for (size_t i = 1; i < numValues; i++) {
key.fValueId[i] = key.fValueId[0];
}
} else {
this->writeOpCode(SpvOpConstantComposite, 3 + (int32_t) c.arguments().size(),
fConstantBuffer);
this->writeWord(typeId, fConstantBuffer);
this->writeWord(result, fConstantBuffer);
for (SpvId id : arguments) {
this->writeWord(id, fConstantBuffer);
// A multi-argument constructor fills in each argument in order.
numValues = c.arguments().size();
for (size_t i = 0; i < numValues; i++) {
key.fValueId[i] = this->writeExpression(*c.arguments()[i], fConstantBuffer);
}
}
return result;
// Check to see if we've already synthesized this vector constant.
auto [iter, newlyCreated] = fVectorConstants.insert({key, (SpvId)-1});
if (newlyCreated) {
// Emit an OpConstantComposite instruction for this constant.
SpvId result = this->nextId();
this->writeOpCode(SpvOpConstantComposite, 3 + numValues, fConstantBuffer);
this->writeWord(key.fTypeId, fConstantBuffer);
this->writeWord(result, fConstantBuffer);
for (size_t i = 0; i < numValues; i++) {
this->writeWord(key.fValueId[i], fConstantBuffer);
}
iter->second = result;
}
return iter->second;
}
SpvId SPIRVCodeGenerator::writeFloatConstructor(const Constructor& c, OutputStream& out) {

View File

@ -12,6 +12,7 @@
#include <tuple>
#include <unordered_map>
#include "src/core/SkOpts.h"
#include "src/sksl/SkSLCodeGenerator.h"
#include "src/sksl/SkSLMemoryLayout.h"
#include "src/sksl/SkSLStringStream.h"
@ -41,6 +42,8 @@
#include "src/sksl/ir/SkSLVariableReference.h"
#include "src/sksl/spirv.h"
namespace SkSL {
union ConstantValue {
ConstantValue(SKSL_INT i)
: fInt(i) {
@ -62,21 +65,40 @@ union ConstantValue {
using ConstantValuePair = std::pair<ConstantValue, SkSL::Type::NumberKind>;
struct SPIRVVectorConstant {
bool operator==(const SPIRVVectorConstant& that) const {
return fTypeId == that.fTypeId &&
fValueId[0] == that.fValueId[0] &&
fValueId[1] == that.fValueId[1] &&
fValueId[2] == that.fValueId[2] &&
fValueId[3] == that.fValueId[3];
}
SpvId fTypeId;
SpvId fValueId[4];
};
} // namespace SkSL
namespace std {
template <>
struct hash<ConstantValuePair> {
size_t operator()(const ConstantValuePair& key) const {
struct hash<SkSL::ConstantValuePair> {
size_t operator()(const SkSL::ConstantValuePair& key) const {
return key.first.fInt ^ (int) key.second;
}
};
template <>
struct hash<SkSL::SPIRVVectorConstant> {
size_t operator()(const SkSL::SPIRVVectorConstant& key) const {
return SkOpts::hash(&key, sizeof(key));
}
};
} // namespace std
namespace SkSL {
#define kLast_Capability SpvCapabilityMultiViewport
/**
* Converts a Program into a SPIR-V binary.
*/
@ -383,6 +405,7 @@ private:
SpvId fBoolTrue;
SpvId fBoolFalse;
std::unordered_map<ConstantValuePair, SpvId> fNumberConstants;
std::unordered_map<SPIRVVectorConstant, SpvId> fVectorConstants;
bool fSetupFragPosition;
// label of the current block, or 0 if we are not in a block
SpvId fCurrentBlock;

View File

@ -28,9 +28,9 @@ OpDecorate %dst RelaxedPrecision
%void = OpTypeVoid
%14 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%16 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%17 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %14
%15 = OpLabel
OpStore %sk_FragColor %16
OpStore %sk_FragColor %17
OpReturn
OpFunctionEnd

View File

@ -31,53 +31,53 @@ OpDecorate %32 RelaxedPrecision
OpDecorate %34 RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %45 RelaxedPrecision
OpDecorate %47 RelaxedPrecision
OpDecorate %48 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %56 RelaxedPrecision
OpDecorate %58 RelaxedPrecision
OpDecorate %60 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
OpDecorate %69 RelaxedPrecision
OpDecorate %72 RelaxedPrecision
OpDecorate %55 RelaxedPrecision
OpDecorate %57 RelaxedPrecision
OpDecorate %59 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %66 RelaxedPrecision
OpDecorate %68 RelaxedPrecision
OpDecorate %71 RelaxedPrecision
OpDecorate %76 RelaxedPrecision
OpDecorate %77 RelaxedPrecision
OpDecorate %78 RelaxedPrecision
OpDecorate %82 RelaxedPrecision
OpDecorate %83 RelaxedPrecision
OpDecorate %84 RelaxedPrecision
OpDecorate %85 RelaxedPrecision
OpDecorate %88 RelaxedPrecision
OpDecorate %87 RelaxedPrecision
OpDecorate %89 RelaxedPrecision
OpDecorate %90 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %98 RelaxedPrecision
OpDecorate %99 RelaxedPrecision
OpDecorate %102 RelaxedPrecision
OpDecorate %103 RelaxedPrecision
OpDecorate %104 RelaxedPrecision
OpDecorate %110 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %112 RelaxedPrecision
OpDecorate %113 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %117 RelaxedPrecision
OpDecorate %118 RelaxedPrecision
OpDecorate %119 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %122 RelaxedPrecision
OpDecorate %126 RelaxedPrecision
OpDecorate %127 RelaxedPrecision
OpDecorate %128 RelaxedPrecision
OpDecorate %129 RelaxedPrecision
OpDecorate %130 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %132 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %134 RelaxedPrecision
OpDecorate %135 RelaxedPrecision
OpDecorate %136 RelaxedPrecision
OpDecorate %137 RelaxedPrecision
OpDecorate %138 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %145 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %147 RelaxedPrecision
OpDecorate %148 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -96,8 +96,7 @@ OpDecorate %148 RelaxedPrecision
%float_0_300000012 = OpConstant %float 0.300000012
%float_0_589999974 = OpConstant %float 0.589999974
%float_0_109999999 = OpConstant %float 0.109999999
%39 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%47 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%42 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%false = OpConstantFalse %bool
%float_0 = OpConstant %float 0
%float_1 = OpConstant %float 1
@ -110,7 +109,7 @@ OpDecorate %148 RelaxedPrecision
%_6_result = OpVariable %_ptr_Function_v3float Function
%_7_minComp = OpVariable %_ptr_Function_float Function
%_8_maxComp = OpVariable %_ptr_Function_float Function
%107 = OpVariable %_ptr_Function_v3float Function
%106 = OpVariable %_ptr_Function_v3float Function
%18 = OpLoad %v4float %dst
%19 = OpCompositeExtract %float %18 3
%20 = OpLoad %v4float %src
@ -130,125 +129,125 @@ OpStore %_2_sda %30
%36 = OpVectorTimesScalar %v3float %33 %35
OpStore %_3_dsa %36
%43 = OpLoad %v3float %_3_dsa
%38 = OpDot %float %39 %43
%38 = OpDot %float %42 %43
OpStore %_5_lum %38
%45 = OpLoad %float %_5_lum
%48 = OpLoad %v3float %_2_sda
%46 = OpDot %float %47 %48
%49 = OpFSub %float %45 %46
%50 = OpLoad %v3float %_2_sda
%51 = OpCompositeConstruct %v3float %49 %49 %49
%52 = OpFAdd %v3float %51 %50
OpStore %_6_result %52
%56 = OpLoad %v3float %_6_result
%57 = OpCompositeExtract %float %56 0
%58 = OpLoad %v3float %_6_result
%59 = OpCompositeExtract %float %58 1
%55 = OpExtInst %float %1 FMin %57 %59
%60 = OpLoad %v3float %_6_result
%61 = OpCompositeExtract %float %60 2
%54 = OpExtInst %float %1 FMin %55 %61
OpStore %_7_minComp %54
%65 = OpLoad %v3float %_6_result
%66 = OpCompositeExtract %float %65 0
%67 = OpLoad %v3float %_6_result
%68 = OpCompositeExtract %float %67 1
%64 = OpExtInst %float %1 FMax %66 %68
%69 = OpLoad %v3float %_6_result
%70 = OpCompositeExtract %float %69 2
%63 = OpExtInst %float %1 FMax %64 %70
OpStore %_8_maxComp %63
%72 = OpLoad %float %_7_minComp
%74 = OpFOrdLessThan %bool %72 %float_0
OpSelectionMerge %76 None
OpBranchConditional %74 %75 %76
%47 = OpLoad %v3float %_2_sda
%46 = OpDot %float %42 %47
%48 = OpFSub %float %45 %46
%49 = OpLoad %v3float %_2_sda
%50 = OpCompositeConstruct %v3float %48 %48 %48
%51 = OpFAdd %v3float %50 %49
OpStore %_6_result %51
%55 = OpLoad %v3float %_6_result
%56 = OpCompositeExtract %float %55 0
%57 = OpLoad %v3float %_6_result
%58 = OpCompositeExtract %float %57 1
%54 = OpExtInst %float %1 FMin %56 %58
%59 = OpLoad %v3float %_6_result
%60 = OpCompositeExtract %float %59 2
%53 = OpExtInst %float %1 FMin %54 %60
OpStore %_7_minComp %53
%64 = OpLoad %v3float %_6_result
%65 = OpCompositeExtract %float %64 0
%66 = OpLoad %v3float %_6_result
%67 = OpCompositeExtract %float %66 1
%63 = OpExtInst %float %1 FMax %65 %67
%68 = OpLoad %v3float %_6_result
%69 = OpCompositeExtract %float %68 2
%62 = OpExtInst %float %1 FMax %63 %69
OpStore %_8_maxComp %62
%71 = OpLoad %float %_7_minComp
%73 = OpFOrdLessThan %bool %71 %float_0
OpSelectionMerge %75 None
OpBranchConditional %73 %74 %75
%74 = OpLabel
%76 = OpLoad %float %_5_lum
%77 = OpLoad %float %_7_minComp
%78 = OpFOrdNotEqual %bool %76 %77
OpBranch %75
%75 = OpLabel
%77 = OpLoad %float %_5_lum
%78 = OpLoad %float %_7_minComp
%79 = OpFOrdNotEqual %bool %77 %78
OpBranch %76
%76 = OpLabel
%80 = OpPhi %bool %false %15 %79 %75
OpSelectionMerge %82 None
OpBranchConditional %80 %81 %82
%79 = OpPhi %bool %false %15 %78 %74
OpSelectionMerge %81 None
OpBranchConditional %79 %80 %81
%80 = OpLabel
%82 = OpLoad %float %_5_lum
%83 = OpLoad %v3float %_6_result
%84 = OpLoad %float %_5_lum
%85 = OpCompositeConstruct %v3float %84 %84 %84
%86 = OpFSub %v3float %83 %85
%87 = OpLoad %float %_5_lum
%88 = OpVectorTimesScalar %v3float %86 %87
%89 = OpLoad %float %_5_lum
%90 = OpLoad %float %_7_minComp
%91 = OpFSub %float %89 %90
%93 = OpFDiv %float %float_1 %91
%94 = OpVectorTimesScalar %v3float %88 %93
%95 = OpCompositeConstruct %v3float %82 %82 %82
%96 = OpFAdd %v3float %95 %94
OpStore %_6_result %96
OpBranch %81
%81 = OpLabel
%83 = OpLoad %float %_5_lum
%84 = OpLoad %v3float %_6_result
%85 = OpLoad %float %_5_lum
%86 = OpCompositeConstruct %v3float %85 %85 %85
%87 = OpFSub %v3float %84 %86
%88 = OpLoad %float %_5_lum
%89 = OpVectorTimesScalar %v3float %87 %88
%90 = OpLoad %float %_5_lum
%91 = OpLoad %float %_7_minComp
%92 = OpFSub %float %90 %91
%94 = OpFDiv %float %float_1 %92
%95 = OpVectorTimesScalar %v3float %89 %94
%96 = OpCompositeConstruct %v3float %83 %83 %83
%97 = OpFAdd %v3float %96 %95
OpStore %_6_result %97
OpBranch %82
%82 = OpLabel
%98 = OpLoad %float %_8_maxComp
%99 = OpLoad %float %_1_alpha
%100 = OpFOrdGreaterThan %bool %98 %99
OpSelectionMerge %102 None
OpBranchConditional %100 %101 %102
%97 = OpLoad %float %_8_maxComp
%98 = OpLoad %float %_1_alpha
%99 = OpFOrdGreaterThan %bool %97 %98
OpSelectionMerge %101 None
OpBranchConditional %99 %100 %101
%100 = OpLabel
%102 = OpLoad %float %_8_maxComp
%103 = OpLoad %float %_5_lum
%104 = OpFOrdNotEqual %bool %102 %103
OpBranch %101
%101 = OpLabel
%103 = OpLoad %float %_8_maxComp
%104 = OpLoad %float %_5_lum
%105 = OpFOrdNotEqual %bool %103 %104
OpBranch %102
%102 = OpLabel
%106 = OpPhi %bool %false %82 %105 %101
OpSelectionMerge %110 None
OpBranchConditional %106 %108 %109
%105 = OpPhi %bool %false %81 %104 %100
OpSelectionMerge %109 None
OpBranchConditional %105 %107 %108
%107 = OpLabel
%110 = OpLoad %float %_5_lum
%111 = OpLoad %v3float %_6_result
%112 = OpLoad %float %_5_lum
%113 = OpCompositeConstruct %v3float %112 %112 %112
%114 = OpFSub %v3float %111 %113
%115 = OpLoad %float %_1_alpha
%116 = OpLoad %float %_5_lum
%117 = OpFSub %float %115 %116
%118 = OpVectorTimesScalar %v3float %114 %117
%119 = OpLoad %float %_8_maxComp
%120 = OpLoad %float %_5_lum
%121 = OpFSub %float %119 %120
%122 = OpFDiv %float %float_1 %121
%123 = OpVectorTimesScalar %v3float %118 %122
%124 = OpCompositeConstruct %v3float %110 %110 %110
%125 = OpFAdd %v3float %124 %123
OpStore %106 %125
OpBranch %109
%108 = OpLabel
%111 = OpLoad %float %_5_lum
%112 = OpLoad %v3float %_6_result
%113 = OpLoad %float %_5_lum
%114 = OpCompositeConstruct %v3float %113 %113 %113
%115 = OpFSub %v3float %112 %114
%116 = OpLoad %float %_1_alpha
%117 = OpLoad %float %_5_lum
%118 = OpFSub %float %116 %117
%119 = OpVectorTimesScalar %v3float %115 %118
%120 = OpLoad %float %_8_maxComp
%121 = OpLoad %float %_5_lum
%122 = OpFSub %float %120 %121
%123 = OpFDiv %float %float_1 %122
%124 = OpVectorTimesScalar %v3float %119 %123
%125 = OpCompositeConstruct %v3float %111 %111 %111
%126 = OpFAdd %v3float %125 %124
OpStore %107 %126
OpBranch %110
%126 = OpLoad %v3float %_6_result
OpStore %106 %126
OpBranch %109
%109 = OpLabel
%127 = OpLoad %v3float %_6_result
OpStore %107 %127
OpBranch %110
%110 = OpLabel
%128 = OpLoad %v3float %107
%129 = OpLoad %v4float %dst
%130 = OpVectorShuffle %v3float %129 %129 0 1 2
%131 = OpFAdd %v3float %128 %130
%132 = OpLoad %v3float %_3_dsa
%133 = OpFSub %v3float %131 %132
%134 = OpLoad %v4float %src
%135 = OpVectorShuffle %v3float %134 %134 0 1 2
%136 = OpFAdd %v3float %133 %135
%137 = OpLoad %v3float %_2_sda
%138 = OpFSub %v3float %136 %137
%139 = OpCompositeExtract %float %138 0
%140 = OpCompositeExtract %float %138 1
%141 = OpCompositeExtract %float %138 2
%142 = OpLoad %v4float %src
%143 = OpCompositeExtract %float %142 3
%144 = OpLoad %v4float %dst
%145 = OpCompositeExtract %float %144 3
%146 = OpFAdd %float %143 %145
%147 = OpLoad %float %_1_alpha
%148 = OpFSub %float %146 %147
%149 = OpCompositeConstruct %v4float %139 %140 %141 %148
OpStore %sk_FragColor %149
%127 = OpLoad %v3float %106
%128 = OpLoad %v4float %dst
%129 = OpVectorShuffle %v3float %128 %128 0 1 2
%130 = OpFAdd %v3float %127 %129
%131 = OpLoad %v3float %_3_dsa
%132 = OpFSub %v3float %130 %131
%133 = OpLoad %v4float %src
%134 = OpVectorShuffle %v3float %133 %133 0 1 2
%135 = OpFAdd %v3float %132 %134
%136 = OpLoad %v3float %_2_sda
%137 = OpFSub %v3float %135 %136
%138 = OpCompositeExtract %float %137 0
%139 = OpCompositeExtract %float %137 1
%140 = OpCompositeExtract %float %137 2
%141 = OpLoad %v4float %src
%142 = OpCompositeExtract %float %141 3
%143 = OpLoad %v4float %dst
%144 = OpCompositeExtract %float %143 3
%145 = OpFAdd %float %142 %144
%146 = OpLoad %float %_1_alpha
%147 = OpFSub %float %145 %146
%148 = OpCompositeConstruct %v4float %138 %139 %140 %147
OpStore %sk_FragColor %148
OpReturn
OpFunctionEnd

View File

@ -76,53 +76,53 @@ OpDecorate %161 RelaxedPrecision
OpDecorate %164 RelaxedPrecision
OpDecorate %174 RelaxedPrecision
OpDecorate %176 RelaxedPrecision
OpDecorate %178 RelaxedPrecision
OpDecorate %179 RelaxedPrecision
OpDecorate %180 RelaxedPrecision
OpDecorate %181 RelaxedPrecision
OpDecorate %187 RelaxedPrecision
OpDecorate %189 RelaxedPrecision
OpDecorate %191 RelaxedPrecision
OpDecorate %196 RelaxedPrecision
OpDecorate %198 RelaxedPrecision
OpDecorate %200 RelaxedPrecision
OpDecorate %203 RelaxedPrecision
OpDecorate %186 RelaxedPrecision
OpDecorate %188 RelaxedPrecision
OpDecorate %190 RelaxedPrecision
OpDecorate %195 RelaxedPrecision
OpDecorate %197 RelaxedPrecision
OpDecorate %199 RelaxedPrecision
OpDecorate %202 RelaxedPrecision
OpDecorate %206 RelaxedPrecision
OpDecorate %207 RelaxedPrecision
OpDecorate %208 RelaxedPrecision
OpDecorate %212 RelaxedPrecision
OpDecorate %213 RelaxedPrecision
OpDecorate %214 RelaxedPrecision
OpDecorate %215 RelaxedPrecision
OpDecorate %218 RelaxedPrecision
OpDecorate %217 RelaxedPrecision
OpDecorate %219 RelaxedPrecision
OpDecorate %220 RelaxedPrecision
OpDecorate %221 RelaxedPrecision
OpDecorate %222 RelaxedPrecision
OpDecorate %227 RelaxedPrecision
OpDecorate %228 RelaxedPrecision
OpDecorate %229 RelaxedPrecision
OpDecorate %232 RelaxedPrecision
OpDecorate %233 RelaxedPrecision
OpDecorate %234 RelaxedPrecision
OpDecorate %240 RelaxedPrecision
OpDecorate %241 RelaxedPrecision
OpDecorate %242 RelaxedPrecision
OpDecorate %243 RelaxedPrecision
OpDecorate %245 RelaxedPrecision
OpDecorate %246 RelaxedPrecision
OpDecorate %247 RelaxedPrecision
OpDecorate %248 RelaxedPrecision
OpDecorate %249 RelaxedPrecision
OpDecorate %250 RelaxedPrecision
OpDecorate %251 RelaxedPrecision
OpDecorate %252 RelaxedPrecision
OpDecorate %256 RelaxedPrecision
OpDecorate %257 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
OpDecorate %260 RelaxedPrecision
OpDecorate %261 RelaxedPrecision
OpDecorate %262 RelaxedPrecision
OpDecorate %263 RelaxedPrecision
OpDecorate %264 RelaxedPrecision
OpDecorate %265 RelaxedPrecision
OpDecorate %266 RelaxedPrecision
OpDecorate %267 RelaxedPrecision
OpDecorate %268 RelaxedPrecision
OpDecorate %272 RelaxedPrecision
OpDecorate %274 RelaxedPrecision
OpDecorate %271 RelaxedPrecision
OpDecorate %273 RelaxedPrecision
OpDecorate %275 RelaxedPrecision
OpDecorate %276 RelaxedPrecision
OpDecorate %277 RelaxedPrecision
OpDecorate %278 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -144,8 +144,7 @@ OpDecorate %278 RelaxedPrecision
%float_0_300000012 = OpConstant %float 0.300000012
%float_0_589999974 = OpConstant %float 0.589999974
%float_0_109999999 = OpConstant %float 0.109999999
%170 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%178 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%173 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%false = OpConstantFalse %bool
%float_1 = OpConstant %float 1
%_blend_set_color_saturation_helper = OpFunction %v3float None %15
@ -208,7 +207,7 @@ OpFunctionEnd
%_8_result = OpVariable %_ptr_Function_v3float Function
%_9_minComp = OpVariable %_ptr_Function_float Function
%_10_maxComp = OpVariable %_ptr_Function_float Function
%237 = OpVariable %_ptr_Function_v3float Function
%236 = OpVariable %_ptr_Function_v3float Function
%52 = OpLoad %v4float %dst
%53 = OpCompositeExtract %float %52 3
%54 = OpLoad %v4float %src
@ -352,125 +351,125 @@ OpBranch %138
OpBranch %95
%95 = OpLabel
%174 = OpLoad %v3float %_3_dsa
%169 = OpDot %float %170 %174
%169 = OpDot %float %173 %174
OpStore %_7_lum %169
%176 = OpLoad %float %_7_lum
%179 = OpLoad %v3float %_4_blend_set_color_saturation
%177 = OpDot %float %178 %179
%180 = OpFSub %float %176 %177
%181 = OpLoad %v3float %_4_blend_set_color_saturation
%182 = OpCompositeConstruct %v3float %180 %180 %180
%183 = OpFAdd %v3float %182 %181
OpStore %_8_result %183
%187 = OpLoad %v3float %_8_result
%188 = OpCompositeExtract %float %187 0
%189 = OpLoad %v3float %_8_result
%190 = OpCompositeExtract %float %189 1
%186 = OpExtInst %float %1 FMin %188 %190
%191 = OpLoad %v3float %_8_result
%192 = OpCompositeExtract %float %191 2
%185 = OpExtInst %float %1 FMin %186 %192
OpStore %_9_minComp %185
%196 = OpLoad %v3float %_8_result
%197 = OpCompositeExtract %float %196 0
%198 = OpLoad %v3float %_8_result
%199 = OpCompositeExtract %float %198 1
%195 = OpExtInst %float %1 FMax %197 %199
%200 = OpLoad %v3float %_8_result
%201 = OpCompositeExtract %float %200 2
%194 = OpExtInst %float %1 FMax %195 %201
OpStore %_10_maxComp %194
%203 = OpLoad %float %_9_minComp
%204 = OpFOrdLessThan %bool %203 %float_0
OpSelectionMerge %206 None
OpBranchConditional %204 %205 %206
%178 = OpLoad %v3float %_4_blend_set_color_saturation
%177 = OpDot %float %173 %178
%179 = OpFSub %float %176 %177
%180 = OpLoad %v3float %_4_blend_set_color_saturation
%181 = OpCompositeConstruct %v3float %179 %179 %179
%182 = OpFAdd %v3float %181 %180
OpStore %_8_result %182
%186 = OpLoad %v3float %_8_result
%187 = OpCompositeExtract %float %186 0
%188 = OpLoad %v3float %_8_result
%189 = OpCompositeExtract %float %188 1
%185 = OpExtInst %float %1 FMin %187 %189
%190 = OpLoad %v3float %_8_result
%191 = OpCompositeExtract %float %190 2
%184 = OpExtInst %float %1 FMin %185 %191
OpStore %_9_minComp %184
%195 = OpLoad %v3float %_8_result
%196 = OpCompositeExtract %float %195 0
%197 = OpLoad %v3float %_8_result
%198 = OpCompositeExtract %float %197 1
%194 = OpExtInst %float %1 FMax %196 %198
%199 = OpLoad %v3float %_8_result
%200 = OpCompositeExtract %float %199 2
%193 = OpExtInst %float %1 FMax %194 %200
OpStore %_10_maxComp %193
%202 = OpLoad %float %_9_minComp
%203 = OpFOrdLessThan %bool %202 %float_0
OpSelectionMerge %205 None
OpBranchConditional %203 %204 %205
%204 = OpLabel
%206 = OpLoad %float %_7_lum
%207 = OpLoad %float %_9_minComp
%208 = OpFOrdNotEqual %bool %206 %207
OpBranch %205
%205 = OpLabel
%207 = OpLoad %float %_7_lum
%208 = OpLoad %float %_9_minComp
%209 = OpFOrdNotEqual %bool %207 %208
OpBranch %206
%206 = OpLabel
%210 = OpPhi %bool %false %95 %209 %205
OpSelectionMerge %212 None
OpBranchConditional %210 %211 %212
%209 = OpPhi %bool %false %95 %208 %204
OpSelectionMerge %211 None
OpBranchConditional %209 %210 %211
%210 = OpLabel
%212 = OpLoad %float %_7_lum
%213 = OpLoad %v3float %_8_result
%214 = OpLoad %float %_7_lum
%215 = OpCompositeConstruct %v3float %214 %214 %214
%216 = OpFSub %v3float %213 %215
%217 = OpLoad %float %_7_lum
%218 = OpVectorTimesScalar %v3float %216 %217
%219 = OpLoad %float %_7_lum
%220 = OpLoad %float %_9_minComp
%221 = OpFSub %float %219 %220
%223 = OpFDiv %float %float_1 %221
%224 = OpVectorTimesScalar %v3float %218 %223
%225 = OpCompositeConstruct %v3float %212 %212 %212
%226 = OpFAdd %v3float %225 %224
OpStore %_8_result %226
OpBranch %211
%211 = OpLabel
%213 = OpLoad %float %_7_lum
%214 = OpLoad %v3float %_8_result
%215 = OpLoad %float %_7_lum
%216 = OpCompositeConstruct %v3float %215 %215 %215
%217 = OpFSub %v3float %214 %216
%218 = OpLoad %float %_7_lum
%219 = OpVectorTimesScalar %v3float %217 %218
%220 = OpLoad %float %_7_lum
%221 = OpLoad %float %_9_minComp
%222 = OpFSub %float %220 %221
%224 = OpFDiv %float %float_1 %222
%225 = OpVectorTimesScalar %v3float %219 %224
%226 = OpCompositeConstruct %v3float %213 %213 %213
%227 = OpFAdd %v3float %226 %225
OpStore %_8_result %227
OpBranch %212
%212 = OpLabel
%228 = OpLoad %float %_10_maxComp
%229 = OpLoad %float %_1_alpha
%230 = OpFOrdGreaterThan %bool %228 %229
OpSelectionMerge %232 None
OpBranchConditional %230 %231 %232
%227 = OpLoad %float %_10_maxComp
%228 = OpLoad %float %_1_alpha
%229 = OpFOrdGreaterThan %bool %227 %228
OpSelectionMerge %231 None
OpBranchConditional %229 %230 %231
%230 = OpLabel
%232 = OpLoad %float %_10_maxComp
%233 = OpLoad %float %_7_lum
%234 = OpFOrdNotEqual %bool %232 %233
OpBranch %231
%231 = OpLabel
%233 = OpLoad %float %_10_maxComp
%234 = OpLoad %float %_7_lum
%235 = OpFOrdNotEqual %bool %233 %234
OpBranch %232
%232 = OpLabel
%236 = OpPhi %bool %false %212 %235 %231
OpSelectionMerge %240 None
OpBranchConditional %236 %238 %239
%235 = OpPhi %bool %false %211 %234 %230
OpSelectionMerge %239 None
OpBranchConditional %235 %237 %238
%237 = OpLabel
%240 = OpLoad %float %_7_lum
%241 = OpLoad %v3float %_8_result
%242 = OpLoad %float %_7_lum
%243 = OpCompositeConstruct %v3float %242 %242 %242
%244 = OpFSub %v3float %241 %243
%245 = OpLoad %float %_1_alpha
%246 = OpLoad %float %_7_lum
%247 = OpFSub %float %245 %246
%248 = OpVectorTimesScalar %v3float %244 %247
%249 = OpLoad %float %_10_maxComp
%250 = OpLoad %float %_7_lum
%251 = OpFSub %float %249 %250
%252 = OpFDiv %float %float_1 %251
%253 = OpVectorTimesScalar %v3float %248 %252
%254 = OpCompositeConstruct %v3float %240 %240 %240
%255 = OpFAdd %v3float %254 %253
OpStore %236 %255
OpBranch %239
%238 = OpLabel
%241 = OpLoad %float %_7_lum
%242 = OpLoad %v3float %_8_result
%243 = OpLoad %float %_7_lum
%244 = OpCompositeConstruct %v3float %243 %243 %243
%245 = OpFSub %v3float %242 %244
%246 = OpLoad %float %_1_alpha
%247 = OpLoad %float %_7_lum
%248 = OpFSub %float %246 %247
%249 = OpVectorTimesScalar %v3float %245 %248
%250 = OpLoad %float %_10_maxComp
%251 = OpLoad %float %_7_lum
%252 = OpFSub %float %250 %251
%253 = OpFDiv %float %float_1 %252
%254 = OpVectorTimesScalar %v3float %249 %253
%255 = OpCompositeConstruct %v3float %241 %241 %241
%256 = OpFAdd %v3float %255 %254
OpStore %237 %256
OpBranch %240
%256 = OpLoad %v3float %_8_result
OpStore %236 %256
OpBranch %239
%239 = OpLabel
%257 = OpLoad %v3float %_8_result
OpStore %237 %257
OpBranch %240
%240 = OpLabel
%258 = OpLoad %v3float %237
%259 = OpLoad %v4float %dst
%260 = OpVectorShuffle %v3float %259 %259 0 1 2
%261 = OpFAdd %v3float %258 %260
%262 = OpLoad %v3float %_3_dsa
%263 = OpFSub %v3float %261 %262
%264 = OpLoad %v4float %src
%265 = OpVectorShuffle %v3float %264 %264 0 1 2
%266 = OpFAdd %v3float %263 %265
%267 = OpLoad %v3float %_2_sda
%268 = OpFSub %v3float %266 %267
%269 = OpCompositeExtract %float %268 0
%270 = OpCompositeExtract %float %268 1
%271 = OpCompositeExtract %float %268 2
%272 = OpLoad %v4float %src
%273 = OpCompositeExtract %float %272 3
%274 = OpLoad %v4float %dst
%275 = OpCompositeExtract %float %274 3
%276 = OpFAdd %float %273 %275
%277 = OpLoad %float %_1_alpha
%278 = OpFSub %float %276 %277
%279 = OpCompositeConstruct %v4float %269 %270 %271 %278
OpStore %sk_FragColor %279
%257 = OpLoad %v3float %236
%258 = OpLoad %v4float %dst
%259 = OpVectorShuffle %v3float %258 %258 0 1 2
%260 = OpFAdd %v3float %257 %259
%261 = OpLoad %v3float %_3_dsa
%262 = OpFSub %v3float %260 %261
%263 = OpLoad %v4float %src
%264 = OpVectorShuffle %v3float %263 %263 0 1 2
%265 = OpFAdd %v3float %262 %264
%266 = OpLoad %v3float %_2_sda
%267 = OpFSub %v3float %265 %266
%268 = OpCompositeExtract %float %267 0
%269 = OpCompositeExtract %float %267 1
%270 = OpCompositeExtract %float %267 2
%271 = OpLoad %v4float %src
%272 = OpCompositeExtract %float %271 3
%273 = OpLoad %v4float %dst
%274 = OpCompositeExtract %float %273 3
%275 = OpFAdd %float %272 %274
%276 = OpLoad %float %_1_alpha
%277 = OpFSub %float %275 %276
%278 = OpCompositeConstruct %v4float %268 %269 %270 %277
OpStore %sk_FragColor %278
OpReturn
OpFunctionEnd

View File

@ -31,53 +31,53 @@ OpDecorate %32 RelaxedPrecision
OpDecorate %34 RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %45 RelaxedPrecision
OpDecorate %47 RelaxedPrecision
OpDecorate %48 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %56 RelaxedPrecision
OpDecorate %58 RelaxedPrecision
OpDecorate %60 RelaxedPrecision
OpDecorate %65 RelaxedPrecision
OpDecorate %67 RelaxedPrecision
OpDecorate %69 RelaxedPrecision
OpDecorate %72 RelaxedPrecision
OpDecorate %55 RelaxedPrecision
OpDecorate %57 RelaxedPrecision
OpDecorate %59 RelaxedPrecision
OpDecorate %64 RelaxedPrecision
OpDecorate %66 RelaxedPrecision
OpDecorate %68 RelaxedPrecision
OpDecorate %71 RelaxedPrecision
OpDecorate %76 RelaxedPrecision
OpDecorate %77 RelaxedPrecision
OpDecorate %78 RelaxedPrecision
OpDecorate %82 RelaxedPrecision
OpDecorate %83 RelaxedPrecision
OpDecorate %84 RelaxedPrecision
OpDecorate %85 RelaxedPrecision
OpDecorate %88 RelaxedPrecision
OpDecorate %87 RelaxedPrecision
OpDecorate %89 RelaxedPrecision
OpDecorate %90 RelaxedPrecision
OpDecorate %91 RelaxedPrecision
OpDecorate %92 RelaxedPrecision
OpDecorate %97 RelaxedPrecision
OpDecorate %98 RelaxedPrecision
OpDecorate %99 RelaxedPrecision
OpDecorate %102 RelaxedPrecision
OpDecorate %103 RelaxedPrecision
OpDecorate %104 RelaxedPrecision
OpDecorate %110 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %112 RelaxedPrecision
OpDecorate %113 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %117 RelaxedPrecision
OpDecorate %118 RelaxedPrecision
OpDecorate %119 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %122 RelaxedPrecision
OpDecorate %126 RelaxedPrecision
OpDecorate %127 RelaxedPrecision
OpDecorate %128 RelaxedPrecision
OpDecorate %129 RelaxedPrecision
OpDecorate %130 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %132 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %134 RelaxedPrecision
OpDecorate %135 RelaxedPrecision
OpDecorate %136 RelaxedPrecision
OpDecorate %137 RelaxedPrecision
OpDecorate %138 RelaxedPrecision
OpDecorate %142 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
OpDecorate %145 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %147 RelaxedPrecision
OpDecorate %148 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -96,8 +96,7 @@ OpDecorate %148 RelaxedPrecision
%float_0_300000012 = OpConstant %float 0.300000012
%float_0_589999974 = OpConstant %float 0.589999974
%float_0_109999999 = OpConstant %float 0.109999999
%39 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%47 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%42 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%false = OpConstantFalse %bool
%float_0 = OpConstant %float 0
%float_1 = OpConstant %float 1
@ -110,7 +109,7 @@ OpDecorate %148 RelaxedPrecision
%_6_result = OpVariable %_ptr_Function_v3float Function
%_7_minComp = OpVariable %_ptr_Function_float Function
%_8_maxComp = OpVariable %_ptr_Function_float Function
%107 = OpVariable %_ptr_Function_v3float Function
%106 = OpVariable %_ptr_Function_v3float Function
%18 = OpLoad %v4float %dst
%19 = OpCompositeExtract %float %18 3
%20 = OpLoad %v4float %src
@ -130,125 +129,125 @@ OpStore %_2_sda %30
%36 = OpVectorTimesScalar %v3float %33 %35
OpStore %_3_dsa %36
%43 = OpLoad %v3float %_2_sda
%38 = OpDot %float %39 %43
%38 = OpDot %float %42 %43
OpStore %_5_lum %38
%45 = OpLoad %float %_5_lum
%48 = OpLoad %v3float %_3_dsa
%46 = OpDot %float %47 %48
%49 = OpFSub %float %45 %46
%50 = OpLoad %v3float %_3_dsa
%51 = OpCompositeConstruct %v3float %49 %49 %49
%52 = OpFAdd %v3float %51 %50
OpStore %_6_result %52
%56 = OpLoad %v3float %_6_result
%57 = OpCompositeExtract %float %56 0
%58 = OpLoad %v3float %_6_result
%59 = OpCompositeExtract %float %58 1
%55 = OpExtInst %float %1 FMin %57 %59
%60 = OpLoad %v3float %_6_result
%61 = OpCompositeExtract %float %60 2
%54 = OpExtInst %float %1 FMin %55 %61
OpStore %_7_minComp %54
%65 = OpLoad %v3float %_6_result
%66 = OpCompositeExtract %float %65 0
%67 = OpLoad %v3float %_6_result
%68 = OpCompositeExtract %float %67 1
%64 = OpExtInst %float %1 FMax %66 %68
%69 = OpLoad %v3float %_6_result
%70 = OpCompositeExtract %float %69 2
%63 = OpExtInst %float %1 FMax %64 %70
OpStore %_8_maxComp %63
%72 = OpLoad %float %_7_minComp
%74 = OpFOrdLessThan %bool %72 %float_0
OpSelectionMerge %76 None
OpBranchConditional %74 %75 %76
%47 = OpLoad %v3float %_3_dsa
%46 = OpDot %float %42 %47
%48 = OpFSub %float %45 %46
%49 = OpLoad %v3float %_3_dsa
%50 = OpCompositeConstruct %v3float %48 %48 %48
%51 = OpFAdd %v3float %50 %49
OpStore %_6_result %51
%55 = OpLoad %v3float %_6_result
%56 = OpCompositeExtract %float %55 0
%57 = OpLoad %v3float %_6_result
%58 = OpCompositeExtract %float %57 1
%54 = OpExtInst %float %1 FMin %56 %58
%59 = OpLoad %v3float %_6_result
%60 = OpCompositeExtract %float %59 2
%53 = OpExtInst %float %1 FMin %54 %60
OpStore %_7_minComp %53
%64 = OpLoad %v3float %_6_result
%65 = OpCompositeExtract %float %64 0
%66 = OpLoad %v3float %_6_result
%67 = OpCompositeExtract %float %66 1
%63 = OpExtInst %float %1 FMax %65 %67
%68 = OpLoad %v3float %_6_result
%69 = OpCompositeExtract %float %68 2
%62 = OpExtInst %float %1 FMax %63 %69
OpStore %_8_maxComp %62
%71 = OpLoad %float %_7_minComp
%73 = OpFOrdLessThan %bool %71 %float_0
OpSelectionMerge %75 None
OpBranchConditional %73 %74 %75
%74 = OpLabel
%76 = OpLoad %float %_5_lum
%77 = OpLoad %float %_7_minComp
%78 = OpFOrdNotEqual %bool %76 %77
OpBranch %75
%75 = OpLabel
%77 = OpLoad %float %_5_lum
%78 = OpLoad %float %_7_minComp
%79 = OpFOrdNotEqual %bool %77 %78
OpBranch %76
%76 = OpLabel
%80 = OpPhi %bool %false %15 %79 %75
OpSelectionMerge %82 None
OpBranchConditional %80 %81 %82
%79 = OpPhi %bool %false %15 %78 %74
OpSelectionMerge %81 None
OpBranchConditional %79 %80 %81
%80 = OpLabel
%82 = OpLoad %float %_5_lum
%83 = OpLoad %v3float %_6_result
%84 = OpLoad %float %_5_lum
%85 = OpCompositeConstruct %v3float %84 %84 %84
%86 = OpFSub %v3float %83 %85
%87 = OpLoad %float %_5_lum
%88 = OpVectorTimesScalar %v3float %86 %87
%89 = OpLoad %float %_5_lum
%90 = OpLoad %float %_7_minComp
%91 = OpFSub %float %89 %90
%93 = OpFDiv %float %float_1 %91
%94 = OpVectorTimesScalar %v3float %88 %93
%95 = OpCompositeConstruct %v3float %82 %82 %82
%96 = OpFAdd %v3float %95 %94
OpStore %_6_result %96
OpBranch %81
%81 = OpLabel
%83 = OpLoad %float %_5_lum
%84 = OpLoad %v3float %_6_result
%85 = OpLoad %float %_5_lum
%86 = OpCompositeConstruct %v3float %85 %85 %85
%87 = OpFSub %v3float %84 %86
%88 = OpLoad %float %_5_lum
%89 = OpVectorTimesScalar %v3float %87 %88
%90 = OpLoad %float %_5_lum
%91 = OpLoad %float %_7_minComp
%92 = OpFSub %float %90 %91
%94 = OpFDiv %float %float_1 %92
%95 = OpVectorTimesScalar %v3float %89 %94
%96 = OpCompositeConstruct %v3float %83 %83 %83
%97 = OpFAdd %v3float %96 %95
OpStore %_6_result %97
OpBranch %82
%82 = OpLabel
%98 = OpLoad %float %_8_maxComp
%99 = OpLoad %float %_1_alpha
%100 = OpFOrdGreaterThan %bool %98 %99
OpSelectionMerge %102 None
OpBranchConditional %100 %101 %102
%97 = OpLoad %float %_8_maxComp
%98 = OpLoad %float %_1_alpha
%99 = OpFOrdGreaterThan %bool %97 %98
OpSelectionMerge %101 None
OpBranchConditional %99 %100 %101
%100 = OpLabel
%102 = OpLoad %float %_8_maxComp
%103 = OpLoad %float %_5_lum
%104 = OpFOrdNotEqual %bool %102 %103
OpBranch %101
%101 = OpLabel
%103 = OpLoad %float %_8_maxComp
%104 = OpLoad %float %_5_lum
%105 = OpFOrdNotEqual %bool %103 %104
OpBranch %102
%102 = OpLabel
%106 = OpPhi %bool %false %82 %105 %101
OpSelectionMerge %110 None
OpBranchConditional %106 %108 %109
%105 = OpPhi %bool %false %81 %104 %100
OpSelectionMerge %109 None
OpBranchConditional %105 %107 %108
%107 = OpLabel
%110 = OpLoad %float %_5_lum
%111 = OpLoad %v3float %_6_result
%112 = OpLoad %float %_5_lum
%113 = OpCompositeConstruct %v3float %112 %112 %112
%114 = OpFSub %v3float %111 %113
%115 = OpLoad %float %_1_alpha
%116 = OpLoad %float %_5_lum
%117 = OpFSub %float %115 %116
%118 = OpVectorTimesScalar %v3float %114 %117
%119 = OpLoad %float %_8_maxComp
%120 = OpLoad %float %_5_lum
%121 = OpFSub %float %119 %120
%122 = OpFDiv %float %float_1 %121
%123 = OpVectorTimesScalar %v3float %118 %122
%124 = OpCompositeConstruct %v3float %110 %110 %110
%125 = OpFAdd %v3float %124 %123
OpStore %106 %125
OpBranch %109
%108 = OpLabel
%111 = OpLoad %float %_5_lum
%112 = OpLoad %v3float %_6_result
%113 = OpLoad %float %_5_lum
%114 = OpCompositeConstruct %v3float %113 %113 %113
%115 = OpFSub %v3float %112 %114
%116 = OpLoad %float %_1_alpha
%117 = OpLoad %float %_5_lum
%118 = OpFSub %float %116 %117
%119 = OpVectorTimesScalar %v3float %115 %118
%120 = OpLoad %float %_8_maxComp
%121 = OpLoad %float %_5_lum
%122 = OpFSub %float %120 %121
%123 = OpFDiv %float %float_1 %122
%124 = OpVectorTimesScalar %v3float %119 %123
%125 = OpCompositeConstruct %v3float %111 %111 %111
%126 = OpFAdd %v3float %125 %124
OpStore %107 %126
OpBranch %110
%126 = OpLoad %v3float %_6_result
OpStore %106 %126
OpBranch %109
%109 = OpLabel
%127 = OpLoad %v3float %_6_result
OpStore %107 %127
OpBranch %110
%110 = OpLabel
%128 = OpLoad %v3float %107
%129 = OpLoad %v4float %dst
%130 = OpVectorShuffle %v3float %129 %129 0 1 2
%131 = OpFAdd %v3float %128 %130
%132 = OpLoad %v3float %_3_dsa
%133 = OpFSub %v3float %131 %132
%134 = OpLoad %v4float %src
%135 = OpVectorShuffle %v3float %134 %134 0 1 2
%136 = OpFAdd %v3float %133 %135
%137 = OpLoad %v3float %_2_sda
%138 = OpFSub %v3float %136 %137
%139 = OpCompositeExtract %float %138 0
%140 = OpCompositeExtract %float %138 1
%141 = OpCompositeExtract %float %138 2
%142 = OpLoad %v4float %src
%143 = OpCompositeExtract %float %142 3
%144 = OpLoad %v4float %dst
%145 = OpCompositeExtract %float %144 3
%146 = OpFAdd %float %143 %145
%147 = OpLoad %float %_1_alpha
%148 = OpFSub %float %146 %147
%149 = OpCompositeConstruct %v4float %139 %140 %141 %148
OpStore %sk_FragColor %149
%127 = OpLoad %v3float %106
%128 = OpLoad %v4float %dst
%129 = OpVectorShuffle %v3float %128 %128 0 1 2
%130 = OpFAdd %v3float %127 %129
%131 = OpLoad %v3float %_3_dsa
%132 = OpFSub %v3float %130 %131
%133 = OpLoad %v4float %src
%134 = OpVectorShuffle %v3float %133 %133 0 1 2
%135 = OpFAdd %v3float %132 %134
%136 = OpLoad %v3float %_2_sda
%137 = OpFSub %v3float %135 %136
%138 = OpCompositeExtract %float %137 0
%139 = OpCompositeExtract %float %137 1
%140 = OpCompositeExtract %float %137 2
%141 = OpLoad %v4float %src
%142 = OpCompositeExtract %float %141 3
%143 = OpLoad %v4float %dst
%144 = OpCompositeExtract %float %143 3
%145 = OpFAdd %float %142 %144
%146 = OpLoad %float %_1_alpha
%147 = OpFSub %float %145 %146
%148 = OpCompositeConstruct %v4float %138 %139 %140 %147
OpStore %sk_FragColor %148
OpReturn
OpFunctionEnd

View File

@ -76,53 +76,53 @@ OpDecorate %161 RelaxedPrecision
OpDecorate %164 RelaxedPrecision
OpDecorate %174 RelaxedPrecision
OpDecorate %176 RelaxedPrecision
OpDecorate %178 RelaxedPrecision
OpDecorate %179 RelaxedPrecision
OpDecorate %180 RelaxedPrecision
OpDecorate %181 RelaxedPrecision
OpDecorate %187 RelaxedPrecision
OpDecorate %189 RelaxedPrecision
OpDecorate %191 RelaxedPrecision
OpDecorate %196 RelaxedPrecision
OpDecorate %198 RelaxedPrecision
OpDecorate %200 RelaxedPrecision
OpDecorate %203 RelaxedPrecision
OpDecorate %186 RelaxedPrecision
OpDecorate %188 RelaxedPrecision
OpDecorate %190 RelaxedPrecision
OpDecorate %195 RelaxedPrecision
OpDecorate %197 RelaxedPrecision
OpDecorate %199 RelaxedPrecision
OpDecorate %202 RelaxedPrecision
OpDecorate %206 RelaxedPrecision
OpDecorate %207 RelaxedPrecision
OpDecorate %208 RelaxedPrecision
OpDecorate %212 RelaxedPrecision
OpDecorate %213 RelaxedPrecision
OpDecorate %214 RelaxedPrecision
OpDecorate %215 RelaxedPrecision
OpDecorate %218 RelaxedPrecision
OpDecorate %217 RelaxedPrecision
OpDecorate %219 RelaxedPrecision
OpDecorate %220 RelaxedPrecision
OpDecorate %221 RelaxedPrecision
OpDecorate %222 RelaxedPrecision
OpDecorate %227 RelaxedPrecision
OpDecorate %228 RelaxedPrecision
OpDecorate %229 RelaxedPrecision
OpDecorate %232 RelaxedPrecision
OpDecorate %233 RelaxedPrecision
OpDecorate %234 RelaxedPrecision
OpDecorate %240 RelaxedPrecision
OpDecorate %241 RelaxedPrecision
OpDecorate %242 RelaxedPrecision
OpDecorate %243 RelaxedPrecision
OpDecorate %245 RelaxedPrecision
OpDecorate %246 RelaxedPrecision
OpDecorate %247 RelaxedPrecision
OpDecorate %248 RelaxedPrecision
OpDecorate %249 RelaxedPrecision
OpDecorate %250 RelaxedPrecision
OpDecorate %251 RelaxedPrecision
OpDecorate %252 RelaxedPrecision
OpDecorate %256 RelaxedPrecision
OpDecorate %257 RelaxedPrecision
OpDecorate %258 RelaxedPrecision
OpDecorate %259 RelaxedPrecision
OpDecorate %260 RelaxedPrecision
OpDecorate %261 RelaxedPrecision
OpDecorate %262 RelaxedPrecision
OpDecorate %263 RelaxedPrecision
OpDecorate %264 RelaxedPrecision
OpDecorate %265 RelaxedPrecision
OpDecorate %266 RelaxedPrecision
OpDecorate %267 RelaxedPrecision
OpDecorate %268 RelaxedPrecision
OpDecorate %272 RelaxedPrecision
OpDecorate %274 RelaxedPrecision
OpDecorate %271 RelaxedPrecision
OpDecorate %273 RelaxedPrecision
OpDecorate %275 RelaxedPrecision
OpDecorate %276 RelaxedPrecision
OpDecorate %277 RelaxedPrecision
OpDecorate %278 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -144,8 +144,7 @@ OpDecorate %278 RelaxedPrecision
%float_0_300000012 = OpConstant %float 0.300000012
%float_0_589999974 = OpConstant %float 0.589999974
%float_0_109999999 = OpConstant %float 0.109999999
%170 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%178 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%173 = OpConstantComposite %v3float %float_0_300000012 %float_0_589999974 %float_0_109999999
%false = OpConstantFalse %bool
%float_1 = OpConstant %float 1
%_blend_set_color_saturation_helper = OpFunction %v3float None %15
@ -208,7 +207,7 @@ OpFunctionEnd
%_8_result = OpVariable %_ptr_Function_v3float Function
%_9_minComp = OpVariable %_ptr_Function_float Function
%_10_maxComp = OpVariable %_ptr_Function_float Function
%237 = OpVariable %_ptr_Function_v3float Function
%236 = OpVariable %_ptr_Function_v3float Function
%52 = OpLoad %v4float %dst
%53 = OpCompositeExtract %float %52 3
%54 = OpLoad %v4float %src
@ -352,125 +351,125 @@ OpBranch %138
OpBranch %95
%95 = OpLabel
%174 = OpLoad %v3float %_3_dsa
%169 = OpDot %float %170 %174
%169 = OpDot %float %173 %174
OpStore %_7_lum %169
%176 = OpLoad %float %_7_lum
%179 = OpLoad %v3float %_4_blend_set_color_saturation
%177 = OpDot %float %178 %179
%180 = OpFSub %float %176 %177
%181 = OpLoad %v3float %_4_blend_set_color_saturation
%182 = OpCompositeConstruct %v3float %180 %180 %180
%183 = OpFAdd %v3float %182 %181
OpStore %_8_result %183
%187 = OpLoad %v3float %_8_result
%188 = OpCompositeExtract %float %187 0
%189 = OpLoad %v3float %_8_result
%190 = OpCompositeExtract %float %189 1
%186 = OpExtInst %float %1 FMin %188 %190
%191 = OpLoad %v3float %_8_result
%192 = OpCompositeExtract %float %191 2
%185 = OpExtInst %float %1 FMin %186 %192
OpStore %_9_minComp %185
%196 = OpLoad %v3float %_8_result
%197 = OpCompositeExtract %float %196 0
%198 = OpLoad %v3float %_8_result
%199 = OpCompositeExtract %float %198 1
%195 = OpExtInst %float %1 FMax %197 %199
%200 = OpLoad %v3float %_8_result
%201 = OpCompositeExtract %float %200 2
%194 = OpExtInst %float %1 FMax %195 %201
OpStore %_10_maxComp %194
%203 = OpLoad %float %_9_minComp
%204 = OpFOrdLessThan %bool %203 %float_0
OpSelectionMerge %206 None
OpBranchConditional %204 %205 %206
%178 = OpLoad %v3float %_4_blend_set_color_saturation
%177 = OpDot %float %173 %178
%179 = OpFSub %float %176 %177
%180 = OpLoad %v3float %_4_blend_set_color_saturation
%181 = OpCompositeConstruct %v3float %179 %179 %179
%182 = OpFAdd %v3float %181 %180
OpStore %_8_result %182
%186 = OpLoad %v3float %_8_result
%187 = OpCompositeExtract %float %186 0
%188 = OpLoad %v3float %_8_result
%189 = OpCompositeExtract %float %188 1
%185 = OpExtInst %float %1 FMin %187 %189
%190 = OpLoad %v3float %_8_result
%191 = OpCompositeExtract %float %190 2
%184 = OpExtInst %float %1 FMin %185 %191
OpStore %_9_minComp %184
%195 = OpLoad %v3float %_8_result
%196 = OpCompositeExtract %float %195 0
%197 = OpLoad %v3float %_8_result
%198 = OpCompositeExtract %float %197 1
%194 = OpExtInst %float %1 FMax %196 %198
%199 = OpLoad %v3float %_8_result
%200 = OpCompositeExtract %float %199 2
%193 = OpExtInst %float %1 FMax %194 %200
OpStore %_10_maxComp %193
%202 = OpLoad %float %_9_minComp
%203 = OpFOrdLessThan %bool %202 %float_0
OpSelectionMerge %205 None
OpBranchConditional %203 %204 %205
%204 = OpLabel
%206 = OpLoad %float %_7_lum
%207 = OpLoad %float %_9_minComp
%208 = OpFOrdNotEqual %bool %206 %207
OpBranch %205
%205 = OpLabel
%207 = OpLoad %float %_7_lum
%208 = OpLoad %float %_9_minComp
%209 = OpFOrdNotEqual %bool %207 %208
OpBranch %206
%206 = OpLabel
%210 = OpPhi %bool %false %95 %209 %205
OpSelectionMerge %212 None
OpBranchConditional %210 %211 %212
%209 = OpPhi %bool %false %95 %208 %204
OpSelectionMerge %211 None
OpBranchConditional %209 %210 %211
%210 = OpLabel
%212 = OpLoad %float %_7_lum
%213 = OpLoad %v3float %_8_result
%214 = OpLoad %float %_7_lum
%215 = OpCompositeConstruct %v3float %214 %214 %214
%216 = OpFSub %v3float %213 %215
%217 = OpLoad %float %_7_lum
%218 = OpVectorTimesScalar %v3float %216 %217
%219 = OpLoad %float %_7_lum
%220 = OpLoad %float %_9_minComp
%221 = OpFSub %float %219 %220
%223 = OpFDiv %float %float_1 %221
%224 = OpVectorTimesScalar %v3float %218 %223
%225 = OpCompositeConstruct %v3float %212 %212 %212
%226 = OpFAdd %v3float %225 %224
OpStore %_8_result %226
OpBranch %211
%211 = OpLabel
%213 = OpLoad %float %_7_lum
%214 = OpLoad %v3float %_8_result
%215 = OpLoad %float %_7_lum
%216 = OpCompositeConstruct %v3float %215 %215 %215
%217 = OpFSub %v3float %214 %216
%218 = OpLoad %float %_7_lum
%219 = OpVectorTimesScalar %v3float %217 %218
%220 = OpLoad %float %_7_lum
%221 = OpLoad %float %_9_minComp
%222 = OpFSub %float %220 %221
%224 = OpFDiv %float %float_1 %222
%225 = OpVectorTimesScalar %v3float %219 %224
%226 = OpCompositeConstruct %v3float %213 %213 %213
%227 = OpFAdd %v3float %226 %225
OpStore %_8_result %227
OpBranch %212
%212 = OpLabel
%228 = OpLoad %float %_10_maxComp
%229 = OpLoad %float %_1_alpha
%230 = OpFOrdGreaterThan %bool %228 %229
OpSelectionMerge %232 None
OpBranchConditional %230 %231 %232
%227 = OpLoad %float %_10_maxComp
%228 = OpLoad %float %_1_alpha
%229 = OpFOrdGreaterThan %bool %227 %228
OpSelectionMerge %231 None
OpBranchConditional %229 %230 %231
%230 = OpLabel
%232 = OpLoad %float %_10_maxComp
%233 = OpLoad %float %_7_lum
%234 = OpFOrdNotEqual %bool %232 %233
OpBranch %231
%231 = OpLabel
%233 = OpLoad %float %_10_maxComp
%234 = OpLoad %float %_7_lum
%235 = OpFOrdNotEqual %bool %233 %234
OpBranch %232
%232 = OpLabel
%236 = OpPhi %bool %false %212 %235 %231
OpSelectionMerge %240 None
OpBranchConditional %236 %238 %239
%235 = OpPhi %bool %false %211 %234 %230
OpSelectionMerge %239 None
OpBranchConditional %235 %237 %238
%237 = OpLabel
%240 = OpLoad %float %_7_lum
%241 = OpLoad %v3float %_8_result
%242 = OpLoad %float %_7_lum
%243 = OpCompositeConstruct %v3float %242 %242 %242
%244 = OpFSub %v3float %241 %243
%245 = OpLoad %float %_1_alpha
%246 = OpLoad %float %_7_lum
%247 = OpFSub %float %245 %246
%248 = OpVectorTimesScalar %v3float %244 %247
%249 = OpLoad %float %_10_maxComp
%250 = OpLoad %float %_7_lum
%251 = OpFSub %float %249 %250
%252 = OpFDiv %float %float_1 %251
%253 = OpVectorTimesScalar %v3float %248 %252
%254 = OpCompositeConstruct %v3float %240 %240 %240
%255 = OpFAdd %v3float %254 %253
OpStore %236 %255
OpBranch %239
%238 = OpLabel
%241 = OpLoad %float %_7_lum
%242 = OpLoad %v3float %_8_result
%243 = OpLoad %float %_7_lum
%244 = OpCompositeConstruct %v3float %243 %243 %243
%245 = OpFSub %v3float %242 %244
%246 = OpLoad %float %_1_alpha
%247 = OpLoad %float %_7_lum
%248 = OpFSub %float %246 %247
%249 = OpVectorTimesScalar %v3float %245 %248
%250 = OpLoad %float %_10_maxComp
%251 = OpLoad %float %_7_lum
%252 = OpFSub %float %250 %251
%253 = OpFDiv %float %float_1 %252
%254 = OpVectorTimesScalar %v3float %249 %253
%255 = OpCompositeConstruct %v3float %241 %241 %241
%256 = OpFAdd %v3float %255 %254
OpStore %237 %256
OpBranch %240
%256 = OpLoad %v3float %_8_result
OpStore %236 %256
OpBranch %239
%239 = OpLabel
%257 = OpLoad %v3float %_8_result
OpStore %237 %257
OpBranch %240
%240 = OpLabel
%258 = OpLoad %v3float %237
%259 = OpLoad %v4float %dst
%260 = OpVectorShuffle %v3float %259 %259 0 1 2
%261 = OpFAdd %v3float %258 %260
%262 = OpLoad %v3float %_3_dsa
%263 = OpFSub %v3float %261 %262
%264 = OpLoad %v4float %src
%265 = OpVectorShuffle %v3float %264 %264 0 1 2
%266 = OpFAdd %v3float %263 %265
%267 = OpLoad %v3float %_2_sda
%268 = OpFSub %v3float %266 %267
%269 = OpCompositeExtract %float %268 0
%270 = OpCompositeExtract %float %268 1
%271 = OpCompositeExtract %float %268 2
%272 = OpLoad %v4float %src
%273 = OpCompositeExtract %float %272 3
%274 = OpLoad %v4float %dst
%275 = OpCompositeExtract %float %274 3
%276 = OpFAdd %float %273 %275
%277 = OpLoad %float %_1_alpha
%278 = OpFSub %float %276 %277
%279 = OpCompositeConstruct %v4float %269 %270 %271 %278
OpStore %sk_FragColor %279
%257 = OpLoad %v3float %236
%258 = OpLoad %v4float %dst
%259 = OpVectorShuffle %v3float %258 %258 0 1 2
%260 = OpFAdd %v3float %257 %259
%261 = OpLoad %v3float %_3_dsa
%262 = OpFSub %v3float %260 %261
%263 = OpLoad %v4float %src
%264 = OpVectorShuffle %v3float %263 %263 0 1 2
%265 = OpFAdd %v3float %262 %264
%266 = OpLoad %v3float %_2_sda
%267 = OpFSub %v3float %265 %266
%268 = OpCompositeExtract %float %267 0
%269 = OpCompositeExtract %float %267 1
%270 = OpCompositeExtract %float %267 2
%271 = OpLoad %v4float %src
%272 = OpCompositeExtract %float %271 3
%273 = OpLoad %v4float %dst
%274 = OpCompositeExtract %float %273 3
%275 = OpFAdd %float %272 %274
%276 = OpLoad %float %_1_alpha
%277 = OpFSub %float %275 %276
%278 = OpCompositeConstruct %v4float %268 %269 %270 %277
OpStore %sk_FragColor %278
OpReturn
OpFunctionEnd

View File

@ -27,27 +27,27 @@ OpDecorate %_arr_v2float_int_2 ArrayStride 16
%_arr_v2float_int_2 = OpTypeArray %v2float %int_2
%_ptr_Function__arr_v2float_int_2 = OpTypePointer Function %_arr_v2float_int_2
%float_1 = OpConstant %float 1
%19 = OpConstantComposite %v2float %float_1 %float_1
%20 = OpConstantComposite %v2float %float_1 %float_1
%float_2 = OpConstant %float 2
%21 = OpConstantComposite %v2float %float_2 %float_2
%22 = OpConstantComposite %v2float %float_2 %float_2
%int_0 = OpConstant %int 0
%_ptr_Function_v2float = OpTypePointer Function %v2float
%float_3 = OpConstant %float 3
%31 = OpConstantComposite %v2float %float_3 %float_3
%32 = OpConstantComposite %v2float %float_3 %float_3
%float_4 = OpConstant %float 4
%33 = OpConstantComposite %v2float %float_4 %float_4
%34 = OpConstantComposite %v2float %float_4 %float_4
%int_1 = OpConstant %int 1
%main = OpFunction %void None %11
%12 = OpLabel
%13 = OpVariable %_ptr_Function__arr_v2float_int_2 Function
%30 = OpVariable %_ptr_Function__arr_v2float_int_2 Function
%23 = OpCompositeConstruct %_arr_v2float_int_2 %19 %21
%23 = OpCompositeConstruct %_arr_v2float_int_2 %20 %22
OpStore %13 %23
%25 = OpAccessChain %_ptr_Function_v2float %13 %int_0
%27 = OpLoad %v2float %25
%28 = OpCompositeExtract %float %27 0
%29 = OpCompositeExtract %float %27 1
%35 = OpCompositeConstruct %_arr_v2float_int_2 %31 %33
%35 = OpCompositeConstruct %_arr_v2float_int_2 %32 %34
OpStore %30 %35
%37 = OpAccessChain %_ptr_Function_v2float %30 %int_1
%38 = OpLoad %v2float %37

View File

@ -40,10 +40,10 @@ OpMemberDecorate %S 3 Offset 112
OpMemberDecorate %S 3 RelaxedPrecision
OpDecorate %83 RelaxedPrecision
OpDecorate %87 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %133 RelaxedPrecision
OpDecorate %144 RelaxedPrecision
OpDecorate %146 RelaxedPrecision
OpDecorate %114 RelaxedPrecision
OpDecorate %131 RelaxedPrecision
OpDecorate %141 RelaxedPrecision
OpDecorate %143 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -59,7 +59,7 @@ OpDecorate %146 RelaxedPrecision
%int = OpTypeInt 32 1
%int_3 = OpConstant %int 3
%v2float = OpTypeVector %float 2
%20 = OpConstantComposite %v2float %float_0 %float_0
%21 = OpConstantComposite %v2float %float_0 %float_0
%int_1 = OpConstant %int 1
%_arr_int_int_1 = OpTypeArray %int %int_1
%_ptr_Function__arr_int_int_1 = OpTypePointer Function %_arr_int_int_1
@ -70,7 +70,7 @@ OpDecorate %146 RelaxedPrecision
%_ptr_Function__arr_v4int_int_1 = OpTypePointer Function %_arr_v4int_int_1
%int_2 = OpConstant %int 2
%int_4 = OpConstant %int 4
%35 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4
%37 = OpConstantComposite %v4int %int_1 %int_2 %int_3 %int_4
%_ptr_Function_v4int = OpTypePointer Function %v4int
%mat2v4float = OpTypeMatrix %v4float 2
%_arr_mat2v4float_int_1 = OpTypeArray %mat2v4float %int_1
@ -92,18 +92,15 @@ OpDecorate %146 RelaxedPrecision
%_arr_v4float_int_5 = OpTypeArray %v4float %int_5
%S = OpTypeStruct %float %_arr_float_int_5 %v4float %_arr_v4float_int_5
%_ptr_Function_S = OpTypePointer Function %S
%float_9 = OpConstant %float 9
%v3float = OpTypeVector %float 3
%78 = OpConstantComposite %v3float %float_9 %float_9 %float_9
%float_9 = OpConstant %float 9
%80 = 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
%91 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%93 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%mat3v3float = OpTypeMatrix %v3float 3
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
%_ptr_Function_v3float = OpTypePointer Function %v3float
%136 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
%x = OpVariable %_ptr_Function_v4float Function
@ -112,16 +109,16 @@ OpDecorate %146 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
%105 = OpVariable %_ptr_Function_mat3v3float Function
%103 = OpVariable %_ptr_Function_mat3v3float Function
%16 = OpAccessChain %_ptr_Function_float %x %int_3
OpStore %16 %float_0
%22 = OpLoad %v4float %x
%23 = OpVectorShuffle %v4float %22 %20 5 4 2 3
%23 = OpVectorShuffle %v4float %22 %21 5 4 2 3
OpStore %x %23
%29 = OpAccessChain %_ptr_Function_int %ai %int_0
OpStore %29 %int_0
%38 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0
OpStore %38 %35
OpStore %38 %37
%53 = OpCompositeConstruct %v4float %float_1 %float_2 %float_3 %float_4
%54 = OpCompositeConstruct %v4float %float_5 %float_6 %float_7 %float_8
%52 = OpCompositeConstruct %mat2v4float %53 %54
@ -146,7 +143,7 @@ OpStore %76 %float_0
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
%83 = OpVectorShuffle %v4float %82 %80 5 6 4 3
OpStore %81 %83
%85 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_2
%86 = OpLoad %v4float %85
@ -156,69 +153,69 @@ OpStore %85 %87
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
%90 = OpAccessChain %_ptr_Function_v4float %s %int_2
OpStore %90 %66
%92 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0
OpStore %92 %91
OpStore %sk_FragColor %93
%94 = OpCompositeExtract %int %37 0
%95 = OpConvertSToF %float %94
%96 = OpCompositeExtract %int %37 1
%97 = OpConvertSToF %float %96
%98 = OpCompositeExtract %int %95 1
%98 = OpCompositeExtract %int %37 2
%99 = OpConvertSToF %float %98
%100 = OpCompositeExtract %int %95 2
%100 = OpCompositeExtract %int %37 3
%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
%102 = OpCompositeConstruct %v4float %95 %97 %99 %101
OpStore %sk_FragColor %102
%107 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3
%108 = OpCompositeConstruct %v3float %float_4 %float_5 %float_6
%109 = OpCompositeConstruct %v3float %float_7 %float_8 %float_9
%106 = OpCompositeConstruct %mat3v3float %107 %108 %109
OpStore %103 %106
%110 = OpAccessChain %_ptr_Function_v3float %103 %int_0
%112 = OpLoad %v3float %110
%113 = OpVectorShuffle %v4float %112 %112 0 0 1 2
OpStore %sk_FragColor %113
%114 = OpLoad %v4float %x
OpStore %sk_FragColor %114
%116 = OpAccessChain %_ptr_Function_int %ai %int_0
%117 = OpLoad %int %116
%115 = OpConvertSToF %float %117
%118 = OpCompositeConstruct %v4float %115 %115 %115 %115
OpStore %sk_FragColor %118
%119 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0
%120 = OpLoad %v4int %119
%121 = OpCompositeExtract %int %120 0
%122 = OpConvertSToF %float %121
%123 = OpCompositeExtract %int %120 1
%124 = OpConvertSToF %float %123
%125 = OpCompositeExtract %int %122 1
%125 = OpCompositeExtract %int %120 2
%126 = OpConvertSToF %float %125
%127 = OpCompositeExtract %int %122 2
%127 = OpCompositeExtract %int %120 3
%128 = OpConvertSToF %float %127
%129 = OpCompositeExtract %int %122 3
%130 = OpConvertSToF %float %129
%131 = OpCompositeConstruct %v4float %124 %126 %128 %130
%129 = OpCompositeConstruct %v4float %122 %124 %126 %128
OpStore %sk_FragColor %129
%130 = OpAccessChain %_ptr_Function_v4float %ah2x4 %int_0 %int_0
%131 = OpLoad %v4float %130
OpStore %sk_FragColor %131
%132 = OpAccessChain %_ptr_Function_v4float %ah2x4 %int_0 %int_0
%132 = OpAccessChain %_ptr_Function_v4float %af4 %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 %93
%134 = OpAccessChain %_ptr_Function_float %s %int_0
%135 = OpLoad %float %134
%136 = OpCompositeConstruct %v4float %135 %135 %135 %135
OpStore %sk_FragColor %136
%137 = OpAccessChain %_ptr_Function_float %s %int_0
%137 = OpAccessChain %_ptr_Function_float %s %int_1 %int_1
%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
%140 = OpAccessChain %_ptr_Function_v4float %s %int_2
%141 = OpLoad %v4float %140
OpStore %sk_FragColor %141
%142 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0
%143 = OpLoad %v4float %142
OpStore %sk_FragColor %143
OpReturn
OpFunctionEnd

View File

@ -21,13 +21,13 @@ OpDecorate %17 RelaxedPrecision
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%v3float = OpTypeVector %float 3
%13 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%float_1 = OpConstant %float 1
%15 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
%16 = OpLoad %v4float %sk_FragColor
%17 = OpVectorShuffle %v4float %16 %13 4 5 6 3
%17 = OpVectorShuffle %v4float %16 %15 4 5 6 3
OpStore %sk_FragColor %17
OpReturn
OpFunctionEnd

View File

@ -21,12 +21,12 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%float_2 = OpConstant %float 2
%15 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%16 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %15
OpStore %sk_FragColor %14
OpStore %sk_FragColor %16
OpReturn
OpFunctionEnd

View File

@ -42,9 +42,9 @@ OpDecorate %23 RelaxedPrecision
%void = OpTypeVoid
%18 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_1 = OpConstant %float 1
%v2float = OpTypeVector %float 2
%24 = OpConstantComposite %v2float %float_1 %float_1
%float_1 = OpConstant %float 1
%26 = OpConstantComposite %v2float %float_1 %float_1
%float_0 = OpConstant %float 0
%v4bool = OpTypeVector %bool 4
%v3float = OpTypeVector %float 3
@ -53,7 +53,7 @@ OpDecorate %23 RelaxedPrecision
%tmpColor = OpVariable %_ptr_Function_v4float Function
%54 = OpVariable %_ptr_Function_v4float Function
%23 = OpLoad %15 %s
%22 = OpImageSampleImplicitLod %v4float %23 %24
%22 = OpImageSampleImplicitLod %v4float %23 %26
OpStore %tmpColor %22
%27 = OpLoad %mat4v4float %colorXform
%30 = OpCompositeConstruct %v4float %float_1 %float_0 %float_0 %float_0

View File

@ -28,7 +28,7 @@ OpDecorate %49 RelaxedPrecision
%float_2 = OpConstant %float 2
%float_5 = OpConstant %float 5
%float_0_75 = OpConstant %float 0.75
%20 = OpConstantComposite %v4float %float_0_75 %float_0_75 %float_0_75 %float_0_75
%21 = OpConstantComposite %v4float %float_0_75 %float_0_75 %float_0_75 %float_0_75
%int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int
%int_0 = OpConstant %int 0
@ -47,7 +47,7 @@ OpDecorate %49 RelaxedPrecision
OpSelectionMerge %19 None
OpBranchConditional %16 %17 %18
%17 = OpLabel
OpStore %sk_FragColor %20
OpStore %sk_FragColor %21
OpBranch %19
%18 = OpLabel
OpKill

View File

@ -21,7 +21,7 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%18 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%19 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%false = OpConstantFalse %bool
%main = OpFunction %void None %11
%12 = OpLabel
@ -30,7 +30,7 @@ OpBranch %13
OpLoopMerge %17 %16 None
OpBranch %14
%14 = OpLabel
OpStore %sk_FragColor %18
OpStore %sk_FragColor %19
OpBranch %15
%15 = OpLabel
OpBranchConditional %false %16 %17

View File

@ -29,13 +29,13 @@ OpDecorate %23 RelaxedPrecision
%void = OpTypeVoid
%25 = OpTypeFunction %void
%float_3 = OpConstant %float 3
%27 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3
%28 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3
%float_n3 = OpConstant %float -3
%30 = OpConstantComposite %v4float %float_n3 %float_n3 %float_n3 %float_n3
%31 = OpConstantComposite %v4float %float_n3 %float_n3 %float_n3 %float_n3
%float_7 = OpConstant %float 7
%34 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7
%35 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7
%float_n7 = OpConstant %float -7
%37 = OpConstantComposite %v4float %float_n7 %float_n7 %float_n7 %float_n7
%38 = OpConstantComposite %v4float %float_n7 %float_n7 %float_n7 %float_n7
%blend_dst = OpFunction %v4float None %12
%14 = OpFunctionParameter %_ptr_Function_v4float
%15 = OpFunctionParameter %_ptr_Function_v4float
@ -58,12 +58,12 @@ OpFunctionEnd
%32 = OpVariable %_ptr_Function_v4float Function
%36 = OpVariable %_ptr_Function_v4float Function
%39 = OpVariable %_ptr_Function_v4float Function
OpStore %29 %27
OpStore %32 %30
OpStore %29 %28
OpStore %32 %31
%33 = OpFunctionCall %v4float %live_fn %29 %32
OpStore %sk_FragColor %33
OpStore %36 %34
OpStore %39 %37
OpStore %36 %35
OpStore %39 %38
%40 = OpFunctionCall %v4float %blend_dst %36 %39
OpStore %sk_FragColor %40
OpReturn

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,51 +21,51 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%float_2 = OpConstant %float 2
%15 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%16 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%float_6 = OpConstant %float 6
%17 = OpConstantComposite %v4float %float_6 %float_6 %float_6 %float_6
%18 = OpConstantComposite %v4float %float_6 %float_6 %float_6 %float_6
%float_7 = OpConstant %float 7
%19 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7
%20 = OpConstantComposite %v4float %float_7 %float_7 %float_7 %float_7
%float_n8 = OpConstant %float -8
%21 = OpConstantComposite %v4float %float_n8 %float_n8 %float_n8 %float_n8
%22 = OpConstantComposite %v4float %float_n8 %float_n8 %float_n8 %float_n8
%float_n9 = OpConstant %float -9
%23 = OpConstantComposite %v4float %float_n9 %float_n9 %float_n9 %float_n9
%24 = OpConstantComposite %v4float %float_n9 %float_n9 %float_n9 %float_n9
%float_10 = OpConstant %float 10
%25 = OpConstantComposite %v4float %float_10 %float_10 %float_10 %float_10
%26 = OpConstantComposite %v4float %float_10 %float_10 %float_10 %float_10
%float_11 = OpConstant %float 11
%27 = OpConstantComposite %v4float %float_11 %float_11 %float_11 %float_11
%28 = OpConstantComposite %v4float %float_11 %float_11 %float_11 %float_11
%float_13 = OpConstant %float 13
%29 = OpConstantComposite %v4float %float_13 %float_13 %float_13 %float_13
%30 = OpConstantComposite %v4float %float_13 %float_13 %float_13 %float_13
%float_15 = OpConstant %float 15
%31 = OpConstantComposite %v4float %float_15 %float_15 %float_15 %float_15
%32 = OpConstantComposite %v4float %float_15 %float_15 %float_15 %float_15
%float_16 = OpConstant %float 16
%33 = OpConstantComposite %v4float %float_16 %float_16 %float_16 %float_16
%34 = OpConstantComposite %v4float %float_16 %float_16 %float_16 %float_16
%float_18 = OpConstant %float 18
%35 = OpConstantComposite %v4float %float_18 %float_18 %float_18 %float_18
%36 = OpConstantComposite %v4float %float_18 %float_18 %float_18 %float_18
%float_19 = OpConstant %float 19
%37 = OpConstantComposite %v4float %float_19 %float_19 %float_19 %float_19
%38 = OpConstantComposite %v4float %float_19 %float_19 %float_19 %float_19
%float_20 = OpConstant %float 20
%39 = OpConstantComposite %v4float %float_20 %float_20 %float_20 %float_20
%40 = OpConstantComposite %v4float %float_20 %float_20 %float_20 %float_20
%float_21 = OpConstant %float 21
%41 = OpConstantComposite %v4float %float_21 %float_21 %float_21 %float_21
%42 = OpConstantComposite %v4float %float_21 %float_21 %float_21 %float_21
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %15
OpStore %sk_FragColor %17
OpStore %sk_FragColor %19
OpStore %sk_FragColor %21
OpStore %sk_FragColor %23
OpStore %sk_FragColor %25
OpStore %sk_FragColor %27
OpStore %sk_FragColor %29
OpStore %sk_FragColor %31
OpStore %sk_FragColor %33
OpStore %sk_FragColor %35
OpStore %sk_FragColor %37
OpStore %sk_FragColor %39
OpStore %sk_FragColor %41
OpStore %sk_FragColor %14
OpStore %sk_FragColor %16
OpStore %sk_FragColor %18
OpStore %sk_FragColor %20
OpStore %sk_FragColor %22
OpStore %sk_FragColor %24
OpStore %sk_FragColor %26
OpStore %sk_FragColor %28
OpStore %sk_FragColor %30
OpStore %sk_FragColor %32
OpStore %sk_FragColor %34
OpStore %sk_FragColor %36
OpStore %sk_FragColor %38
OpStore %sk_FragColor %40
OpStore %sk_FragColor %42
OpReturn
OpFunctionEnd

View File

@ -22,14 +22,14 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%12 = OpTypeFunction %v4float
%float_1 = OpConstant %float 1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%15 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%void = OpTypeVoid
%17 = OpTypeFunction %void
%float_2 = OpConstant %float 2
%22 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%23 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%this_function_is_defined_before_use = OpFunction %v4float None %12
%13 = OpLabel
OpReturnValue %14
OpReturnValue %15
OpFunctionEnd
%main = OpFunction %void None %17
%18 = OpLabel
@ -41,5 +41,5 @@ OpReturn
OpFunctionEnd
%this_function_is_defined_after_use = OpFunction %v4float None %12
%21 = OpLabel
OpReturnValue %22
OpReturnValue %23
OpFunctionEnd

File diff suppressed because it is too large Load Diff

View File

@ -30,11 +30,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%v2float = OpTypeVector %float 2
%_ptr_Function_v2float = OpTypePointer Function %v2float
%29 = OpConstantComposite %v2float %float_1 %float_2
%31 = OpConstantComposite %v2float %float_1 %float_2
%float_3 = OpConstant %float 3
%float_4 = OpConstant %float 4
%35 = OpConstantComposite %v2float %float_3 %float_4
%41 = OpConstantComposite %v2float %float_3 %float_4
%36 = OpConstantComposite %v2float %float_3 %float_4
%main = OpFunction %void None %11
%12 = OpLabel
%_1_x = OpVariable %_ptr_Function_float Function
@ -56,27 +54,27 @@ OpStore %_1_x %22
%25 = OpLoad %float %_1_x
OpStore %x %25
OpStore %_3_x %29
%30 = OpExtInst %float %1 Length %31
%32 = OpCompositeConstruct %v2float %30 %30
OpStore %_3_x %32
%34 = OpLoad %v2float %_3_x
%33 = OpExtInst %float %1 Distance %34 %35
%38 = OpCompositeConstruct %v2float %33 %33
OpStore %_3_x %38
%40 = OpLoad %v2float %_3_x
%39 = OpDot %float %40 %41
%42 = OpCompositeConstruct %v2float %39 %39
OpStore %_3_x %42
%30 = OpExtInst %float %1 Length %29
%31 = OpCompositeConstruct %v2float %30 %30
OpStore %_3_x %31
%33 = OpLoad %v2float %_3_x
%32 = OpExtInst %float %1 Distance %33 %36
%37 = OpCompositeConstruct %v2float %32 %32
OpStore %_3_x %37
%39 = OpLoad %v2float %_3_x
%38 = OpDot %float %39 %36
%40 = OpCompositeConstruct %v2float %38 %38
OpStore %_3_x %40
%42 = OpLoad %v2float %_3_x
%41 = OpExtInst %v2float %1 Normalize %42
OpStore %_3_x %41
%44 = OpLoad %v2float %_3_x
%43 = OpExtInst %v2float %1 Normalize %44
OpStore %_3_x %43
%46 = OpLoad %v2float %_3_x
OpStore %y %46
%47 = OpLoad %float %x
%48 = OpLoad %v2float %y
%49 = OpCompositeExtract %float %48 0
%50 = OpCompositeExtract %float %48 1
%51 = OpCompositeConstruct %v4float %47 %49 %50 %float_1
OpStore %sk_FragColor %51
OpStore %y %44
%45 = OpLoad %float %x
%46 = OpLoad %v2float %y
%47 = OpCompositeExtract %float %46 0
%48 = OpCompositeExtract %float %46 1
%49 = OpCompositeConstruct %v4float %45 %47 %48 %float_1
OpStore %sk_FragColor %49
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_0_75 = OpConstant %float 0.75
%13 = OpConstantComposite %v4float %float_0_75 %float_0_75 %float_0_75 %float_0_75
%14 = OpConstantComposite %v4float %float_0_75 %float_0_75 %float_0_75 %float_0_75
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -26,9 +26,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%_ptr_Output_float = OpTypePointer Output %float
%int_0 = OpConstant %int 0
%v2float = OpTypeVector %float 2
%21 = OpConstantComposite %v2float %float_1 %float_1
%22 = OpConstantComposite %v2float %float_1 %float_1
%v3float = OpTypeVector %float 3
%25 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%26 = OpConstantComposite %v3float %float_1 %float_1 %float_1
%int_2 = OpConstant %int 2
%float_0 = OpConstant %float 0
%mat2v2float = OpTypeMatrix %v2float 2

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -28,7 +28,7 @@ OpDecorate %sk_RTAdjust DescriptorSet 0
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -37,7 +37,7 @@ OpDecorate %sk_RTAdjust DescriptorSet 0
%main = OpFunction %void None %11
%12 = OpLabel
%17 = OpAccessChain %_ptr_Output_v4float %3 %int_0
OpStore %17 %13
OpStore %17 %14
%19 = OpAccessChain %_ptr_Output_v4float %3 %int_0
%20 = OpLoad %v4float %19
%21 = OpVectorShuffle %v2float %20 %20 0 1

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%14 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -24,30 +24,30 @@ OpDecorate %sk_FragColor Index 0
OpDecorate %sk_Clockwise RelaxedPrecision
OpDecorate %sk_Clockwise BuiltIn FrontFacing
OpDecorate %31 RelaxedPrecision
OpDecorate %33 RelaxedPrecision
OpDecorate %34 RelaxedPrecision
OpDecorate %35 RelaxedPrecision
OpDecorate %37 RelaxedPrecision
OpDecorate %36 RelaxedPrecision
OpDecorate %44 RelaxedPrecision
OpDecorate %45 RelaxedPrecision
OpDecorate %46 RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %43 RelaxedPrecision
OpDecorate %42 RelaxedPrecision
OpDecorate %42 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %51 RelaxedPrecision
OpDecorate %52 RelaxedPrecision
OpDecorate %53 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %50 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %49 RelaxedPrecision
OpDecorate %57 RelaxedPrecision
OpDecorate %58 RelaxedPrecision
OpDecorate %59 RelaxedPrecision
OpDecorate %60 RelaxedPrecision
OpDecorate %61 RelaxedPrecision
OpDecorate %57 RelaxedPrecision
OpDecorate %57 RelaxedPrecision
OpDecorate %72 RelaxedPrecision
OpDecorate %75 RelaxedPrecision
OpDecorate %78 RelaxedPrecision
OpDecorate %157 RelaxedPrecision
OpDecorate %161 RelaxedPrecision
OpDecorate %164 RelaxedPrecision
OpDecorate %56 RelaxedPrecision
OpDecorate %56 RelaxedPrecision
OpDecorate %70 RelaxedPrecision
OpDecorate %73 RelaxedPrecision
OpDecorate %76 RelaxedPrecision
OpDecorate %152 RelaxedPrecision
OpDecorate %156 RelaxedPrecision
OpDecorate %159 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -60,18 +60,17 @@ OpDecorate %164 RelaxedPrecision
%v3float = OpTypeVector %float 3
%_ptr_Function_v3float = OpTypePointer Function %v3float
%float_3 = OpConstant %float 3
%16 = OpConstantComposite %v3float %float_3 %float_3 %float_3
%17 = OpConstantComposite %v3float %float_3 %float_3 %float_3
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_4 = OpConstant %float 4
%20 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
%21 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
%float_1 = OpConstant %float 1
%_ptr_Function_float = OpTypePointer Function %float
%int = OpTypeInt 32 1
%int_1 = OpConstant %int 1
%float_2 = OpConstant %float 2
%v2float = OpTypeVector %float 2
%27 = OpConstantComposite %v2float %float_2 %float_2
%32 = OpConstantComposite %v4float %float_4 %float_4 %float_4 %float_4
%float_2 = OpConstant %float 2
%29 = OpConstantComposite %v2float %float_2 %float_2
%mat2v2float = OpTypeMatrix %v2float 2
%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
%float_0 = OpConstant %float 0
@ -79,34 +78,30 @@ OpDecorate %164 RelaxedPrecision
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
%mat4v4float = OpTypeMatrix %v4float 4
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
%62 = OpConstantComposite %v3float %float_3 %float_3 %float_3
%int_3 = OpConstant %int 3
%int_0 = OpConstant %int 0
%_ptr_Function_v2float = OpTypePointer Function %v2float
%v2int = OpTypeVector %int 2
%_ptr_Function_v2int = OpTypePointer Function %v2int
%int_2 = OpConstant %int 2
%84 = OpConstantComposite %v2int %int_2 %int_2
%83 = OpConstantComposite %v2int %int_2 %int_2
%v4int = OpTypeVector %int 4
%_ptr_Function_v4int = OpTypePointer Function %v4int
%int_4 = OpConstant %int 4
%89 = OpConstantComposite %v4int %int_4 %int_4 %int_4 %int_4
%88 = OpConstantComposite %v4int %int_4 %int_4 %int_4 %int_4
%v3int = OpTypeVector %int 3
%91 = OpConstantComposite %v3int %int_3 %int_3 %int_3
%90 = OpConstantComposite %v3int %int_3 %int_3 %int_3
%_ptr_Function_int = OpTypePointer Function %int
%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
%147 = OpConstantComposite %v3bool %true %true %true
%143 = OpConstantComposite %v3bool %true %true %true
%v4bool = OpTypeVector %bool 4
%_ptr_Function_v4bool = OpTypePointer Function %v4bool
%false = OpConstantFalse %bool
%152 = OpConstantComposite %v4bool %false %false %false %false
%148 = OpConstantComposite %v4bool %false %false %false %false
%v2bool = OpTypeVector %bool 2
%154 = OpConstantComposite %v2bool %false %false
%150 = OpConstantComposite %v2bool %false %false
%_ptr_Function_bool = OpTypePointer Function %bool
%main = OpFunction %void None %11
%12 = OpLabel
@ -120,131 +115,131 @@ OpDecorate %164 RelaxedPrecision
%f2 = OpVariable %_ptr_Function_v2float Function
%f3 = OpVariable %_ptr_Function_v3float Function
%f2x2 = OpVariable %_ptr_Function_mat2v2float Function
%126 = OpVariable %_ptr_Function_mat3v3float Function
%134 = OpVariable %_ptr_Function_mat4v4float Function
%121 = OpVariable %_ptr_Function_mat3v3float Function
%129 = OpVariable %_ptr_Function_mat4v4float Function
%b3 = OpVariable %_ptr_Function_v3bool Function
%b4 = OpVariable %_ptr_Function_v4bool Function
OpStore %h3 %16
OpStore %h4 %20
OpStore %h3 %17
OpStore %h4 %21
%23 = OpAccessChain %_ptr_Function_float %h3 %int_1
OpStore %23 %float_1
%30 = OpLoad %v3float %h3
%31 = OpVectorShuffle %v3float %30 %27 3 1 4
%31 = OpVectorShuffle %v3float %30 %29 3 1 4
OpStore %h3 %31
%33 = OpLoad %v4float %h4
%34 = OpVectorShuffle %v4float %33 %32 6 7 4 5
OpStore %h4 %34
%35 = OpLoad %v3float %h3
%36 = OpCompositeExtract %float %35 0
%37 = OpLoad %v4float %h4
%38 = OpCompositeExtract %float %37 0
%39 = OpCompositeConstruct %v4float %float_1 %float_2 %36 %38
OpStore %sk_FragColor %39
%45 = OpCompositeConstruct %v2float %float_2 %float_0
%46 = OpCompositeConstruct %v2float %float_0 %float_2
%43 = OpCompositeConstruct %mat2v2float %45 %46
OpStore %h2x2 %43
%51 = OpCompositeConstruct %v3float %float_3 %float_0 %float_0
%52 = OpCompositeConstruct %v3float %float_0 %float_3 %float_0
%53 = OpCompositeConstruct %v3float %float_0 %float_0 %float_3
%50 = OpCompositeConstruct %mat3v3float %51 %52 %53
OpStore %h3x3 %50
%58 = OpCompositeConstruct %v4float %float_4 %float_0 %float_0 %float_0
%59 = OpCompositeConstruct %v4float %float_0 %float_4 %float_0 %float_0
%60 = OpCompositeConstruct %v4float %float_0 %float_0 %float_4 %float_0
%61 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_4
%57 = OpCompositeConstruct %mat4v4float %58 %59 %60 %61
OpStore %h4x4 %57
%63 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_1
OpStore %63 %62
%65 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_3
%66 = OpAccessChain %_ptr_Function_float %65 %int_3
OpStore %66 %float_1
%68 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
%70 = OpAccessChain %_ptr_Function_float %68 %int_0
OpStore %70 %float_1
%71 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
%72 = OpLoad %v2float %71
%73 = OpCompositeExtract %float %72 0
%74 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_0
%75 = OpLoad %v3float %74
%76 = OpCompositeExtract %float %75 0
%77 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_0
%78 = OpLoad %v4float %77
%79 = OpCompositeExtract %float %78 0
%80 = OpCompositeConstruct %v4float %73 %76 %79 %float_1
OpStore %sk_FragColor %80
OpStore %i2 %84
OpStore %i4 %89
%93 = OpLoad %v4int %i4
%94 = OpVectorShuffle %v4int %93 %91 4 5 6 3
OpStore %i4 %94
%95 = OpAccessChain %_ptr_Function_int %i2 %int_1
OpStore %95 %int_1
%98 = OpLoad %v2int %i2
%99 = OpCompositeExtract %int %98 0
%97 = OpConvertSToF %float %99
%101 = OpLoad %v4int %i4
%102 = OpCompositeExtract %int %101 0
%100 = OpConvertSToF %float %102
%103 = OpCompositeConstruct %v4float %float_1 %97 %float_3 %100
OpStore %sk_FragColor %103
OpStore %f2 %105
OpStore %f3 %107
%32 = OpLoad %v4float %h4
%33 = OpVectorShuffle %v4float %32 %21 6 7 4 5
OpStore %h4 %33
%34 = OpLoad %v3float %h3
%35 = OpCompositeExtract %float %34 0
%36 = OpLoad %v4float %h4
%37 = OpCompositeExtract %float %36 0
%38 = OpCompositeConstruct %v4float %float_1 %float_2 %35 %37
OpStore %sk_FragColor %38
%44 = OpCompositeConstruct %v2float %float_2 %float_0
%45 = OpCompositeConstruct %v2float %float_0 %float_2
%42 = OpCompositeConstruct %mat2v2float %44 %45
OpStore %h2x2 %42
%50 = OpCompositeConstruct %v3float %float_3 %float_0 %float_0
%51 = OpCompositeConstruct %v3float %float_0 %float_3 %float_0
%52 = OpCompositeConstruct %v3float %float_0 %float_0 %float_3
%49 = OpCompositeConstruct %mat3v3float %50 %51 %52
OpStore %h3x3 %49
%57 = OpCompositeConstruct %v4float %float_4 %float_0 %float_0 %float_0
%58 = OpCompositeConstruct %v4float %float_0 %float_4 %float_0 %float_0
%59 = OpCompositeConstruct %v4float %float_0 %float_0 %float_4 %float_0
%60 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_4
%56 = OpCompositeConstruct %mat4v4float %57 %58 %59 %60
OpStore %h4x4 %56
%61 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_1
OpStore %61 %17
%63 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_3
%64 = OpAccessChain %_ptr_Function_float %63 %int_3
OpStore %64 %float_1
%66 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
%68 = OpAccessChain %_ptr_Function_float %66 %int_0
OpStore %68 %float_1
%69 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
%70 = OpLoad %v2float %69
%71 = OpCompositeExtract %float %70 0
%72 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_0
%73 = OpLoad %v3float %72
%74 = OpCompositeExtract %float %73 0
%75 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_0
%76 = OpLoad %v4float %75
%77 = OpCompositeExtract %float %76 0
%78 = OpCompositeConstruct %v4float %71 %74 %77 %float_1
OpStore %sk_FragColor %78
OpStore %i2 %83
OpStore %i4 %88
%91 = OpLoad %v4int %i4
%92 = OpVectorShuffle %v4int %91 %90 4 5 6 3
OpStore %i4 %92
%93 = OpAccessChain %_ptr_Function_int %i2 %int_1
OpStore %93 %int_1
%96 = OpLoad %v2int %i2
%97 = OpCompositeExtract %int %96 0
%95 = OpConvertSToF %float %97
%99 = OpLoad %v4int %i4
%100 = OpCompositeExtract %int %99 0
%98 = OpConvertSToF %float %100
%101 = OpCompositeConstruct %v4float %float_1 %95 %float_3 %98
OpStore %sk_FragColor %101
OpStore %f2 %29
OpStore %f3 %17
%104 = OpLoad %v3float %f3
%105 = OpVectorShuffle %v3float %104 %29 3 4 2
OpStore %f3 %105
%106 = OpAccessChain %_ptr_Function_float %f2 %int_0
OpStore %106 %float_1
%107 = OpLoad %v2float %f2
%108 = OpCompositeExtract %float %107 0
%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
%110 = OpCompositeExtract %float %109 0
%111 = OpCompositeConstruct %v4float %float_1 %108 %110 %float_4
OpStore %sk_FragColor %111
%114 = OpCompositeConstruct %v2float %float_2 %float_0
%115 = OpCompositeConstruct %v2float %float_0 %float_2
%113 = OpCompositeConstruct %mat2v2float %114 %115
OpStore %f2x2 %113
%116 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0
%117 = OpAccessChain %_ptr_Function_float %116 %int_0
OpStore %117 %float_1
%118 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0
%119 = OpLoad %v2float %118
%120 = OpCompositeExtract %float %119 0
%123 = OpCompositeConstruct %v3float %float_3 %float_0 %float_0
%124 = OpCompositeConstruct %v3float %float_0 %float_3 %float_0
%125 = OpCompositeConstruct %v3float %float_0 %float_0 %float_3
%122 = OpCompositeConstruct %mat3v3float %123 %124 %125
OpStore %121 %122
%126 = OpAccessChain %_ptr_Function_v3float %121 %int_0
%127 = OpLoad %v3float %126
%128 = OpCompositeExtract %float %127 0
%131 = OpCompositeConstruct %v4float %float_4 %float_0 %float_0 %float_0
%132 = OpCompositeConstruct %v4float %float_0 %float_4 %float_0 %float_0
%133 = OpCompositeConstruct %v4float %float_0 %float_0 %float_4 %float_0
%134 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_4
%130 = OpCompositeConstruct %mat4v4float %131 %132 %133 %134
OpStore %129 %130
%135 = OpAccessChain %_ptr_Function_v4float %129 %int_0
%136 = OpLoad %v4float %135
%137 = OpCompositeExtract %float %136 0
%138 = OpCompositeConstruct %v4float %120 %128 %137 %float_1
OpStore %sk_FragColor %138
OpStore %b3 %143
OpStore %b4 %148
%151 = OpLoad %v4bool %b4
%152 = OpVectorShuffle %v4bool %151 %150 4 1 2 5
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
%153 = OpAccessChain %_ptr_Function_bool %b3 %int_2
OpStore %153 %true
%156 = OpLoad %v3bool %b3
%157 = OpCompositeExtract %bool %156 0
%155 = OpSelect %float %157 %float_1 %float_0
%159 = OpLoad %v4bool %b4
%160 = OpCompositeExtract %bool %159 0
%158 = OpSelect %float %160 %float_1 %float_0
%161 = OpCompositeConstruct %v4float %float_1 %float_0 %155 %158
OpStore %sk_FragColor %161
OpReturn
OpFunctionEnd

View File

@ -26,7 +26,7 @@ OpDecorate %test2DRect RelaxedPrecision
OpDecorate %test2DRect Binding 1
OpDecorate %19 RelaxedPrecision
OpDecorate %24 RelaxedPrecision
OpDecorate %27 RelaxedPrecision
OpDecorate %26 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -41,23 +41,22 @@ OpDecorate %27 RelaxedPrecision
%test2DRect = OpVariable %_ptr_UniformConstant_12 UniformConstant
%void = OpTypeVoid
%16 = OpTypeFunction %void
%float_0_5 = OpConstant %float 0.5
%v2float = OpTypeVector %float 2
%20 = OpConstantComposite %v2float %float_0_5 %float_0_5
%25 = OpConstantComposite %v2float %float_0_5 %float_0_5
%float_0_5 = OpConstant %float 0.5
%22 = OpConstantComposite %v2float %float_0_5 %float_0_5
%v3float = OpTypeVector %float 3
%28 = OpConstantComposite %v3float %float_0_5 %float_0_5 %float_0_5
%main = OpFunction %void None %16
%17 = OpLabel
%19 = OpLoad %12 %test2D
%18 = OpImageSampleImplicitLod %v4float %19 %20
%18 = OpImageSampleImplicitLod %v4float %19 %22
OpStore %sk_FragColor %18
%24 = OpLoad %12 %test2DRect
%23 = OpImageSampleImplicitLod %v4float %24 %25
%23 = OpImageSampleImplicitLod %v4float %24 %22
OpStore %sk_FragColor %23
%27 = OpLoad %12 %test2DRect
%26 = OpImageSampleProjImplicitLod %v4float %27 %28
OpStore %sk_FragColor %26
%26 = OpLoad %12 %test2DRect
%25 = OpImageSampleProjImplicitLod %v4float %26 %28
OpStore %sk_FragColor %25
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%14 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%14 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%14 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -21,9 +21,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%13 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%14 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %14
OpReturn
OpFunctionEnd

View File

@ -66,7 +66,7 @@ OpDecorate %148 RelaxedPrecision
%_ptr_Function_v4float = OpTypePointer Function %v4float
%145 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%float_0 = OpConstant %float 0
%146 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%147 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%main = OpFunction %void None %11
%12 = OpLabel
%v = OpVariable %_ptr_Function_v4bool Function
@ -223,7 +223,7 @@ OpBranchConditional %138 %142 %143
OpStore %140 %145
OpBranch %144
%143 = OpLabel
OpStore %140 %146
OpStore %140 %147
OpBranch %144
%144 = OpLabel
%148 = OpLoad %v4float %140

View File

@ -54,7 +54,7 @@ OpDecorate %69 RelaxedPrecision
%_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_float = OpTypePointer Function %float
%float_2 = OpConstant %float 2
%71 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%72 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
%main = OpFunction %void None %11
%12 = OpLabel
%_0_i = OpVariable %_ptr_Function_v4int Function
@ -122,6 +122,6 @@ OpStore %_10_w %65
%69 = OpLoad %float %_10_w
%70 = OpCompositeConstruct %v4float %66 %67 %68 %69
OpStore %sk_FragColor %70
OpStore %sk_FragColor %71
OpStore %sk_FragColor %72
OpReturn
OpFunctionEnd

View File

@ -22,9 +22,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%float_0 = OpConstant %float 0
%13 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
%15 = OpConstantComposite %v4float %float_1 %float_0 %float_1 %float_1
%main = OpFunction %void None %11
%12 = OpLabel
OpStore %sk_FragColor %13
OpStore %sk_FragColor %15
OpReturn
OpFunctionEnd

View File

@ -39,7 +39,7 @@ OpDecorate %24 RelaxedPrecision
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_0 = OpConstant %float 0
%v2float = OpTypeVector %float 2
%25 = OpConstantComposite %v2float %float_0 %float_0
%26 = OpConstantComposite %v2float %float_0 %float_0
%main = OpFunction %void None %15
%16 = OpLabel
%a = OpVariable %_ptr_Function_v4float Function
@ -48,7 +48,7 @@ OpDecorate %24 RelaxedPrecision
%19 = OpImageSampleImplicitLod %v4float %20 %float_0
OpStore %a %19
%24 = OpLoad %12 %tex
%23 = OpImageSampleProjImplicitLod %v4float %24 %25
%23 = OpImageSampleProjImplicitLod %v4float %24 %26
OpStore %b %23
%27 = OpLoad %v4float %a
%28 = OpVectorShuffle %v2float %27 %27 0 1

View File

@ -39,20 +39,20 @@ OpDecorate %26 RelaxedPrecision
%void = OpTypeVoid
%15 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float
%float_0 = OpConstant %float 0
%v2float = OpTypeVector %float 2
%21 = OpConstantComposite %v2float %float_0 %float_0
%float_0 = OpConstant %float 0
%23 = OpConstantComposite %v2float %float_0 %float_0
%v3float = OpTypeVector %float 3
%27 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%28 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%main = OpFunction %void None %15
%16 = OpLabel
%a = OpVariable %_ptr_Function_v4float Function
%b = OpVariable %_ptr_Function_v4float Function
%20 = OpLoad %12 %tex
%19 = OpImageSampleImplicitLod %v4float %20 %21
%19 = OpImageSampleImplicitLod %v4float %20 %23
OpStore %a %19
%26 = OpLoad %12 %tex
%25 = OpImageSampleProjImplicitLod %v4float %26 %27
%25 = OpImageSampleProjImplicitLod %v4float %26 %28
OpStore %b %25
%29 = OpLoad %v4float %a
%30 = OpVectorShuffle %v2float %29 %29 0 1

View File

@ -29,7 +29,7 @@ OpDecorate %two Binding 1
OpDecorate %24 RelaxedPrecision
OpDecorate %29 RelaxedPrecision
OpDecorate %34 RelaxedPrecision
OpDecorate %38 RelaxedPrecision
OpDecorate %37 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -51,8 +51,7 @@ OpDecorate %38 RelaxedPrecision
%float_0 = OpConstant %float 0
%float_n0_5 = OpConstant %float -0.5
%v2float = OpTypeVector %float 2
%30 = OpConstantComposite %v2float %float_0 %float_0
%35 = OpConstantComposite %v2float %float_0 %float_0
%31 = OpConstantComposite %v2float %float_0 %float_0
%v3float = OpTypeVector %float 3
%39 = OpConstantComposite %v3float %float_0 %float_0 %float_0
%main = OpFunction %void None %19
@ -65,24 +64,24 @@ OpDecorate %38 RelaxedPrecision
%23 = OpImageSampleImplicitLod %v4float %24 %float_0 Bias %float_n0_5
OpStore %a %23
%29 = OpLoad %16 %two
%28 = OpImageSampleImplicitLod %v4float %29 %30 Bias %float_n0_5
%28 = OpImageSampleImplicitLod %v4float %29 %31 Bias %float_n0_5
OpStore %b %28
%34 = OpLoad %12 %one
%33 = OpImageSampleProjImplicitLod %v4float %34 %35 Bias %float_n0_5
%33 = OpImageSampleProjImplicitLod %v4float %34 %31 Bias %float_n0_5
OpStore %c %33
%38 = OpLoad %16 %two
%37 = OpImageSampleProjImplicitLod %v4float %38 %39 Bias %float_n0_5
OpStore %d %37
%41 = OpLoad %v4float %a
%42 = OpCompositeExtract %float %41 0
%43 = OpLoad %v4float %b
%44 = OpCompositeExtract %float %43 0
%45 = OpLoad %v4float %c
%46 = OpCompositeExtract %float %45 0
%47 = OpLoad %v4float %d
%48 = OpCompositeExtract %float %47 0
%49 = OpCompositeConstruct %v4float %42 %44 %46 %48
OpStore %sk_FragColor %49
%37 = OpLoad %16 %two
%36 = OpImageSampleProjImplicitLod %v4float %37 %39 Bias %float_n0_5
OpStore %d %36
%40 = OpLoad %v4float %a
%41 = OpCompositeExtract %float %40 0
%42 = OpLoad %v4float %b
%43 = OpCompositeExtract %float %42 0
%44 = OpLoad %v4float %c
%45 = OpCompositeExtract %float %44 0
%46 = OpLoad %v4float %d
%47 = OpCompositeExtract %float %46 0
%48 = OpCompositeConstruct %v4float %41 %43 %45 %47
OpStore %sk_FragColor %48
OpReturn
OpFunctionEnd

View File

@ -21,13 +21,13 @@ OpDecorate %17 RelaxedPrecision
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_n1 = OpConstant %float -1
%v2float = OpTypeVector %float 2
%13 = OpConstantComposite %v2float %float_n1 %float_n1
%float_n1 = OpConstant %float -1
%15 = OpConstantComposite %v2float %float_n1 %float_n1
%main = OpFunction %void None %11
%12 = OpLabel
%16 = OpLoad %v4float %sk_FragColor
%17 = OpVectorShuffle %v4float %16 %13 4 5 2 3
%17 = OpVectorShuffle %v4float %16 %15 4 5 2 3
OpStore %sk_FragColor %17
OpReturn
OpFunctionEnd

View File

@ -1,7 +1,7 @@
### Compilation failed:
error: SPIR-V validation error: OpConstantComposite Constituent <id> count does not match Result Type <id> '22[%v3float]'s vector component count.
%23 = OpConstantComposite %v3float %24 %float_1
error: SPIR-V validation error: OpConstantComposite Constituent <id> count does not match Result Type <id> '21[%v3float]'s vector component count.
%22 = OpConstantComposite %v3float %14 %float_1
OpCapability Shader
%1 = OpExtInstImport "GLSL.std.450"
@ -34,75 +34,72 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%_ptr_Private_v2float = OpTypePointer Private %v2float
%v1 = OpVariable %_ptr_Private_v2float Private
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v2float %float_1 %float_1
%14 = OpConstantComposite %v2float %float_1 %float_1
%v2 = OpVariable %_ptr_Private_v2float Private
%float_2 = OpConstant %float 2
%16 = OpConstantComposite %v2float %float_1 %float_2
%17 = OpConstantComposite %v2float %float_1 %float_2
%v3 = OpVariable %_ptr_Private_v2float Private
%19 = OpConstantComposite %v2float %float_1 %float_1
%v3float = OpTypeVector %float 3
%_ptr_Private_v3float = OpTypePointer Private %v3float
%v4 = OpVariable %_ptr_Private_v3float Private
%24 = OpConstantComposite %v2float %float_1 %float_1
%23 = OpConstantComposite %v3float %24 %float_1
%22 = OpConstantComposite %v3float %14 %float_1
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
%_ptr_Private_v2int = OpTypePointer Private %v2int
%v5 = OpVariable %_ptr_Private_v2int Private
%int_1 = OpConstant %int 1
%29 = OpConstantComposite %v2int %int_1 %int_1
%28 = OpConstantComposite %v2int %int_1 %int_1
%v6 = OpVariable %_ptr_Private_v2int Private
%32 = OpConstantComposite %v2float %float_1 %float_2
%v7 = OpVariable %_ptr_Private_v2float Private
%int_2 = OpConstant %int 2
%39 = OpConstantComposite %v2int %int_1 %int_2
%37 = OpConstantComposite %v2int %int_1 %int_2
%void = OpTypeVoid
%47 = OpTypeFunction %void
%44 = OpTypeFunction %void
%_ptr_Output_float = OpTypePointer Output %float
%int_0 = OpConstant %int 0
%main = OpFunction %void None %47
%48 = OpLabel
OpStore %v1 %13
OpStore %v2 %16
OpStore %v3 %19
OpStore %v4 %23
OpStore %v5 %29
%33 = OpCompositeExtract %float %32 0
%34 = OpConvertFToS %int %33
%35 = OpCompositeExtract %float %32 1
%36 = OpConvertFToS %int %35
%37 = OpCompositeConstruct %v2int %34 %36
OpStore %v6 %37
%41 = OpCompositeExtract %int %39 0
%42 = OpConvertSToF %float %41
%43 = OpCompositeExtract %int %39 1
%44 = OpConvertSToF %float %43
%45 = OpCompositeConstruct %v2float %42 %44
OpStore %v7 %45
%49 = OpLoad %v2float %v1
%50 = OpCompositeExtract %float %49 0
%51 = OpLoad %v2float %v2
%main = OpFunction %void None %44
%45 = OpLabel
OpStore %v1 %14
OpStore %v2 %17
OpStore %v3 %14
OpStore %v4 %22
OpStore %v5 %28
%30 = OpCompositeExtract %float %17 0
%31 = OpConvertFToS %int %30
%32 = OpCompositeExtract %float %17 1
%33 = OpConvertFToS %int %32
%34 = OpCompositeConstruct %v2int %31 %33
OpStore %v6 %34
%38 = OpCompositeExtract %int %37 0
%39 = OpConvertSToF %float %38
%40 = OpCompositeExtract %int %37 1
%41 = OpConvertSToF %float %40
%42 = OpCompositeConstruct %v2float %39 %41
OpStore %v7 %42
%46 = OpLoad %v2float %v1
%47 = OpCompositeExtract %float %46 0
%48 = OpLoad %v2float %v2
%49 = OpCompositeExtract %float %48 0
%50 = OpFAdd %float %47 %49
%51 = OpLoad %v2float %v3
%52 = OpCompositeExtract %float %51 0
%53 = OpFAdd %float %50 %52
%54 = OpLoad %v2float %v3
%54 = OpLoad %v3float %v4
%55 = OpCompositeExtract %float %54 0
%56 = OpFAdd %float %53 %55
%57 = OpLoad %v3float %v4
%58 = OpCompositeExtract %float %57 0
%59 = OpFAdd %float %56 %58
%61 = OpLoad %v2int %v5
%62 = OpCompositeExtract %int %61 0
%60 = OpConvertSToF %float %62
%63 = OpFAdd %float %59 %60
%65 = OpLoad %v2int %v6
%66 = OpCompositeExtract %int %65 0
%64 = OpConvertSToF %float %66
%67 = OpFAdd %float %63 %64
%68 = OpLoad %v2float %v7
%69 = OpCompositeExtract %float %68 0
%70 = OpFAdd %float %67 %69
%71 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %71 %70
%58 = OpLoad %v2int %v5
%59 = OpCompositeExtract %int %58 0
%57 = OpConvertSToF %float %59
%60 = OpFAdd %float %56 %57
%62 = OpLoad %v2int %v6
%63 = OpCompositeExtract %int %62 0
%61 = OpConvertSToF %float %63
%64 = OpFAdd %float %60 %61
%65 = OpLoad %v2float %v7
%66 = OpCompositeExtract %float %65 0
%67 = OpFAdd %float %64 %66
%68 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %68 %67
OpReturn
OpFunctionEnd

View File

@ -12,14 +12,14 @@ OpDecorate %sk_FragColor Location 0
OpDecorate %sk_FragColor Index 0
OpDecorate %sk_Clockwise RelaxedPrecision
OpDecorate %sk_Clockwise BuiltIn FrontFacing
OpDecorate %108 RelaxedPrecision
OpDecorate %110 RelaxedPrecision
OpDecorate %111 RelaxedPrecision
OpDecorate %112 RelaxedPrecision
OpDecorate %113 RelaxedPrecision
OpDecorate %115 RelaxedPrecision
OpDecorate %116 RelaxedPrecision
OpDecorate %117 RelaxedPrecision
OpDecorate %118 RelaxedPrecision
OpDecorate %120 RelaxedPrecision
OpDecorate %121 RelaxedPrecision
OpDecorate %123 RelaxedPrecision
OpDecorate %124 RelaxedPrecision
OpDecorate %126 RelaxedPrecision
%float = OpTypeFloat 32
%v4float = OpTypeVector %float 4
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -37,15 +37,15 @@ OpDecorate %126 RelaxedPrecision
%float_7 = OpConstant %float 7
%float_9 = OpConstant %float 9
%float_11 = OpConstant %float 11
%18 = OpConstantComposite %v4float %float_6 %float_7 %float_9 %float_11
%22 = OpConstantComposite %v4float %float_6 %float_7 %float_9 %float_11
%23 = OpConstantComposite %v4float %float_7 %float_9 %float_9 %float_9
%float_2 = OpConstant %float 2
%float_4 = OpConstant %float 4
%float_8 = OpConstant %float 8
%24 = OpConstantComposite %v4float %float_2 %float_4 %float_6 %float_8
%27 = OpConstantComposite %v4float %float_2 %float_4 %float_6 %float_8
%float_12 = OpConstant %float 12
%float_3 = OpConstant %float 3
%28 = OpConstantComposite %v4float %float_12 %float_6 %float_4 %float_3
%30 = OpConstantComposite %v4float %float_12 %float_6 %float_4 %float_3
%float_1 = OpConstant %float 1
%float_n2 = OpConstant %float -2
%float_n5 = OpConstant %float -5
@ -56,16 +56,9 @@ OpDecorate %126 RelaxedPrecision
%float_13 = OpConstant %float 13
%float_n13 = OpConstant %float -13
%float_0 = OpConstant %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
%68 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
%float_16 = OpConstant %float 16
%float_17 = OpConstant %float 17
%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
@ -73,10 +66,8 @@ OpDecorate %126 RelaxedPrecision
%float_22 = OpConstant %float 22
%float_23 = OpConstant %float 23
%float_24 = OpConstant %float 24
%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
%109 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%114 = 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
@ -85,36 +76,27 @@ OpDecorate %126 RelaxedPrecision
%int_7 = OpConstant %int 7
%int_9 = OpConstant %int 9
%int_11 = OpConstant %int 11
%133 = OpConstantComposite %v4int %int_6 %int_7 %int_9 %int_11
%138 = OpConstantComposite %v4int %int_7 %int_9 %int_9 %int_9
%128 = OpConstantComposite %v4int %int_6 %int_7 %int_9 %int_11
%129 = OpConstantComposite %v4int %int_7 %int_9 %int_9 %int_9
%int_4 = OpConstant %int 4
%int_8 = OpConstant %int 8
%139 = OpConstantComposite %v4int %int_2 %int_4 %int_6 %int_8
%132 = OpConstantComposite %v4int %int_2 %int_4 %int_6 %int_8
%int_12 = OpConstant %int 12
%int_3 = OpConstant %int 3
%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
%135 = OpConstantComposite %v4int %int_12 %int_6 %int_4 %int_3
%153 = OpConstantComposite %v4int %int_0 %int_0 %int_0 %int_0
%int_1 = OpConstant %int 1
%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
%201 = OpConstantComposite %v4int %int_1 %int_1 %int_1 %int_1
%206 = OpConstantComposite %v4int %int_2 %int_2 %int_2 %int_2
%main = OpFunction %void None %11
%12 = OpLabel
%_0_result = OpVariable %_ptr_Function_v4int Function
%14 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %14 %float_0_5
OpStore %sk_FragColor %18
OpStore %sk_FragColor %22
OpStore %sk_FragColor %23
OpStore %sk_FragColor %24
OpStore %sk_FragColor %28
OpStore %sk_FragColor %27
OpStore %sk_FragColor %30
%31 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %31 %float_6
%33 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
@ -167,197 +149,197 @@ 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 %68
OpStore %sk_FragColor %68
OpStore %sk_FragColor %68
%69 = OpExtInst %float %1 Sqrt %float_6
%70 = OpCompositeConstruct %v4float %69 %69 %69 %69
OpStore %sk_FragColor %70
%71 = OpExtInst %float %1 Sqrt %float_6
%71 = OpExtInst %float %1 Sqrt %float_7
%72 = OpCompositeConstruct %v4float %71 %71 %71 %71
OpStore %sk_FragColor %72
%73 = OpExtInst %float %1 Sqrt %float_7
%73 = OpExtInst %float %1 Sqrt %float_8
%74 = OpCompositeConstruct %v4float %73 %73 %73 %73
OpStore %sk_FragColor %74
%75 = OpExtInst %float %1 Sqrt %float_8
%75 = OpExtInst %float %1 Sqrt %float_9
%76 = OpCompositeConstruct %v4float %75 %75 %75 %75
OpStore %sk_FragColor %76
%77 = OpExtInst %float %1 Sqrt %float_9
OpStore %sk_FragColor %68
OpStore %sk_FragColor %68
%77 = OpExtInst %float %1 Sqrt %float_12
%78 = OpCompositeConstruct %v4float %77 %77 %77 %77
OpStore %sk_FragColor %78
OpStore %sk_FragColor %79
%79 = OpExtInst %float %1 Sqrt %float_13
%80 = OpCompositeConstruct %v4float %79 %79 %79 %79
OpStore %sk_FragColor %80
%81 = OpExtInst %float %1 Sqrt %float_12
%82 = OpCompositeConstruct %v4float %81 %81 %81 %81
OpStore %sk_FragColor %82
%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 %68
OpStore %sk_FragColor %68
%81 = OpExtInst %float %1 Sqrt %float_16
%83 = OpCompositeConstruct %v4float %81 %81 %81 %81
OpStore %sk_FragColor %83
%84 = OpExtInst %float %1 Sqrt %float_17
%86 = OpCompositeConstruct %v4float %84 %84 %84 %84
OpStore %sk_FragColor %86
%87 = OpExtInst %float %1 Sqrt %float_16
OpStore %sk_FragColor %68
%87 = OpExtInst %float %1 Sqrt %float_19
%89 = OpCompositeConstruct %v4float %87 %87 %87 %87
OpStore %sk_FragColor %89
%90 = OpExtInst %float %1 Sqrt %float_17
%90 = OpExtInst %float %1 Sqrt %float_19_5
%92 = OpCompositeConstruct %v4float %90 %90 %90 %90
OpStore %sk_FragColor %92
OpStore %sk_FragColor %93
%94 = OpExtInst %float %1 Sqrt %float_19
%96 = OpCompositeConstruct %v4float %94 %94 %94 %94
OpStore %sk_FragColor %96
%97 = OpExtInst %float %1 Sqrt %float_19_5
%99 = OpCompositeConstruct %v4float %97 %97 %97 %97
OpStore %sk_FragColor %99
%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
%93 = OpExtInst %float %1 Sqrt %float_20
%95 = OpCompositeConstruct %v4float %93 %93 %93 %93
OpStore %sk_FragColor %95
%96 = OpExtInst %float %1 Sqrt %float_21
%98 = OpCompositeConstruct %v4float %96 %96 %96 %96
OpStore %sk_FragColor %98
%99 = OpExtInst %float %1 Sqrt %float_22
%101 = OpCompositeConstruct %v4float %99 %99 %99 %99
OpStore %sk_FragColor %101
%102 = OpExtInst %float %1 Sqrt %float_23
%104 = OpCompositeConstruct %v4float %102 %102 %102 %102
OpStore %sk_FragColor %104
%105 = OpExtInst %float %1 Sqrt %float_24
%107 = OpCompositeConstruct %v4float %105 %105 %105 %105
OpStore %sk_FragColor %107
%108 = OpLoad %v4float %sk_FragColor
%110 = OpFAdd %v4float %108 %109
OpStore %sk_FragColor %110
%111 = OpLoad %v4float %sk_FragColor
%112 = OpFSub %v4float %111 %109
OpStore %sk_FragColor %112
%113 = OpLoad %v4float %sk_FragColor
%115 = OpFMul %v4float %113 %114
OpStore %sk_FragColor %115
%116 = OpLoad %v4float %sk_FragColor
%117 = OpFDiv %v4float %116 %114
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
%122 = OpAccessChain %_ptr_Function_int %_0_result %int_0
OpStore %122 %int_2
OpStore %_0_result %128
OpStore %_0_result %129
OpStore %_0_result %132
OpStore %_0_result %135
%136 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %136 %float_6
%137 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %137 %float_1
%138 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %138 %float_n2
%139 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %139 %float_3
%140 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %140 %float_4
%141 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %141 %float_n5
%142 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %142 %float_6
%143 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %143 %float_7
%144 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %144 %float_n8
%145 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %145 %float_6
OpStore %145 %float_9
%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_n8
%154 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
OpStore %154 %float_9
%155 = OpAccessChain %_ptr_Output_float %sk_FragColor %int_0
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 %146 %float_n10
%148 = OpExtInst %float %1 Sqrt %float_1
%147 = OpConvertFToS %int %148
%149 = OpCompositeConstruct %v4int %147 %147 %147 %147
OpStore %_0_result %149
%151 = OpExtInst %float %1 Sqrt %float_2
%150 = OpConvertFToS %int %151
%152 = OpCompositeConstruct %v4int %150 %150 %150 %150
OpStore %_0_result %152
OpStore %_0_result %153
OpStore %_0_result %153
OpStore %_0_result %153
%155 = OpExtInst %float %1 Sqrt %float_6
%154 = OpConvertFToS %int %155
%156 = OpCompositeConstruct %v4int %154 %154 %154 %154
OpStore %_0_result %156
%158 = OpExtInst %float %1 Sqrt %float_7
%157 = OpConvertFToS %int %158
%159 = OpCompositeConstruct %v4int %157 %157 %157 %157
OpStore %_0_result %159
%161 = OpExtInst %float %1 Sqrt %float_8
%160 = OpConvertFToS %int %161
%162 = OpCompositeConstruct %v4int %160 %160 %160 %160
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
%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
%164 = OpExtInst %float %1 Sqrt %float_9
%163 = OpConvertFToS %int %164
%165 = OpCompositeConstruct %v4int %163 %163 %163 %163
OpStore %_0_result %165
OpStore %_0_result %153
OpStore %_0_result %153
%167 = OpExtInst %float %1 Sqrt %float_12
%166 = OpConvertFToS %int %167
%168 = OpCompositeConstruct %v4int %166 %166 %166 %166
OpStore %_0_result %168
%170 = OpExtInst %float %1 Sqrt %float_13
%169 = OpConvertFToS %int %170
%171 = OpCompositeConstruct %v4int %169 %169 %169 %169
OpStore %_0_result %171
OpStore %_0_result %153
OpStore %_0_result %153
%173 = OpExtInst %float %1 Sqrt %float_16
%172 = OpConvertFToS %int %173
%174 = OpCompositeConstruct %v4int %172 %172 %172 %172
OpStore %_0_result %174
%176 = OpExtInst %float %1 Sqrt %float_17
%175 = OpConvertFToS %int %176
%177 = OpCompositeConstruct %v4int %175 %175 %175 %175
OpStore %_0_result %177
OpStore %_0_result %178
%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_13
%182 = OpConvertFToS %int %183
%184 = OpCompositeConstruct %v4int %182 %182 %182 %182
OpStore %_0_result %184
OpStore %_0_result %185
OpStore %_0_result %153
%179 = OpExtInst %float %1 Sqrt %float_19
%178 = OpConvertFToS %int %179
%180 = OpCompositeConstruct %v4int %178 %178 %178 %178
OpStore %_0_result %180
%182 = OpExtInst %float %1 Sqrt %float_19_5
%181 = OpConvertFToS %int %182
%183 = OpCompositeConstruct %v4int %181 %181 %181 %181
OpStore %_0_result %183
%185 = OpExtInst %float %1 Sqrt %float_20
%184 = OpConvertFToS %int %185
%186 = OpCompositeConstruct %v4int %184 %184 %184 %184
OpStore %_0_result %186
%188 = OpExtInst %float %1 Sqrt %float_16
%188 = OpExtInst %float %1 Sqrt %float_21
%187 = OpConvertFToS %int %188
%189 = OpCompositeConstruct %v4int %187 %187 %187 %187
OpStore %_0_result %189
%191 = OpExtInst %float %1 Sqrt %float_17
%191 = OpExtInst %float %1 Sqrt %float_22
%190 = OpConvertFToS %int %191
%192 = OpCompositeConstruct %v4int %190 %190 %190 %190
OpStore %_0_result %192
OpStore %_0_result %193
%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
%194 = OpExtInst %float %1 Sqrt %float_23
%193 = OpConvertFToS %int %194
%195 = OpCompositeConstruct %v4int %193 %193 %193 %193
OpStore %_0_result %195
%197 = OpExtInst %float %1 Sqrt %float_24
%196 = OpConvertFToS %int %197
%198 = OpCompositeConstruct %v4int %196 %196 %196 %196
OpStore %_0_result %198
%199 = OpLoad %v4int %_0_result
%202 = OpIAdd %v4int %199 %201
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
%203 = OpLoad %v4int %_0_result
%204 = OpISub %v4int %203 %201
OpStore %_0_result %204
%205 = OpLoad %v4int %_0_result
%207 = OpIMul %v4int %205 %206
OpStore %_0_result %207
%208 = OpLoad %v4int %_0_result
%209 = OpSDiv %v4int %208 %206
OpStore %_0_result %209
%210 = OpLoad %v4int %_0_result
%211 = OpCompositeExtract %int %210 0
%212 = OpConvertSToF %float %211
%213 = OpCompositeExtract %int %210 1
%214 = OpConvertSToF %float %213
%215 = OpCompositeExtract %int %210 2
%216 = OpConvertSToF %float %215
%217 = OpCompositeExtract %int %210 3
%218 = OpConvertSToF %float %217
%219 = OpCompositeConstruct %v4float %212 %214 %216 %218
OpStore %sk_FragColor %219
OpReturn
OpFunctionEnd

View File

@ -31,7 +31,7 @@ OpDecorate %26 RelaxedPrecision
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_1 = OpConstant %float 1
%13 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%14 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
%int = OpTypeInt 32 1
%int_0 = OpConstant %int 0
%_ptr_Output_v4float = OpTypePointer Output %v4float
@ -39,7 +39,7 @@ OpDecorate %26 RelaxedPrecision
%main = OpFunction %void None %11
%12 = OpLabel
%17 = OpAccessChain %_ptr_Output_v4float %3 %int_0
OpStore %17 %13
OpStore %17 %14
%19 = OpLoad %float %zoom
%20 = OpFOrdEqual %bool %19 %float_1
OpSelectionMerge %23 None

View File

@ -20,18 +20,18 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
%void = OpTypeVoid
%11 = OpTypeFunction %void
%float_0 = OpConstant %float 0
%v2float = OpTypeVector %float 2
%15 = OpConstantComposite %v2float %float_0 %float_0
%float_0 = OpConstant %float 0
%17 = OpConstantComposite %v2float %float_0 %float_0
%int = OpTypeInt 32 1
%v2int = OpTypeVector %int 2
%_ptr_Output_float = OpTypePointer Output %float
%int_0 = OpConstant %int 0
%main = OpFunction %void None %11
%12 = OpLabel
%18 = OpCompositeExtract %float %15 0
%18 = OpCompositeExtract %float %17 0
%19 = OpConvertFToS %int %18
%21 = OpCompositeExtract %float %15 1
%21 = OpCompositeExtract %float %17 1
%22 = OpConvertFToS %int %21
%23 = OpCompositeConstruct %v2int %19 %22
%14 = OpExtInst %v2int %1 SAbs %23