Eliminate unused local variables during SkSL optimization.
This can eliminate const variables which have been completely folded away, unnecessary synthetic variables created during codegen/inlining, or code that simply didn't need to exist at all. Change-Id: I37a65e455e6527a6a6c2f4dde918f48d84dc2638 Reviewed-on: https://skia-review.googlesource.com/c/skia/+/383496 Commit-Queue: John Stiles <johnstiles@google.com> Reviewed-by: Ethan Nicholas <ethannicholas@google.com>
This commit is contained in:
parent
f10eff363b
commit
2654187396
@ -595,6 +595,86 @@ bool Compiler::removeDeadGlobalVariables(Program& program, ProgramUsage* usage)
|
||||
return madeChanges;
|
||||
}
|
||||
|
||||
bool Compiler::removeDeadLocalVariables(Program& program, ProgramUsage* usage) {
|
||||
class DeadLocalVariableEliminator : public ProgramWriter {
|
||||
public:
|
||||
DeadLocalVariableEliminator(const Context& context, ProgramUsage* usage)
|
||||
: fContext(context)
|
||||
, fUsage(usage) {}
|
||||
|
||||
using ProgramWriter::visitProgramElement;
|
||||
|
||||
bool visitExpressionPtr(std::unique_ptr<Expression>& expr) override {
|
||||
// We don't need to look inside expressions at all.
|
||||
return false;
|
||||
}
|
||||
|
||||
bool visitStatementPtr(std::unique_ptr<Statement>& stmt) override {
|
||||
if (stmt->is<VarDeclaration>()) {
|
||||
VarDeclaration& varDecl = stmt->as<VarDeclaration>();
|
||||
const Variable* var = &varDecl.var();
|
||||
ProgramUsage::VariableCounts* counts = fUsage->fVariableCounts.find(var);
|
||||
SkASSERT(counts);
|
||||
SkASSERT(counts->fDeclared);
|
||||
if (CanEliminate(var, *counts)) {
|
||||
if (var->initialValue()) {
|
||||
// The variable has an initial-value expression, which might have side
|
||||
// effects. ExpressionStatement::Make will preserve side effects, but
|
||||
// replaces pure expressions with Nop.
|
||||
fUsage->remove(stmt.get());
|
||||
stmt = ExpressionStatement::Make(fContext, std::move(varDecl.value()));
|
||||
fUsage->add(stmt.get());
|
||||
} else {
|
||||
// The variable has no initial-value and can be cleanly eliminated.
|
||||
fUsage->remove(stmt.get());
|
||||
stmt = std::make_unique<Nop>();
|
||||
}
|
||||
fMadeChanges = true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
return INHERITED::visitStatementPtr(stmt);
|
||||
}
|
||||
|
||||
static bool CanEliminate(const Variable* var, const ProgramUsage::VariableCounts& counts) {
|
||||
if (!counts.fDeclared || counts.fRead || var->storage() != VariableStorage::kLocal) {
|
||||
return false;
|
||||
}
|
||||
if (var->initialValue()) {
|
||||
SkASSERT(counts.fWrite >= 1);
|
||||
return counts.fWrite == 1;
|
||||
} else {
|
||||
return counts.fWrite == 0;
|
||||
}
|
||||
}
|
||||
|
||||
bool fMadeChanges = false;
|
||||
const Context& fContext;
|
||||
ProgramUsage* fUsage;
|
||||
|
||||
using INHERITED = ProgramWriter;
|
||||
};
|
||||
|
||||
DeadLocalVariableEliminator visitor{*fContext, usage};
|
||||
|
||||
if (program.fConfig->fSettings.fRemoveDeadVariables) {
|
||||
for (auto& [var, counts] : usage->fVariableCounts) {
|
||||
if (DeadLocalVariableEliminator::CanEliminate(var, counts)) {
|
||||
// This program contains at least one dead local variable.
|
||||
// Scan the program for any dead local variables and eliminate them all.
|
||||
for (std::unique_ptr<ProgramElement>& pe : program.ownedElements()) {
|
||||
if (pe->is<FunctionDefinition>()) {
|
||||
visitor.visitProgramElement(*pe);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return visitor.fMadeChanges;
|
||||
}
|
||||
|
||||
bool Compiler::optimize(Program& program) {
|
||||
// The optimizer only needs to run when it is enabled.
|
||||
if (!program.fConfig->fSettings.fOptimize) {
|
||||
@ -608,6 +688,7 @@ bool Compiler::optimize(Program& program) {
|
||||
bool madeChanges = fInliner.analyze(program.ownedElements(), program.fSymbols, usage);
|
||||
|
||||
madeChanges |= this->removeDeadFunctions(program, usage);
|
||||
madeChanges |= this->removeDeadLocalVariables(program, usage);
|
||||
|
||||
if (program.fConfig->fKind != ProgramKind::kFragmentProcessor) {
|
||||
madeChanges |= this->removeDeadGlobalVariables(program, usage);
|
||||
|
@ -190,8 +190,9 @@ private:
|
||||
/** Eliminates unused functions from a Program, according to the stats in ProgramUsage. */
|
||||
bool removeDeadFunctions(Program& program, ProgramUsage* usage);
|
||||
|
||||
/** Eliminates unreferenced globals from a Program, according to the stats in ProgramUsage. */
|
||||
/** Eliminates unreferenced variables from a Program, according to the stats in ProgramUsage. */
|
||||
bool removeDeadGlobalVariables(Program& program, ProgramUsage* usage);
|
||||
bool removeDeadLocalVariables(Program& program, ProgramUsage* usage);
|
||||
|
||||
Position position(int offset);
|
||||
|
||||
|
@ -195,6 +195,7 @@ struct Program {
|
||||
|
||||
// Can be used to iterate over *just* the elements owned by the Program, not shared builtins.
|
||||
// The iterator's value type is 'std::unique_ptr<ProgramElement>', and mutation is allowed.
|
||||
std::vector<std::unique_ptr<ProgramElement>>& ownedElements() { return fElements; }
|
||||
const std::vector<std::unique_ptr<ProgramElement>>& ownedElements() const { return fElements; }
|
||||
|
||||
std::unique_ptr<String> fSource;
|
||||
|
@ -1,7 +1,6 @@
|
||||
|
||||
out vec4 sk_FragColor;
|
||||
void main() {
|
||||
float _1_y = 123.0;
|
||||
float z = 0.0;
|
||||
float _0_y = z;
|
||||
++_0_y;
|
||||
|
@ -34,7 +34,6 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front
|
||||
(void)_out;
|
||||
float2 a = float2(1.0);
|
||||
float3 b = float3(2.0);
|
||||
float4x4 c = float4x4(3.0);
|
||||
float3x3 d = float3x3(4.0);
|
||||
_out.sk_FragColor = _skOutParamHelper0_fn(_out, _globals, a.x, b, _globals.glob, d);
|
||||
return _out;
|
||||
|
@ -26,7 +26,6 @@ OpName %ah2x4 "ah2x4"
|
||||
OpName %af4 "af4"
|
||||
OpName %s "s"
|
||||
OpName %l "l"
|
||||
OpName %r "r"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
OpDecorate %sk_FragColor Location 0
|
||||
OpDecorate %sk_FragColor Index 0
|
||||
@ -58,12 +57,12 @@ OpDecorate %77 RelaxedPrecision
|
||||
OpDecorate %_arr_v4float_int_1 ArrayStride 16
|
||||
OpDecorate %98 RelaxedPrecision
|
||||
OpDecorate %102 RelaxedPrecision
|
||||
OpDecorate %123 RelaxedPrecision
|
||||
OpDecorate %122 RelaxedPrecision
|
||||
OpDecorate %130 RelaxedPrecision
|
||||
OpDecorate %131 RelaxedPrecision
|
||||
OpDecorate %132 RelaxedPrecision
|
||||
OpDecorate %133 RelaxedPrecision
|
||||
OpDecorate %136 RelaxedPrecision
|
||||
OpDecorate %140 RelaxedPrecision
|
||||
OpDecorate %135 RelaxedPrecision
|
||||
OpDecorate %139 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -126,7 +125,7 @@ OpDecorate %140 RelaxedPrecision
|
||||
%99 = OpConstantComposite %v2float %float_5 %float_5
|
||||
%103 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||||
%_ptr_Private_float = OpTypePointer Private %float
|
||||
%117 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
|
||||
%116 = OpConstantComposite %v4float %float_2 %float_2 %float_2 %float_2
|
||||
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%_entrypoint = OpFunction %void None %24
|
||||
@ -147,7 +146,6 @@ OpFunctionEnd
|
||||
%af4 = OpVariable %_ptr_Function__arr_v4float_int_1 Function
|
||||
%s = OpVariable %_ptr_Function_S Function
|
||||
%l = OpVariable %_ptr_Function_float Function
|
||||
%r = OpVariable %_ptr_Function_float Function
|
||||
OpStore %i %int_0
|
||||
OpStore %i4 %39
|
||||
%54 = OpCompositeConstruct %v3float %float_1 %float_2 %float_3
|
||||
@ -193,44 +191,44 @@ OpStore %globalVar %103
|
||||
%104 = OpAccessChain %_ptr_Private_float %globalStruct %int_0
|
||||
OpStore %104 %float_0
|
||||
OpStore %l %float_0
|
||||
%108 = OpAccessChain %_ptr_Function_int %ai %int_0
|
||||
%109 = OpLoad %int %108
|
||||
%110 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0
|
||||
%111 = OpLoad %v4int %110
|
||||
%112 = OpCompositeExtract %int %111 0
|
||||
%113 = OpIAdd %int %109 %112
|
||||
OpStore %108 %113
|
||||
%114 = OpAccessChain %_ptr_Function_float %s %int_0
|
||||
OpStore %114 %float_1
|
||||
%115 = OpAccessChain %_ptr_Function_float %s %int_1 %int_0
|
||||
OpStore %115 %float_2
|
||||
%116 = OpAccessChain %_ptr_Function_v4float %s %int_2
|
||||
OpStore %116 %87
|
||||
%118 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0
|
||||
OpStore %118 %117
|
||||
%119 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
|
||||
%120 = OpLoad %v4float %119
|
||||
%121 = OpAccessChain %_ptr_Function_v3float %ah2x4 %int_0 %int_0
|
||||
%123 = OpLoad %v3float %121
|
||||
%124 = OpCompositeExtract %float %123 0
|
||||
%125 = OpVectorTimesScalar %v4float %120 %124
|
||||
OpStore %119 %125
|
||||
%126 = OpAccessChain %_ptr_Function_int %i4 %int_1
|
||||
%127 = OpLoad %int %126
|
||||
%128 = OpLoad %int %i
|
||||
%129 = OpIMul %int %127 %128
|
||||
OpStore %126 %129
|
||||
%130 = OpAccessChain %_ptr_Function_float %x %int_1
|
||||
%131 = OpLoad %float %130
|
||||
%132 = OpLoad %float %l
|
||||
%133 = OpFMul %float %131 %132
|
||||
OpStore %130 %133
|
||||
%134 = OpAccessChain %_ptr_Function_float %s %int_0
|
||||
%135 = OpLoad %float %134
|
||||
%136 = OpLoad %float %l
|
||||
%137 = OpFMul %float %135 %136
|
||||
OpStore %134 %137
|
||||
%138 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
|
||||
%140 = OpLoad %v4float %138
|
||||
OpReturnValue %140
|
||||
%107 = OpAccessChain %_ptr_Function_int %ai %int_0
|
||||
%108 = OpLoad %int %107
|
||||
%109 = OpAccessChain %_ptr_Function_v4int %ai4 %int_0
|
||||
%110 = OpLoad %v4int %109
|
||||
%111 = OpCompositeExtract %int %110 0
|
||||
%112 = OpIAdd %int %108 %111
|
||||
OpStore %107 %112
|
||||
%113 = OpAccessChain %_ptr_Function_float %s %int_0
|
||||
OpStore %113 %float_1
|
||||
%114 = OpAccessChain %_ptr_Function_float %s %int_1 %int_0
|
||||
OpStore %114 %float_2
|
||||
%115 = OpAccessChain %_ptr_Function_v4float %s %int_2
|
||||
OpStore %115 %87
|
||||
%117 = OpAccessChain %_ptr_Function_v4float %s %int_3 %int_0
|
||||
OpStore %117 %116
|
||||
%118 = OpAccessChain %_ptr_Function_v4float %af4 %int_0
|
||||
%119 = OpLoad %v4float %118
|
||||
%120 = OpAccessChain %_ptr_Function_v3float %ah2x4 %int_0 %int_0
|
||||
%122 = OpLoad %v3float %120
|
||||
%123 = OpCompositeExtract %float %122 0
|
||||
%124 = OpVectorTimesScalar %v4float %119 %123
|
||||
OpStore %118 %124
|
||||
%125 = OpAccessChain %_ptr_Function_int %i4 %int_1
|
||||
%126 = OpLoad %int %125
|
||||
%127 = OpLoad %int %i
|
||||
%128 = OpIMul %int %126 %127
|
||||
OpStore %125 %128
|
||||
%129 = OpAccessChain %_ptr_Function_float %x %int_1
|
||||
%130 = OpLoad %float %129
|
||||
%131 = OpLoad %float %l
|
||||
%132 = OpFMul %float %130 %131
|
||||
OpStore %129 %132
|
||||
%133 = OpAccessChain %_ptr_Function_float %s %int_0
|
||||
%134 = OpLoad %float %133
|
||||
%135 = OpLoad %float %l
|
||||
%136 = OpFMul %float %134 %135
|
||||
OpStore %133 %136
|
||||
%137 = OpAccessChain %_ptr_Uniform_v4float %19 %int_0
|
||||
%139 = OpLoad %v4float %137
|
||||
OpReturnValue %139
|
||||
OpFunctionEnd
|
||||
|
@ -36,7 +36,6 @@ vec4 main() {
|
||||
globalVar = vec4(0.0);
|
||||
globalStruct.f = 0.0;
|
||||
float l;
|
||||
float r;
|
||||
l = 0.0;
|
||||
ai[0] += ai4[0].x;
|
||||
s.f = 1.0;
|
||||
|
@ -50,7 +50,6 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _unifo
|
||||
_globals.globalVar = float4(0.0);
|
||||
_globals.globalStruct.f = 0.0;
|
||||
float l;
|
||||
float r;
|
||||
l = 0.0;
|
||||
ai[0] += ai4[0].x;
|
||||
s.f = 1.0;
|
||||
|
@ -10,7 +10,6 @@ OpMemberName %_UniformBuffer 0 "colorGreen"
|
||||
OpMemberName %_UniformBuffer 1 "colorRed"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %main "main"
|
||||
OpName %a "a"
|
||||
OpName %b "b"
|
||||
OpName %c "c"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
@ -25,8 +24,8 @@ OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
|
||||
OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %10 Binding 0
|
||||
OpDecorate %10 DescriptorSet 0
|
||||
OpDecorate %39 RelaxedPrecision
|
||||
OpDecorate %42 RelaxedPrecision
|
||||
OpDecorate %45 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -41,10 +40,8 @@ OpDecorate %45 RelaxedPrecision
|
||||
%15 = OpTypeFunction %void
|
||||
%18 = OpTypeFunction %v4float
|
||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||
%float_0 = OpConstant %float 0
|
||||
%23 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||||
%float_1 = OpConstant %float 1
|
||||
%26 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
||||
%23 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
||||
%v4bool = OpTypeVector %bool 4
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
@ -58,28 +55,26 @@ OpReturn
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %18
|
||||
%19 = OpLabel
|
||||
%a = OpVariable %_ptr_Function_v4float Function
|
||||
%b = OpVariable %_ptr_Function_v4float Function
|
||||
%c = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %a %23
|
||||
OpStore %b %26
|
||||
%29 = OpLoad %v4float %b
|
||||
%28 = OpExtInst %v4float %1 FAbs %29
|
||||
OpStore %c %28
|
||||
%30 = OpLoad %v4float %b
|
||||
%31 = OpLoad %v4float %c
|
||||
%32 = OpFOrdNotEqual %v4bool %30 %31
|
||||
%34 = OpAny %bool %32
|
||||
OpSelectionMerge %37 None
|
||||
OpBranchConditional %34 %35 %36
|
||||
%35 = OpLabel
|
||||
%38 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%42 = OpLoad %v4float %38
|
||||
OpStore %b %23
|
||||
%26 = OpLoad %v4float %b
|
||||
%25 = OpExtInst %v4float %1 FAbs %26
|
||||
OpStore %c %25
|
||||
%27 = OpLoad %v4float %b
|
||||
%28 = OpLoad %v4float %c
|
||||
%29 = OpFOrdNotEqual %v4bool %27 %28
|
||||
%31 = OpAny %bool %29
|
||||
OpSelectionMerge %34 None
|
||||
OpBranchConditional %31 %32 %33
|
||||
%32 = OpLabel
|
||||
%35 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%39 = OpLoad %v4float %35
|
||||
OpReturnValue %39
|
||||
%33 = OpLabel
|
||||
%40 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%42 = OpLoad %v4float %40
|
||||
OpReturnValue %42
|
||||
%36 = OpLabel
|
||||
%43 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%45 = OpLoad %v4float %43
|
||||
OpReturnValue %45
|
||||
%37 = OpLabel
|
||||
%34 = OpLabel
|
||||
OpUnreachable
|
||||
OpFunctionEnd
|
||||
|
@ -3,7 +3,6 @@ out vec4 sk_FragColor;
|
||||
uniform vec4 colorGreen;
|
||||
uniform vec4 colorRed;
|
||||
vec4 main() {
|
||||
const vec4 a = vec4(0.0);
|
||||
const vec4 b = vec4(1.0);
|
||||
vec4 c = abs(b);
|
||||
if (b != c) {
|
||||
|
@ -14,7 +14,6 @@ struct Outputs {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
const float4 a = float4(0.0);
|
||||
const float4 b = float4(1.0);
|
||||
float4 c = abs(b);
|
||||
if (any(b != c)) {
|
||||
|
@ -10,7 +10,6 @@ OpMemberName %_UniformBuffer 0 "colorGreen"
|
||||
OpMemberName %_UniformBuffer 1 "colorRed"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %main "main"
|
||||
OpName %x "x"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
OpDecorate %sk_FragColor Location 0
|
||||
OpDecorate %sk_FragColor Index 0
|
||||
@ -23,7 +22,7 @@ OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
|
||||
OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %10 Binding 0
|
||||
OpDecorate %10 DescriptorSet 0
|
||||
OpDecorate %27 RelaxedPrecision
|
||||
OpDecorate %24 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -37,8 +36,6 @@ OpDecorate %27 RelaxedPrecision
|
||||
%void = OpTypeVoid
|
||||
%15 = OpTypeFunction %void
|
||||
%18 = OpTypeFunction %v4float
|
||||
%_ptr_Function_bool = OpTypePointer Function %bool
|
||||
%true = OpConstantTrue %bool
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
@ -50,9 +47,7 @@ OpReturn
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %18
|
||||
%19 = OpLabel
|
||||
%x = OpVariable %_ptr_Function_bool Function
|
||||
OpStore %x %true
|
||||
%23 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%27 = OpLoad %v4float %23
|
||||
OpReturnValue %27
|
||||
%20 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%24 = OpLoad %v4float %20
|
||||
OpReturnValue %24
|
||||
OpFunctionEnd
|
||||
|
@ -3,6 +3,5 @@ out vec4 sk_FragColor;
|
||||
uniform vec4 colorGreen;
|
||||
uniform vec4 colorRed;
|
||||
vec4 main() {
|
||||
const bool x = true;
|
||||
return colorGreen;
|
||||
}
|
||||
|
@ -14,7 +14,6 @@ struct Outputs {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
const bool x = true;
|
||||
_out.sk_FragColor = _uniforms.colorGreen;
|
||||
return _out;
|
||||
}
|
||||
|
@ -12,8 +12,6 @@ OpName %_entrypoint "_entrypoint"
|
||||
OpName %unpremul "unpremul"
|
||||
OpName %live_fn "live_fn"
|
||||
OpName %main "main"
|
||||
OpName %TRUE "TRUE"
|
||||
OpName %FALSE "FALSE"
|
||||
OpName %a "a"
|
||||
OpName %b "b"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
@ -34,11 +32,11 @@ OpDecorate %37 RelaxedPrecision
|
||||
OpDecorate %44 RelaxedPrecision
|
||||
OpDecorate %45 RelaxedPrecision
|
||||
OpDecorate %46 RelaxedPrecision
|
||||
OpDecorate %66 RelaxedPrecision
|
||||
OpDecorate %74 RelaxedPrecision
|
||||
OpDecorate %62 RelaxedPrecision
|
||||
OpDecorate %70 RelaxedPrecision
|
||||
OpDecorate %82 RelaxedPrecision
|
||||
OpDecorate %85 RelaxedPrecision
|
||||
OpDecorate %86 RelaxedPrecision
|
||||
OpDecorate %89 RelaxedPrecision
|
||||
OpDecorate %90 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -58,16 +56,14 @@ OpDecorate %90 RelaxedPrecision
|
||||
%float_1 = OpConstant %float 1
|
||||
%40 = OpTypeFunction %v4float %_ptr_Function_v4float %_ptr_Function_v4float
|
||||
%47 = OpTypeFunction %v4float
|
||||
%_ptr_Function_bool = OpTypePointer Function %bool
|
||||
%true = OpConstantTrue %bool
|
||||
%false = OpConstantFalse %bool
|
||||
%float_3 = OpConstant %float 3
|
||||
%57 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3
|
||||
%52 = OpConstantComposite %v4float %float_3 %float_3 %float_3 %float_3
|
||||
%float_n5 = OpConstant %float -5
|
||||
%60 = OpConstantComposite %v4float %float_n5 %float_n5 %float_n5 %float_n5
|
||||
%63 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
||||
%55 = OpConstantComposite %v4float %float_n5 %float_n5 %float_n5 %float_n5
|
||||
%58 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1
|
||||
%false = OpConstantFalse %bool
|
||||
%float_0 = OpConstant %float 0
|
||||
%68 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||||
%64 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||||
%v4bool = OpTypeVector %bool 4
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
@ -108,48 +104,44 @@ OpReturnValue %46
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %47
|
||||
%48 = OpLabel
|
||||
%TRUE = OpVariable %_ptr_Function_bool Function
|
||||
%FALSE = OpVariable %_ptr_Function_bool Function
|
||||
%a = OpVariable %_ptr_Function_v4float Function
|
||||
%b = OpVariable %_ptr_Function_v4float Function
|
||||
%58 = OpVariable %_ptr_Function_v4float Function
|
||||
%61 = OpVariable %_ptr_Function_v4float Function
|
||||
%64 = OpVariable %_ptr_Function_v4float Function
|
||||
%78 = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %TRUE %true
|
||||
OpStore %FALSE %false
|
||||
OpStore %58 %57
|
||||
OpStore %61 %60
|
||||
%62 = OpFunctionCall %v4float %live_fn %58 %61
|
||||
OpStore %a %62
|
||||
OpStore %64 %63
|
||||
%65 = OpFunctionCall %v4float %unpremul %64
|
||||
OpStore %b %65
|
||||
%66 = OpLoad %v4float %a
|
||||
%69 = OpFOrdNotEqual %v4bool %66 %68
|
||||
%71 = OpAny %bool %69
|
||||
OpSelectionMerge %73 None
|
||||
OpBranchConditional %71 %72 %73
|
||||
%72 = OpLabel
|
||||
%74 = OpLoad %v4float %b
|
||||
%75 = OpFOrdNotEqual %v4bool %74 %68
|
||||
%76 = OpAny %bool %75
|
||||
OpBranch %73
|
||||
%73 = OpLabel
|
||||
%77 = OpPhi %bool %false %48 %76 %72
|
||||
OpSelectionMerge %81 None
|
||||
OpBranchConditional %77 %79 %80
|
||||
%79 = OpLabel
|
||||
%82 = OpAccessChain %_ptr_Uniform_v4float %12 %int_0
|
||||
%86 = OpLoad %v4float %82
|
||||
OpStore %78 %86
|
||||
OpBranch %81
|
||||
%80 = OpLabel
|
||||
%87 = OpAccessChain %_ptr_Uniform_v4float %12 %int_1
|
||||
%89 = OpLoad %v4float %87
|
||||
OpStore %78 %89
|
||||
OpBranch %81
|
||||
%81 = OpLabel
|
||||
%90 = OpLoad %v4float %78
|
||||
OpReturnValue %90
|
||||
%53 = OpVariable %_ptr_Function_v4float Function
|
||||
%56 = OpVariable %_ptr_Function_v4float Function
|
||||
%59 = OpVariable %_ptr_Function_v4float Function
|
||||
%74 = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %53 %52
|
||||
OpStore %56 %55
|
||||
%57 = OpFunctionCall %v4float %live_fn %53 %56
|
||||
OpStore %a %57
|
||||
OpStore %59 %58
|
||||
%60 = OpFunctionCall %v4float %unpremul %59
|
||||
OpStore %b %60
|
||||
%62 = OpLoad %v4float %a
|
||||
%65 = OpFOrdNotEqual %v4bool %62 %64
|
||||
%67 = OpAny %bool %65
|
||||
OpSelectionMerge %69 None
|
||||
OpBranchConditional %67 %68 %69
|
||||
%68 = OpLabel
|
||||
%70 = OpLoad %v4float %b
|
||||
%71 = OpFOrdNotEqual %v4bool %70 %64
|
||||
%72 = OpAny %bool %71
|
||||
OpBranch %69
|
||||
%69 = OpLabel
|
||||
%73 = OpPhi %bool %false %48 %72 %68
|
||||
OpSelectionMerge %77 None
|
||||
OpBranchConditional %73 %75 %76
|
||||
%75 = OpLabel
|
||||
%78 = OpAccessChain %_ptr_Uniform_v4float %12 %int_0
|
||||
%82 = OpLoad %v4float %78
|
||||
OpStore %74 %82
|
||||
OpBranch %77
|
||||
%76 = OpLabel
|
||||
%83 = OpAccessChain %_ptr_Uniform_v4float %12 %int_1
|
||||
%85 = OpLoad %v4float %83
|
||||
OpStore %74 %85
|
||||
OpBranch %77
|
||||
%77 = OpLabel
|
||||
%86 = OpLoad %v4float %74
|
||||
OpReturnValue %86
|
||||
OpFunctionEnd
|
||||
|
@ -9,8 +9,6 @@ vec4 live_fn(vec4 a, vec4 b) {
|
||||
return a + b;
|
||||
}
|
||||
vec4 main() {
|
||||
const bool TRUE = true;
|
||||
const bool FALSE = false;
|
||||
vec4 a;
|
||||
vec4 b;
|
||||
{
|
||||
|
@ -20,8 +20,6 @@ float4 live_fn(float4 a, float4 b) {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
const bool TRUE = true;
|
||||
const bool FALSE = false;
|
||||
float4 a;
|
||||
float4 b;
|
||||
{
|
||||
|
File diff suppressed because it is too large
Load Diff
@ -12,9 +12,7 @@ layout (binding = 0) uniform uniformBuffer {
|
||||
};
|
||||
layout (location = 0) in vec2 vLocalCoord_Stage0;
|
||||
vec4 MatrixEffect_Stage1_c0_c0(vec4 _input, vec2 _coords) {
|
||||
vec4 _output;
|
||||
vec2 _0_coords = (umatrix_Stage1_c0_c0 * vec3(_coords, 1.0)).xy;
|
||||
vec4 _1_output;
|
||||
vec2 _2_inCoord = _0_coords;
|
||||
_2_inCoord *= unorm_Stage1_c0_c0_c0.xy;
|
||||
vec2 _3_subsetCoord;
|
||||
|
@ -23,9 +23,7 @@ struct Globals {
|
||||
sampler uTextureSampler_0_Stage1Smplr;
|
||||
};
|
||||
float4 MatrixEffect_Stage1_c0_c0(thread Globals& _globals, float4 _input, float2 _coords) {
|
||||
float4 _output;
|
||||
float2 _0_coords = (_globals._anonInterface0->umatrix_Stage1_c0_c0 * float3(_coords, 1.0)).xy;
|
||||
float4 _1_output;
|
||||
float2 _2_inCoord = _0_coords;
|
||||
_2_inCoord *= _globals._anonInterface0->unorm_Stage1_c0_c0_c0.xy;
|
||||
float2 _3_subsetCoord;
|
||||
|
@ -10,9 +10,7 @@ OpMemberName %_UniformBuffer 0 "colorGreen"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %main "main"
|
||||
OpName %_0_x "_0_x"
|
||||
OpName %x "x"
|
||||
OpName %_1_x "_1_x"
|
||||
OpName %y "y"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
OpDecorate %sk_FragColor Location 0
|
||||
OpDecorate %sk_FragColor Index 0
|
||||
@ -23,7 +21,7 @@ OpMemberDecorate %_UniformBuffer 0 RelaxedPrecision
|
||||
OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %10 Binding 0
|
||||
OpDecorate %10 DescriptorSet 0
|
||||
OpDecorate %58 RelaxedPrecision
|
||||
OpDecorate %54 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -42,10 +40,10 @@ OpDecorate %58 RelaxedPrecision
|
||||
%float_2 = OpConstant %float 2
|
||||
%v2float = OpTypeVector %float 2
|
||||
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
||||
%37 = OpConstantComposite %v2float %float_1 %float_2
|
||||
%35 = OpConstantComposite %v2float %float_1 %float_2
|
||||
%float_3 = OpConstant %float 3
|
||||
%float_4 = OpConstant %float 4
|
||||
%45 = OpConstantComposite %v2float %float_3 %float_4
|
||||
%43 = OpConstantComposite %v2float %float_3 %float_4
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
@ -58,9 +56,7 @@ OpFunctionEnd
|
||||
%main = OpFunction %v4float None %18
|
||||
%19 = OpLabel
|
||||
%_0_x = OpVariable %_ptr_Function_float Function
|
||||
%x = OpVariable %_ptr_Function_float Function
|
||||
%_1_x = OpVariable %_ptr_Function_v2float Function
|
||||
%y = OpVariable %_ptr_Function_v2float Function
|
||||
OpStore %_0_x %float_1
|
||||
%24 = OpLoad %float %_0_x
|
||||
%23 = OpExtInst %float %1 Length %24
|
||||
@ -74,27 +70,23 @@ OpStore %_0_x %28
|
||||
%31 = OpLoad %float %_0_x
|
||||
%30 = OpExtInst %float %1 Normalize %31
|
||||
OpStore %_0_x %30
|
||||
%33 = OpLoad %float %_0_x
|
||||
OpStore %x %33
|
||||
OpStore %_1_x %37
|
||||
%39 = OpLoad %v2float %_1_x
|
||||
%38 = OpExtInst %float %1 Length %39
|
||||
%40 = OpCompositeConstruct %v2float %38 %38
|
||||
OpStore %_1_x %40
|
||||
%42 = OpLoad %v2float %_1_x
|
||||
%41 = OpExtInst %float %1 Distance %42 %45
|
||||
%46 = OpCompositeConstruct %v2float %41 %41
|
||||
OpStore %_1_x %46
|
||||
%48 = OpLoad %v2float %_1_x
|
||||
%47 = OpDot %float %48 %45
|
||||
%49 = OpCompositeConstruct %v2float %47 %47
|
||||
OpStore %_1_x %49
|
||||
%51 = OpLoad %v2float %_1_x
|
||||
%50 = OpExtInst %v2float %1 Normalize %51
|
||||
OpStore %_1_x %50
|
||||
%53 = OpLoad %v2float %_1_x
|
||||
OpStore %y %53
|
||||
%54 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%58 = OpLoad %v4float %54
|
||||
OpReturnValue %58
|
||||
OpStore %_1_x %35
|
||||
%37 = OpLoad %v2float %_1_x
|
||||
%36 = OpExtInst %float %1 Length %37
|
||||
%38 = OpCompositeConstruct %v2float %36 %36
|
||||
OpStore %_1_x %38
|
||||
%40 = OpLoad %v2float %_1_x
|
||||
%39 = OpExtInst %float %1 Distance %40 %43
|
||||
%44 = OpCompositeConstruct %v2float %39 %39
|
||||
OpStore %_1_x %44
|
||||
%46 = OpLoad %v2float %_1_x
|
||||
%45 = OpDot %float %46 %43
|
||||
%47 = OpCompositeConstruct %v2float %45 %45
|
||||
OpStore %_1_x %47
|
||||
%49 = OpLoad %v2float %_1_x
|
||||
%48 = OpExtInst %v2float %1 Normalize %49
|
||||
OpStore %_1_x %48
|
||||
%50 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%54 = OpLoad %v4float %50
|
||||
OpReturnValue %54
|
||||
OpFunctionEnd
|
||||
|
@ -7,12 +7,10 @@ vec4 main() {
|
||||
_0_x = distance(_0_x, 2.0);
|
||||
_0_x = dot(_0_x, 2.0);
|
||||
_0_x = normalize(_0_x);
|
||||
float x = _0_x;
|
||||
vec2 _1_x = vec2(1.0, 2.0);
|
||||
_1_x = vec2(length(_1_x));
|
||||
_1_x = vec2(distance(_1_x, vec2(3.0, 4.0)));
|
||||
_1_x = vec2(dot(_1_x, vec2(3.0, 4.0)));
|
||||
_1_x = normalize(_1_x);
|
||||
vec2 y = _1_x;
|
||||
return colorGreen;
|
||||
}
|
||||
|
@ -18,13 +18,11 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _unifo
|
||||
_0_x = abs(_0_x - 2.0);
|
||||
_0_x = (_0_x * 2.0);
|
||||
_0_x = sign(_0_x);
|
||||
float x = _0_x;
|
||||
float2 _1_x = float2(1.0, 2.0);
|
||||
_1_x = float2(length(_1_x));
|
||||
_1_x = float2(distance(_1_x, float2(3.0, 4.0)));
|
||||
_1_x = float2(dot(_1_x, float2(3.0, 4.0)));
|
||||
_1_x = normalize(_1_x);
|
||||
float2 y = _1_x;
|
||||
_out.sk_FragColor = _uniforms.colorGreen;
|
||||
return _out;
|
||||
}
|
||||
|
@ -10,29 +10,19 @@ OpMemberName %_UniformBuffer 0 "colorGreen"
|
||||
OpMemberName %_UniformBuffer 1 "colorRed"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %test_half "test_half"
|
||||
OpName %v1 "v1"
|
||||
OpName %v2 "v2"
|
||||
OpName %m1 "m1"
|
||||
OpName %m2 "m2"
|
||||
OpName %m3 "m3"
|
||||
OpName %m4 "m4"
|
||||
OpName %m5 "m5"
|
||||
OpName %m6 "m6"
|
||||
OpName %m7 "m7"
|
||||
OpName %m9 "m9"
|
||||
OpName %m10 "m10"
|
||||
OpName %m11 "m11"
|
||||
OpName %main "main"
|
||||
OpName %_0_v1 "_0_v1"
|
||||
OpName %_1_v2 "_1_v2"
|
||||
OpName %_2_m1 "_2_m1"
|
||||
OpName %_3_m2 "_3_m2"
|
||||
OpName %_4_m3 "_4_m3"
|
||||
OpName %_5_m4 "_5_m4"
|
||||
OpName %_6_m5 "_6_m5"
|
||||
OpName %_7_m6 "_7_m6"
|
||||
OpName %_8_m7 "_8_m7"
|
||||
OpName %_9_m9 "_9_m9"
|
||||
OpName %_10_m10 "_10_m10"
|
||||
OpName %_11_m11 "_11_m11"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
@ -47,62 +37,43 @@ OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
|
||||
OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %11 Binding 0
|
||||
OpDecorate %11 DescriptorSet 0
|
||||
OpDecorate %27 RelaxedPrecision
|
||||
OpDecorate %28 RelaxedPrecision
|
||||
OpDecorate %30 RelaxedPrecision
|
||||
OpDecorate %31 RelaxedPrecision
|
||||
OpDecorate %29 RelaxedPrecision
|
||||
OpDecorate %25 RelaxedPrecision
|
||||
OpDecorate %25 RelaxedPrecision
|
||||
OpDecorate %36 RelaxedPrecision
|
||||
OpDecorate %33 RelaxedPrecision
|
||||
OpDecorate %37 RelaxedPrecision
|
||||
OpDecorate %38 RelaxedPrecision
|
||||
OpDecorate %35 RelaxedPrecision
|
||||
OpDecorate %35 RelaxedPrecision
|
||||
OpDecorate %39 RelaxedPrecision
|
||||
OpDecorate %40 RelaxedPrecision
|
||||
OpDecorate %47 RelaxedPrecision
|
||||
OpDecorate %48 RelaxedPrecision
|
||||
OpDecorate %46 RelaxedPrecision
|
||||
OpDecorate %50 RelaxedPrecision
|
||||
OpDecorate %51 RelaxedPrecision
|
||||
OpDecorate %59 RelaxedPrecision
|
||||
OpDecorate %62 RelaxedPrecision
|
||||
OpDecorate %63 RelaxedPrecision
|
||||
OpDecorate %61 RelaxedPrecision
|
||||
OpDecorate %61 RelaxedPrecision
|
||||
OpDecorate %64 RelaxedPrecision
|
||||
OpDecorate %65 RelaxedPrecision
|
||||
OpDecorate %49 RelaxedPrecision
|
||||
OpDecorate %49 RelaxedPrecision
|
||||
OpDecorate %54 RelaxedPrecision
|
||||
OpDecorate %55 RelaxedPrecision
|
||||
OpDecorate %53 RelaxedPrecision
|
||||
OpDecorate %56 RelaxedPrecision
|
||||
OpDecorate %57 RelaxedPrecision
|
||||
OpDecorate %69 RelaxedPrecision
|
||||
OpDecorate %70 RelaxedPrecision
|
||||
OpDecorate %71 RelaxedPrecision
|
||||
OpDecorate %72 RelaxedPrecision
|
||||
OpDecorate %68 RelaxedPrecision
|
||||
OpDecorate %68 RelaxedPrecision
|
||||
OpDecorate %75 RelaxedPrecision
|
||||
OpDecorate %76 RelaxedPrecision
|
||||
OpDecorate %77 RelaxedPrecision
|
||||
OpDecorate %78 RelaxedPrecision
|
||||
OpDecorate %74 RelaxedPrecision
|
||||
OpDecorate %74 RelaxedPrecision
|
||||
OpDecorate %79 RelaxedPrecision
|
||||
OpDecorate %80 RelaxedPrecision
|
||||
OpDecorate %78 RelaxedPrecision
|
||||
OpDecorate %81 RelaxedPrecision
|
||||
OpDecorate %82 RelaxedPrecision
|
||||
OpDecorate %96 RelaxedPrecision
|
||||
OpDecorate %97 RelaxedPrecision
|
||||
OpDecorate %95 RelaxedPrecision
|
||||
OpDecorate %101 RelaxedPrecision
|
||||
OpDecorate %102 RelaxedPrecision
|
||||
OpDecorate %103 RelaxedPrecision
|
||||
OpDecorate %100 RelaxedPrecision
|
||||
OpDecorate %100 RelaxedPrecision
|
||||
OpDecorate %108 RelaxedPrecision
|
||||
OpDecorate %109 RelaxedPrecision
|
||||
OpDecorate %110 RelaxedPrecision
|
||||
OpDecorate %111 RelaxedPrecision
|
||||
OpDecorate %107 RelaxedPrecision
|
||||
OpDecorate %107 RelaxedPrecision
|
||||
OpDecorate %114 RelaxedPrecision
|
||||
OpDecorate %115 RelaxedPrecision
|
||||
OpDecorate %116 RelaxedPrecision
|
||||
OpDecorate %117 RelaxedPrecision
|
||||
OpDecorate %113 RelaxedPrecision
|
||||
OpDecorate %113 RelaxedPrecision
|
||||
OpDecorate %118 RelaxedPrecision
|
||||
OpDecorate %119 RelaxedPrecision
|
||||
OpDecorate %237 RelaxedPrecision
|
||||
OpDecorate %240 RelaxedPrecision
|
||||
OpDecorate %241 RelaxedPrecision
|
||||
OpDecorate %169 RelaxedPrecision
|
||||
OpDecorate %172 RelaxedPrecision
|
||||
OpDecorate %173 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -116,31 +87,21 @@ OpDecorate %241 RelaxedPrecision
|
||||
%void = OpTypeVoid
|
||||
%16 = OpTypeFunction %void
|
||||
%19 = OpTypeFunction %bool
|
||||
%v3float = OpTypeVector %float 3
|
||||
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
||||
%float_1 = OpConstant %float 1
|
||||
%float_0 = OpConstant %float 0
|
||||
%mat3v3float = OpTypeMatrix %v3float 3
|
||||
%float_2 = OpConstant %float 2
|
||||
%32 = OpConstantComposite %v3float %float_2 %float_2 %float_2
|
||||
%v2float = OpTypeVector %float 2
|
||||
%mat2v2float = OpTypeMatrix %v2float 2
|
||||
%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
|
||||
%float_1 = OpConstant %float 1
|
||||
%float_2 = OpConstant %float 2
|
||||
%float_3 = OpConstant %float 3
|
||||
%float_4 = OpConstant %float 4
|
||||
%50 = OpConstantComposite %v4float %float_0 %float_0 %float_0 %float_0
|
||||
%float_0 = OpConstant %float 0
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
||||
%float_5 = OpConstant %float 5
|
||||
%float_6 = OpConstant %float 6
|
||||
%float_7 = OpConstant %float 7
|
||||
%float_8 = OpConstant %float 8
|
||||
%_ptr_Function_mat3v3float = OpTypePointer Function %mat3v3float
|
||||
%mat4v4float = OpTypeMatrix %v4float 4
|
||||
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
|
||||
%true = OpConstantTrue %bool
|
||||
%134 = OpTypeFunction %v4float
|
||||
%95 = OpTypeFunction %v4float
|
||||
%false = OpConstantFalse %bool
|
||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
@ -153,239 +114,171 @@ OpReturn
|
||||
OpFunctionEnd
|
||||
%test_half = OpFunction %bool None %19
|
||||
%20 = OpLabel
|
||||
%v1 = OpVariable %_ptr_Function_v3float Function
|
||||
%v2 = OpVariable %_ptr_Function_v3float Function
|
||||
%m1 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%m2 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%m3 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%m4 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%m5 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%m6 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%m7 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%m9 = OpVariable %_ptr_Function_mat3v3float Function
|
||||
%m10 = OpVariable %_ptr_Function_mat4v4float Function
|
||||
%m11 = OpVariable %_ptr_Function_mat4v4float Function
|
||||
%27 = OpCompositeConstruct %v3float %float_1 %float_0 %float_0
|
||||
%28 = OpCompositeConstruct %v3float %float_0 %float_1 %float_0
|
||||
%29 = OpCompositeConstruct %v3float %float_0 %float_0 %float_1
|
||||
%25 = OpCompositeConstruct %mat3v3float %27 %28 %29
|
||||
%33 = OpMatrixTimesVector %v3float %25 %32
|
||||
OpStore %v1 %33
|
||||
%36 = OpCompositeConstruct %v3float %float_1 %float_0 %float_0
|
||||
%37 = OpCompositeConstruct %v3float %float_0 %float_1 %float_0
|
||||
%38 = OpCompositeConstruct %v3float %float_0 %float_0 %float_1
|
||||
%35 = OpCompositeConstruct %mat3v3float %36 %37 %38
|
||||
%39 = OpVectorTimesMatrix %v3float %32 %35
|
||||
OpStore %v2 %39
|
||||
%47 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%48 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%46 = OpCompositeConstruct %mat2v2float %47 %48
|
||||
OpStore %m1 %46
|
||||
%52 = OpCompositeExtract %float %50 0
|
||||
%53 = OpCompositeExtract %float %50 1
|
||||
%54 = OpCompositeExtract %float %50 2
|
||||
%55 = OpCompositeExtract %float %50 3
|
||||
%56 = OpCompositeConstruct %v2float %52 %53
|
||||
%57 = OpCompositeConstruct %v2float %54 %55
|
||||
%51 = OpCompositeConstruct %mat2v2float %56 %57
|
||||
OpStore %m2 %51
|
||||
%59 = OpLoad %mat2v2float %m1
|
||||
OpStore %m3 %59
|
||||
%62 = OpCompositeConstruct %v2float %float_1 %float_0
|
||||
%63 = OpCompositeConstruct %v2float %float_0 %float_1
|
||||
%61 = OpCompositeConstruct %mat2v2float %62 %63
|
||||
OpStore %m4 %61
|
||||
%64 = OpLoad %mat2v2float %m3
|
||||
%65 = OpLoad %mat2v2float %m4
|
||||
%66 = OpMatrixTimesMatrix %mat2v2float %64 %65
|
||||
OpStore %m3 %66
|
||||
%70 = OpAccessChain %_ptr_Function_v2float %m1 %int_0
|
||||
%72 = OpLoad %v2float %70
|
||||
%73 = OpCompositeExtract %float %72 0
|
||||
%75 = OpCompositeConstruct %v2float %73 %float_0
|
||||
%76 = OpCompositeConstruct %v2float %float_0 %73
|
||||
%74 = OpCompositeConstruct %mat2v2float %75 %76
|
||||
OpStore %m5 %74
|
||||
%79 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%80 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%78 = OpCompositeConstruct %mat2v2float %79 %80
|
||||
OpStore %m6 %78
|
||||
%81 = OpLoad %mat2v2float %m6
|
||||
%82 = OpLoad %mat2v2float %m5
|
||||
%83 = OpCompositeExtract %v2float %81 0
|
||||
%84 = OpCompositeExtract %v2float %82 0
|
||||
%85 = OpFAdd %v2float %83 %84
|
||||
%86 = OpCompositeExtract %v2float %81 1
|
||||
%87 = OpCompositeExtract %v2float %82 1
|
||||
%88 = OpFAdd %v2float %86 %87
|
||||
%89 = OpCompositeConstruct %mat2v2float %85 %88
|
||||
OpStore %m6 %89
|
||||
%96 = OpCompositeConstruct %v2float %float_5 %float_6
|
||||
%97 = OpCompositeConstruct %v2float %float_7 %float_8
|
||||
%95 = OpCompositeConstruct %mat2v2float %96 %97
|
||||
OpStore %m7 %95
|
||||
%101 = OpCompositeConstruct %v3float %float_1 %float_0 %float_0
|
||||
%102 = OpCompositeConstruct %v3float %float_0 %float_1 %float_0
|
||||
%103 = OpCompositeConstruct %v3float %float_0 %float_0 %float_1
|
||||
%100 = OpCompositeConstruct %mat3v3float %101 %102 %103
|
||||
OpStore %m9 %100
|
||||
%108 = OpCompositeConstruct %v4float %float_1 %float_0 %float_0 %float_0
|
||||
%109 = OpCompositeConstruct %v4float %float_0 %float_1 %float_0 %float_0
|
||||
%110 = OpCompositeConstruct %v4float %float_0 %float_0 %float_1 %float_0
|
||||
%111 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_1
|
||||
%107 = OpCompositeConstruct %mat4v4float %108 %109 %110 %111
|
||||
OpStore %m10 %107
|
||||
%114 = OpCompositeConstruct %v4float %float_2 %float_0 %float_0 %float_0
|
||||
%115 = OpCompositeConstruct %v4float %float_0 %float_2 %float_0 %float_0
|
||||
%116 = OpCompositeConstruct %v4float %float_0 %float_0 %float_2 %float_0
|
||||
%117 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_2
|
||||
%113 = OpCompositeConstruct %mat4v4float %114 %115 %116 %117
|
||||
OpStore %m11 %113
|
||||
%118 = OpLoad %mat4v4float %m11
|
||||
%119 = OpLoad %mat4v4float %m10
|
||||
%120 = OpCompositeExtract %v4float %118 0
|
||||
%121 = OpCompositeExtract %v4float %119 0
|
||||
%122 = OpFSub %v4float %120 %121
|
||||
%123 = OpCompositeExtract %v4float %118 1
|
||||
%124 = OpCompositeExtract %v4float %119 1
|
||||
%125 = OpFSub %v4float %123 %124
|
||||
%126 = OpCompositeExtract %v4float %118 2
|
||||
%127 = OpCompositeExtract %v4float %119 2
|
||||
%128 = OpFSub %v4float %126 %127
|
||||
%129 = OpCompositeExtract %v4float %118 3
|
||||
%130 = OpCompositeExtract %v4float %119 3
|
||||
%131 = OpFSub %v4float %129 %130
|
||||
%132 = OpCompositeConstruct %mat4v4float %122 %125 %128 %131
|
||||
OpStore %m11 %132
|
||||
%30 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%31 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%29 = OpCompositeConstruct %mat2v2float %30 %31
|
||||
OpStore %m1 %29
|
||||
%33 = OpLoad %mat2v2float %m1
|
||||
OpStore %m3 %33
|
||||
%37 = OpCompositeConstruct %v2float %float_1 %float_0
|
||||
%38 = OpCompositeConstruct %v2float %float_0 %float_1
|
||||
%35 = OpCompositeConstruct %mat2v2float %37 %38
|
||||
OpStore %m4 %35
|
||||
%39 = OpLoad %mat2v2float %m3
|
||||
%40 = OpLoad %mat2v2float %m4
|
||||
%41 = OpMatrixTimesMatrix %mat2v2float %39 %40
|
||||
OpStore %m3 %41
|
||||
%45 = OpAccessChain %_ptr_Function_v2float %m1 %int_0
|
||||
%47 = OpLoad %v2float %45
|
||||
%48 = OpCompositeExtract %float %47 0
|
||||
%50 = OpCompositeConstruct %v2float %48 %float_0
|
||||
%51 = OpCompositeConstruct %v2float %float_0 %48
|
||||
%49 = OpCompositeConstruct %mat2v2float %50 %51
|
||||
OpStore %m5 %49
|
||||
%54 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%55 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%53 = OpCompositeConstruct %mat2v2float %54 %55
|
||||
OpStore %m6 %53
|
||||
%56 = OpLoad %mat2v2float %m6
|
||||
%57 = OpLoad %mat2v2float %m5
|
||||
%58 = OpCompositeExtract %v2float %56 0
|
||||
%59 = OpCompositeExtract %v2float %57 0
|
||||
%60 = OpFAdd %v2float %58 %59
|
||||
%61 = OpCompositeExtract %v2float %56 1
|
||||
%62 = OpCompositeExtract %v2float %57 1
|
||||
%63 = OpFAdd %v2float %61 %62
|
||||
%64 = OpCompositeConstruct %mat2v2float %60 %63
|
||||
OpStore %m6 %64
|
||||
%69 = OpCompositeConstruct %v4float %float_1 %float_0 %float_0 %float_0
|
||||
%70 = OpCompositeConstruct %v4float %float_0 %float_1 %float_0 %float_0
|
||||
%71 = OpCompositeConstruct %v4float %float_0 %float_0 %float_1 %float_0
|
||||
%72 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_1
|
||||
%68 = OpCompositeConstruct %mat4v4float %69 %70 %71 %72
|
||||
OpStore %m10 %68
|
||||
%75 = OpCompositeConstruct %v4float %float_2 %float_0 %float_0 %float_0
|
||||
%76 = OpCompositeConstruct %v4float %float_0 %float_2 %float_0 %float_0
|
||||
%77 = OpCompositeConstruct %v4float %float_0 %float_0 %float_2 %float_0
|
||||
%78 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_2
|
||||
%74 = OpCompositeConstruct %mat4v4float %75 %76 %77 %78
|
||||
OpStore %m11 %74
|
||||
%79 = OpLoad %mat4v4float %m11
|
||||
%80 = OpLoad %mat4v4float %m10
|
||||
%81 = OpCompositeExtract %v4float %79 0
|
||||
%82 = OpCompositeExtract %v4float %80 0
|
||||
%83 = OpFSub %v4float %81 %82
|
||||
%84 = OpCompositeExtract %v4float %79 1
|
||||
%85 = OpCompositeExtract %v4float %80 1
|
||||
%86 = OpFSub %v4float %84 %85
|
||||
%87 = OpCompositeExtract %v4float %79 2
|
||||
%88 = OpCompositeExtract %v4float %80 2
|
||||
%89 = OpFSub %v4float %87 %88
|
||||
%90 = OpCompositeExtract %v4float %79 3
|
||||
%91 = OpCompositeExtract %v4float %80 3
|
||||
%92 = OpFSub %v4float %90 %91
|
||||
%93 = OpCompositeConstruct %mat4v4float %83 %86 %89 %92
|
||||
OpStore %m11 %93
|
||||
OpReturnValue %true
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %134
|
||||
%135 = OpLabel
|
||||
%_0_v1 = OpVariable %_ptr_Function_v3float Function
|
||||
%_1_v2 = OpVariable %_ptr_Function_v3float Function
|
||||
%main = OpFunction %v4float None %95
|
||||
%96 = OpLabel
|
||||
%_2_m1 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_3_m2 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_4_m3 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_5_m4 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_6_m5 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_7_m6 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_8_m7 = OpVariable %_ptr_Function_mat2v2float Function
|
||||
%_9_m9 = OpVariable %_ptr_Function_mat3v3float Function
|
||||
%_10_m10 = OpVariable %_ptr_Function_mat4v4float Function
|
||||
%_11_m11 = OpVariable %_ptr_Function_mat4v4float Function
|
||||
%230 = OpVariable %_ptr_Function_v4float Function
|
||||
%138 = OpCompositeConstruct %v3float %float_1 %float_0 %float_0
|
||||
%139 = OpCompositeConstruct %v3float %float_0 %float_1 %float_0
|
||||
%140 = OpCompositeConstruct %v3float %float_0 %float_0 %float_1
|
||||
%137 = OpCompositeConstruct %mat3v3float %138 %139 %140
|
||||
%141 = OpMatrixTimesVector %v3float %137 %32
|
||||
OpStore %_0_v1 %141
|
||||
%144 = OpCompositeConstruct %v3float %float_1 %float_0 %float_0
|
||||
%145 = OpCompositeConstruct %v3float %float_0 %float_1 %float_0
|
||||
%146 = OpCompositeConstruct %v3float %float_0 %float_0 %float_1
|
||||
%143 = OpCompositeConstruct %mat3v3float %144 %145 %146
|
||||
%147 = OpVectorTimesMatrix %v3float %32 %143
|
||||
OpStore %_1_v2 %147
|
||||
%150 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%151 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%149 = OpCompositeConstruct %mat2v2float %150 %151
|
||||
OpStore %_2_m1 %149
|
||||
%154 = OpCompositeExtract %float %50 0
|
||||
%155 = OpCompositeExtract %float %50 1
|
||||
%156 = OpCompositeExtract %float %50 2
|
||||
%157 = OpCompositeExtract %float %50 3
|
||||
%158 = OpCompositeConstruct %v2float %154 %155
|
||||
%159 = OpCompositeConstruct %v2float %156 %157
|
||||
%153 = OpCompositeConstruct %mat2v2float %158 %159
|
||||
OpStore %_3_m2 %153
|
||||
%161 = OpLoad %mat2v2float %_2_m1
|
||||
OpStore %_4_m3 %161
|
||||
%164 = OpCompositeConstruct %v2float %float_1 %float_0
|
||||
%165 = OpCompositeConstruct %v2float %float_0 %float_1
|
||||
%163 = OpCompositeConstruct %mat2v2float %164 %165
|
||||
OpStore %_5_m4 %163
|
||||
%166 = OpLoad %mat2v2float %_4_m3
|
||||
%167 = OpLoad %mat2v2float %_5_m4
|
||||
%168 = OpMatrixTimesMatrix %mat2v2float %166 %167
|
||||
OpStore %_4_m3 %168
|
||||
%170 = OpAccessChain %_ptr_Function_v2float %_2_m1 %int_0
|
||||
%171 = OpLoad %v2float %170
|
||||
%172 = OpCompositeExtract %float %171 0
|
||||
%174 = OpCompositeConstruct %v2float %172 %float_0
|
||||
%175 = OpCompositeConstruct %v2float %float_0 %172
|
||||
%173 = OpCompositeConstruct %mat2v2float %174 %175
|
||||
OpStore %_6_m5 %173
|
||||
%178 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%179 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%177 = OpCompositeConstruct %mat2v2float %178 %179
|
||||
OpStore %_7_m6 %177
|
||||
%180 = OpLoad %mat2v2float %_7_m6
|
||||
%181 = OpLoad %mat2v2float %_6_m5
|
||||
%182 = OpCompositeExtract %v2float %180 0
|
||||
%183 = OpCompositeExtract %v2float %181 0
|
||||
%184 = OpFAdd %v2float %182 %183
|
||||
%185 = OpCompositeExtract %v2float %180 1
|
||||
%186 = OpCompositeExtract %v2float %181 1
|
||||
%187 = OpFAdd %v2float %185 %186
|
||||
%188 = OpCompositeConstruct %mat2v2float %184 %187
|
||||
OpStore %_7_m6 %188
|
||||
%191 = OpCompositeConstruct %v2float %float_5 %float_6
|
||||
%192 = OpCompositeConstruct %v2float %float_7 %float_8
|
||||
%190 = OpCompositeConstruct %mat2v2float %191 %192
|
||||
OpStore %_8_m7 %190
|
||||
%195 = OpCompositeConstruct %v3float %float_1 %float_0 %float_0
|
||||
%196 = OpCompositeConstruct %v3float %float_0 %float_1 %float_0
|
||||
%197 = OpCompositeConstruct %v3float %float_0 %float_0 %float_1
|
||||
%194 = OpCompositeConstruct %mat3v3float %195 %196 %197
|
||||
OpStore %_9_m9 %194
|
||||
%200 = OpCompositeConstruct %v4float %float_1 %float_0 %float_0 %float_0
|
||||
%201 = OpCompositeConstruct %v4float %float_0 %float_1 %float_0 %float_0
|
||||
%202 = OpCompositeConstruct %v4float %float_0 %float_0 %float_1 %float_0
|
||||
%203 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_1
|
||||
%199 = OpCompositeConstruct %mat4v4float %200 %201 %202 %203
|
||||
OpStore %_10_m10 %199
|
||||
%206 = OpCompositeConstruct %v4float %float_2 %float_0 %float_0 %float_0
|
||||
%207 = OpCompositeConstruct %v4float %float_0 %float_2 %float_0 %float_0
|
||||
%208 = OpCompositeConstruct %v4float %float_0 %float_0 %float_2 %float_0
|
||||
%209 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_2
|
||||
%205 = OpCompositeConstruct %mat4v4float %206 %207 %208 %209
|
||||
OpStore %_11_m11 %205
|
||||
%210 = OpLoad %mat4v4float %_11_m11
|
||||
%211 = OpLoad %mat4v4float %_10_m10
|
||||
%212 = OpCompositeExtract %v4float %210 0
|
||||
%213 = OpCompositeExtract %v4float %211 0
|
||||
%214 = OpFSub %v4float %212 %213
|
||||
%215 = OpCompositeExtract %v4float %210 1
|
||||
%216 = OpCompositeExtract %v4float %211 1
|
||||
%217 = OpFSub %v4float %215 %216
|
||||
%218 = OpCompositeExtract %v4float %210 2
|
||||
%219 = OpCompositeExtract %v4float %211 2
|
||||
%220 = OpFSub %v4float %218 %219
|
||||
%221 = OpCompositeExtract %v4float %210 3
|
||||
%222 = OpCompositeExtract %v4float %211 3
|
||||
%223 = OpFSub %v4float %221 %222
|
||||
%224 = OpCompositeConstruct %mat4v4float %214 %217 %220 %223
|
||||
OpStore %_11_m11 %224
|
||||
OpSelectionMerge %227 None
|
||||
OpBranchConditional %true %226 %227
|
||||
%226 = OpLabel
|
||||
%228 = OpFunctionCall %bool %test_half
|
||||
OpBranch %227
|
||||
%227 = OpLabel
|
||||
%229 = OpPhi %bool %false %135 %228 %226
|
||||
OpSelectionMerge %234 None
|
||||
OpBranchConditional %229 %232 %233
|
||||
%232 = OpLabel
|
||||
%235 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
||||
%237 = OpLoad %v4float %235
|
||||
OpStore %230 %237
|
||||
OpBranch %234
|
||||
%233 = OpLabel
|
||||
%238 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
||||
%240 = OpLoad %v4float %238
|
||||
OpStore %230 %240
|
||||
OpBranch %234
|
||||
%234 = OpLabel
|
||||
%241 = OpLoad %v4float %230
|
||||
OpReturnValue %241
|
||||
%162 = OpVariable %_ptr_Function_v4float Function
|
||||
%99 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%100 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%98 = OpCompositeConstruct %mat2v2float %99 %100
|
||||
OpStore %_2_m1 %98
|
||||
%102 = OpLoad %mat2v2float %_2_m1
|
||||
OpStore %_4_m3 %102
|
||||
%105 = OpCompositeConstruct %v2float %float_1 %float_0
|
||||
%106 = OpCompositeConstruct %v2float %float_0 %float_1
|
||||
%104 = OpCompositeConstruct %mat2v2float %105 %106
|
||||
OpStore %_5_m4 %104
|
||||
%107 = OpLoad %mat2v2float %_4_m3
|
||||
%108 = OpLoad %mat2v2float %_5_m4
|
||||
%109 = OpMatrixTimesMatrix %mat2v2float %107 %108
|
||||
OpStore %_4_m3 %109
|
||||
%111 = OpAccessChain %_ptr_Function_v2float %_2_m1 %int_0
|
||||
%112 = OpLoad %v2float %111
|
||||
%113 = OpCompositeExtract %float %112 0
|
||||
%115 = OpCompositeConstruct %v2float %113 %float_0
|
||||
%116 = OpCompositeConstruct %v2float %float_0 %113
|
||||
%114 = OpCompositeConstruct %mat2v2float %115 %116
|
||||
OpStore %_6_m5 %114
|
||||
%119 = OpCompositeConstruct %v2float %float_1 %float_2
|
||||
%120 = OpCompositeConstruct %v2float %float_3 %float_4
|
||||
%118 = OpCompositeConstruct %mat2v2float %119 %120
|
||||
OpStore %_7_m6 %118
|
||||
%121 = OpLoad %mat2v2float %_7_m6
|
||||
%122 = OpLoad %mat2v2float %_6_m5
|
||||
%123 = OpCompositeExtract %v2float %121 0
|
||||
%124 = OpCompositeExtract %v2float %122 0
|
||||
%125 = OpFAdd %v2float %123 %124
|
||||
%126 = OpCompositeExtract %v2float %121 1
|
||||
%127 = OpCompositeExtract %v2float %122 1
|
||||
%128 = OpFAdd %v2float %126 %127
|
||||
%129 = OpCompositeConstruct %mat2v2float %125 %128
|
||||
OpStore %_7_m6 %129
|
||||
%132 = OpCompositeConstruct %v4float %float_1 %float_0 %float_0 %float_0
|
||||
%133 = OpCompositeConstruct %v4float %float_0 %float_1 %float_0 %float_0
|
||||
%134 = OpCompositeConstruct %v4float %float_0 %float_0 %float_1 %float_0
|
||||
%135 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_1
|
||||
%131 = OpCompositeConstruct %mat4v4float %132 %133 %134 %135
|
||||
OpStore %_10_m10 %131
|
||||
%138 = OpCompositeConstruct %v4float %float_2 %float_0 %float_0 %float_0
|
||||
%139 = OpCompositeConstruct %v4float %float_0 %float_2 %float_0 %float_0
|
||||
%140 = OpCompositeConstruct %v4float %float_0 %float_0 %float_2 %float_0
|
||||
%141 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %float_2
|
||||
%137 = OpCompositeConstruct %mat4v4float %138 %139 %140 %141
|
||||
OpStore %_11_m11 %137
|
||||
%142 = OpLoad %mat4v4float %_11_m11
|
||||
%143 = OpLoad %mat4v4float %_10_m10
|
||||
%144 = OpCompositeExtract %v4float %142 0
|
||||
%145 = OpCompositeExtract %v4float %143 0
|
||||
%146 = OpFSub %v4float %144 %145
|
||||
%147 = OpCompositeExtract %v4float %142 1
|
||||
%148 = OpCompositeExtract %v4float %143 1
|
||||
%149 = OpFSub %v4float %147 %148
|
||||
%150 = OpCompositeExtract %v4float %142 2
|
||||
%151 = OpCompositeExtract %v4float %143 2
|
||||
%152 = OpFSub %v4float %150 %151
|
||||
%153 = OpCompositeExtract %v4float %142 3
|
||||
%154 = OpCompositeExtract %v4float %143 3
|
||||
%155 = OpFSub %v4float %153 %154
|
||||
%156 = OpCompositeConstruct %mat4v4float %146 %149 %152 %155
|
||||
OpStore %_11_m11 %156
|
||||
OpSelectionMerge %159 None
|
||||
OpBranchConditional %true %158 %159
|
||||
%158 = OpLabel
|
||||
%160 = OpFunctionCall %bool %test_half
|
||||
OpBranch %159
|
||||
%159 = OpLabel
|
||||
%161 = OpPhi %bool %false %96 %160 %158
|
||||
OpSelectionMerge %166 None
|
||||
OpBranchConditional %161 %164 %165
|
||||
%164 = OpLabel
|
||||
%167 = OpAccessChain %_ptr_Uniform_v4float %11 %int_0
|
||||
%169 = OpLoad %v4float %167
|
||||
OpStore %162 %169
|
||||
OpBranch %166
|
||||
%165 = OpLabel
|
||||
%170 = OpAccessChain %_ptr_Uniform_v4float %11 %int_1
|
||||
%172 = OpLoad %v4float %170
|
||||
OpStore %162 %172
|
||||
OpBranch %166
|
||||
%166 = OpLabel
|
||||
%173 = OpLoad %v4float %162
|
||||
OpReturnValue %173
|
||||
OpFunctionEnd
|
||||
|
@ -3,36 +3,26 @@ out vec4 sk_FragColor;
|
||||
uniform vec4 colorGreen;
|
||||
uniform vec4 colorRed;
|
||||
bool test_half() {
|
||||
vec3 v1 = mat3(1.0) * vec3(2.0);
|
||||
vec3 v2 = vec3(2.0) * mat3(1.0);
|
||||
mat2 m1 = mat2(1.0, 2.0, 3.0, 4.0);
|
||||
mat2 m2 = mat2(vec4(0.0));
|
||||
mat2 m3 = m1;
|
||||
mat2 m4 = mat2(1.0);
|
||||
m3 *= m4;
|
||||
mat2 m5 = mat2(m1[0].x);
|
||||
mat2 m6 = mat2(1.0, 2.0, 3.0, 4.0);
|
||||
m6 += m5;
|
||||
mat2 m7 = mat2(5.0, 6.0, 7.0, 8.0);
|
||||
mat3 m9 = mat3(1.0);
|
||||
mat4 m10 = mat4(1.0);
|
||||
mat4 m11 = mat4(2.0);
|
||||
m11 -= m10;
|
||||
return true;
|
||||
}
|
||||
vec4 main() {
|
||||
vec3 _0_v1 = mat3(1.0) * vec3(2.0);
|
||||
vec3 _1_v2 = vec3(2.0) * mat3(1.0);
|
||||
mat2 _2_m1 = mat2(1.0, 2.0, 3.0, 4.0);
|
||||
mat2 _3_m2 = mat2(vec4(0.0));
|
||||
mat2 _4_m3 = _2_m1;
|
||||
mat2 _5_m4 = mat2(1.0);
|
||||
_4_m3 *= _5_m4;
|
||||
mat2 _6_m5 = mat2(_2_m1[0].x);
|
||||
mat2 _7_m6 = mat2(1.0, 2.0, 3.0, 4.0);
|
||||
_7_m6 += _6_m5;
|
||||
mat2 _8_m7 = mat2(5.0, 6.0, 7.0, 8.0);
|
||||
mat3 _9_m9 = mat3(1.0);
|
||||
mat4 _10_m10 = mat4(1.0);
|
||||
mat4 _11_m11 = mat4(2.0);
|
||||
_11_m11 -= _10_m10;
|
||||
|
@ -10,27 +10,19 @@ struct Inputs {
|
||||
struct Outputs {
|
||||
float4 sk_FragColor [[color(0)]];
|
||||
};
|
||||
float2x2 float2x2_from_float4(float4 x0) {
|
||||
return float2x2(float2(x0[0], x0[1]), float2(x0[2], x0[3]));
|
||||
}
|
||||
thread float2x2& operator*=(thread float2x2& left, thread const float2x2& right) {
|
||||
left = left * right;
|
||||
return left;
|
||||
}
|
||||
|
||||
bool test_half() {
|
||||
float3 v1 = float3x3(1.0) * float3(2.0);
|
||||
float3 v2 = float3(2.0) * float3x3(1.0);
|
||||
float2x2 m1 = float2x2(float2(1.0, 2.0), float2(3.0, 4.0));
|
||||
float2x2 m2 = float2x2_from_float4(float4(0.0));
|
||||
float2x2 m3 = m1;
|
||||
float2x2 m4 = float2x2(1.0);
|
||||
m3 *= m4;
|
||||
float2x2 m5 = float2x2(m1[0].x);
|
||||
float2x2 m6 = float2x2(float2(1.0, 2.0), float2(3.0, 4.0));
|
||||
m6 += m5;
|
||||
float2x2 m7 = float2x2(float2(5.0, 6.0), float2(7.0, 8.0));
|
||||
float3x3 m9 = float3x3(1.0);
|
||||
float4x4 m10 = float4x4(1.0);
|
||||
float4x4 m11 = float4x4(2.0);
|
||||
m11 -= m10;
|
||||
@ -39,18 +31,13 @@ bool test_half() {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
float3 _0_v1 = float3x3(1.0) * float3(2.0);
|
||||
float3 _1_v2 = float3(2.0) * float3x3(1.0);
|
||||
float2x2 _2_m1 = float2x2(float2(1.0, 2.0), float2(3.0, 4.0));
|
||||
float2x2 _3_m2 = float2x2_from_float4(float4(0.0));
|
||||
float2x2 _4_m3 = _2_m1;
|
||||
float2x2 _5_m4 = float2x2(1.0);
|
||||
_4_m3 *= _5_m4;
|
||||
float2x2 _6_m5 = float2x2(_2_m1[0].x);
|
||||
float2x2 _7_m6 = float2x2(float2(1.0, 2.0), float2(3.0, 4.0));
|
||||
_7_m6 += _6_m5;
|
||||
float2x2 _8_m7 = float2x2(float2(5.0, 6.0), float2(7.0, 8.0));
|
||||
float3x3 _9_m9 = float3x3(1.0);
|
||||
float4x4 _10_m10 = float4x4(1.0);
|
||||
float4x4 _11_m11 = float4x4(2.0);
|
||||
_11_m11 -= _10_m10;
|
||||
|
@ -13,11 +13,6 @@ OpName %main "main"
|
||||
OpName %x "x"
|
||||
OpName %y "y"
|
||||
OpName %z "z"
|
||||
OpName %b "b"
|
||||
OpName %c "c"
|
||||
OpName %d "d"
|
||||
OpName %e "e"
|
||||
OpName %f "f"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
OpDecorate %sk_FragColor Location 0
|
||||
OpDecorate %sk_FragColor Index 0
|
||||
@ -30,15 +25,9 @@ OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
|
||||
OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %10 Binding 0
|
||||
OpDecorate %10 DescriptorSet 0
|
||||
OpDecorate %81 RelaxedPrecision
|
||||
OpDecorate %82 RelaxedPrecision
|
||||
OpDecorate %85 RelaxedPrecision
|
||||
OpDecorate %88 RelaxedPrecision
|
||||
OpDecorate %91 RelaxedPrecision
|
||||
OpDecorate %94 RelaxedPrecision
|
||||
OpDecorate %142 RelaxedPrecision
|
||||
OpDecorate %144 RelaxedPrecision
|
||||
OpDecorate %145 RelaxedPrecision
|
||||
OpDecorate %103 RelaxedPrecision
|
||||
OpDecorate %105 RelaxedPrecision
|
||||
OpDecorate %106 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -61,10 +50,6 @@ OpDecorate %145 RelaxedPrecision
|
||||
%int_2 = OpConstant %int 2
|
||||
%int_4 = OpConstant %int 4
|
||||
%int_1 = OpConstant %int 1
|
||||
%_ptr_Function_bool = OpTypePointer Function %bool
|
||||
%true = OpConstantTrue %bool
|
||||
%float_4 = OpConstant %float 4
|
||||
%false = OpConstantFalse %bool
|
||||
%float_12 = OpConstant %float 12
|
||||
%float_10 = OpConstant %float 10
|
||||
%int_0 = OpConstant %int 0
|
||||
@ -72,6 +57,7 @@ OpDecorate %145 RelaxedPrecision
|
||||
%int_5 = OpConstant %int 5
|
||||
%float_6 = OpConstant %float 6
|
||||
%int_6 = OpConstant %int 6
|
||||
%false = OpConstantFalse %bool
|
||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%_entrypoint = OpFunction %void None %15
|
||||
@ -85,12 +71,7 @@ OpFunctionEnd
|
||||
%x = OpVariable %_ptr_Function_float Function
|
||||
%y = OpVariable %_ptr_Function_float Function
|
||||
%z = OpVariable %_ptr_Function_int Function
|
||||
%b = OpVariable %_ptr_Function_bool Function
|
||||
%c = OpVariable %_ptr_Function_bool Function
|
||||
%d = OpVariable %_ptr_Function_bool Function
|
||||
%e = OpVariable %_ptr_Function_bool Function
|
||||
%f = OpVariable %_ptr_Function_bool Function
|
||||
%135 = OpVariable %_ptr_Function_v4float Function
|
||||
%96 = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %x %float_1
|
||||
OpStore %y %float_2
|
||||
OpStore %z %int_3
|
||||
@ -121,118 +102,70 @@ OpStore %y %46
|
||||
%53 = OpShiftRightArithmetic %int %52 %int_2
|
||||
%55 = OpShiftLeftLogical %int %53 %int_1
|
||||
OpStore %z %55
|
||||
%56 = OpLoad %float %x
|
||||
%58 = OpFAdd %float %56 %float_12
|
||||
OpStore %x %58
|
||||
%59 = OpLoad %float %x
|
||||
%61 = OpFOrdGreaterThan %bool %59 %float_4
|
||||
%62 = OpLoad %float %x
|
||||
%63 = OpFOrdLessThan %bool %62 %float_2
|
||||
%64 = OpLogicalEqual %bool %61 %63
|
||||
OpSelectionMerge %66 None
|
||||
OpBranchConditional %64 %66 %65
|
||||
%65 = OpLabel
|
||||
%68 = OpExtInst %float %1 Sqrt %float_2
|
||||
%69 = OpFOrdGreaterThanEqual %bool %float_2 %68
|
||||
OpSelectionMerge %71 None
|
||||
OpBranchConditional %69 %70 %71
|
||||
%70 = OpLabel
|
||||
%72 = OpLoad %float %y
|
||||
%73 = OpLoad %float %x
|
||||
%74 = OpFOrdLessThanEqual %bool %72 %73
|
||||
OpBranch %71
|
||||
%71 = OpLabel
|
||||
%75 = OpPhi %bool %false %65 %74 %70
|
||||
OpBranch %66
|
||||
%66 = OpLabel
|
||||
%76 = OpPhi %bool %true %19 %75 %71
|
||||
OpStore %b %76
|
||||
%78 = OpExtInst %float %1 Sqrt %float_2
|
||||
%79 = OpFOrdGreaterThan %bool %78 %float_2
|
||||
OpStore %c %79
|
||||
%81 = OpLoad %bool %b
|
||||
%82 = OpLoad %bool %c
|
||||
%83 = OpLogicalNotEqual %bool %81 %82
|
||||
OpStore %d %83
|
||||
%85 = OpLoad %bool %b
|
||||
OpSelectionMerge %87 None
|
||||
OpBranchConditional %85 %86 %87
|
||||
%86 = OpLabel
|
||||
%88 = OpLoad %bool %c
|
||||
OpBranch %87
|
||||
%87 = OpLabel
|
||||
%89 = OpPhi %bool %false %66 %88 %86
|
||||
OpStore %e %89
|
||||
%91 = OpLoad %bool %b
|
||||
OpSelectionMerge %93 None
|
||||
OpBranchConditional %91 %93 %92
|
||||
%92 = OpLabel
|
||||
%94 = OpLoad %bool %c
|
||||
OpBranch %93
|
||||
%93 = OpLabel
|
||||
%95 = OpPhi %bool %true %87 %94 %92
|
||||
OpStore %f %95
|
||||
%96 = OpLoad %float %x
|
||||
%98 = OpFAdd %float %96 %float_12
|
||||
OpStore %x %98
|
||||
%99 = OpLoad %float %x
|
||||
%100 = OpFSub %float %99 %float_12
|
||||
OpStore %x %100
|
||||
%101 = OpLoad %float %x
|
||||
%102 = OpLoad %float %y
|
||||
%104 = OpFDiv %float %102 %float_10
|
||||
OpStore %y %104
|
||||
%105 = OpFMul %float %101 %104
|
||||
OpStore %x %105
|
||||
%106 = OpLoad %int %z
|
||||
%108 = OpBitwiseOr %int %106 %int_0
|
||||
OpStore %z %108
|
||||
%109 = OpLoad %int %z
|
||||
%111 = OpBitwiseAnd %int %109 %int_n1
|
||||
OpStore %z %111
|
||||
%112 = OpLoad %int %z
|
||||
%113 = OpBitwiseXor %int %112 %int_0
|
||||
OpStore %z %113
|
||||
%114 = OpLoad %int %z
|
||||
%115 = OpShiftRightArithmetic %int %114 %int_2
|
||||
OpStore %z %115
|
||||
%116 = OpLoad %int %z
|
||||
%117 = OpShiftLeftLogical %int %116 %int_4
|
||||
OpStore %z %117
|
||||
%118 = OpLoad %int %z
|
||||
%120 = OpSMod %int %118 %int_5
|
||||
OpStore %z %120
|
||||
%60 = OpFSub %float %59 %float_12
|
||||
OpStore %x %60
|
||||
%61 = OpLoad %float %x
|
||||
%62 = OpLoad %float %y
|
||||
%64 = OpFDiv %float %62 %float_10
|
||||
OpStore %y %64
|
||||
%65 = OpFMul %float %61 %64
|
||||
OpStore %x %65
|
||||
%66 = OpLoad %int %z
|
||||
%68 = OpBitwiseOr %int %66 %int_0
|
||||
OpStore %z %68
|
||||
%69 = OpLoad %int %z
|
||||
%71 = OpBitwiseAnd %int %69 %int_n1
|
||||
OpStore %z %71
|
||||
%72 = OpLoad %int %z
|
||||
%73 = OpBitwiseXor %int %72 %int_0
|
||||
OpStore %z %73
|
||||
%74 = OpLoad %int %z
|
||||
%75 = OpShiftRightArithmetic %int %74 %int_2
|
||||
OpStore %z %75
|
||||
%76 = OpLoad %int %z
|
||||
%77 = OpShiftLeftLogical %int %76 %int_4
|
||||
OpStore %z %77
|
||||
%78 = OpLoad %int %z
|
||||
%80 = OpSMod %int %78 %int_5
|
||||
OpStore %z %80
|
||||
OpStore %x %float_6
|
||||
OpStore %y %float_6
|
||||
OpStore %z %int_6
|
||||
%123 = OpLoad %float %x
|
||||
%124 = OpFOrdEqual %bool %123 %float_6
|
||||
OpSelectionMerge %126 None
|
||||
OpBranchConditional %124 %125 %126
|
||||
%125 = OpLabel
|
||||
%127 = OpLoad %float %y
|
||||
%128 = OpFOrdEqual %bool %127 %float_6
|
||||
OpBranch %126
|
||||
%126 = OpLabel
|
||||
%129 = OpPhi %bool %false %93 %128 %125
|
||||
OpSelectionMerge %131 None
|
||||
OpBranchConditional %129 %130 %131
|
||||
%130 = OpLabel
|
||||
%132 = OpLoad %int %z
|
||||
%133 = OpIEqual %bool %132 %int_6
|
||||
OpBranch %131
|
||||
%131 = OpLabel
|
||||
%134 = OpPhi %bool %false %126 %133 %130
|
||||
OpSelectionMerge %139 None
|
||||
OpBranchConditional %134 %137 %138
|
||||
%137 = OpLabel
|
||||
%140 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%142 = OpLoad %v4float %140
|
||||
OpStore %135 %142
|
||||
OpBranch %139
|
||||
%138 = OpLabel
|
||||
%143 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%144 = OpLoad %v4float %143
|
||||
OpStore %135 %144
|
||||
OpBranch %139
|
||||
%139 = OpLabel
|
||||
%145 = OpLoad %v4float %135
|
||||
OpReturnValue %145
|
||||
%84 = OpLoad %float %x
|
||||
%85 = OpFOrdEqual %bool %84 %float_6
|
||||
OpSelectionMerge %87 None
|
||||
OpBranchConditional %85 %86 %87
|
||||
%86 = OpLabel
|
||||
%88 = OpLoad %float %y
|
||||
%89 = OpFOrdEqual %bool %88 %float_6
|
||||
OpBranch %87
|
||||
%87 = OpLabel
|
||||
%90 = OpPhi %bool %false %19 %89 %86
|
||||
OpSelectionMerge %92 None
|
||||
OpBranchConditional %90 %91 %92
|
||||
%91 = OpLabel
|
||||
%93 = OpLoad %int %z
|
||||
%94 = OpIEqual %bool %93 %int_6
|
||||
OpBranch %92
|
||||
%92 = OpLabel
|
||||
%95 = OpPhi %bool %false %87 %94 %91
|
||||
OpSelectionMerge %100 None
|
||||
OpBranchConditional %95 %98 %99
|
||||
%98 = OpLabel
|
||||
%101 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%103 = OpLoad %v4float %101
|
||||
OpStore %96 %103
|
||||
OpBranch %100
|
||||
%99 = OpLabel
|
||||
%104 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%105 = OpLoad %v4float %104
|
||||
OpStore %96 %105
|
||||
OpBranch %100
|
||||
%100 = OpLabel
|
||||
%106 = OpLoad %v4float %96
|
||||
OpReturnValue %106
|
||||
OpFunctionEnd
|
||||
|
@ -9,11 +9,6 @@ vec4 main() {
|
||||
x = (x - x) + ((y * x) * x) * (y - x);
|
||||
y = (x / y) / x;
|
||||
z = (((z / 2) % 3 << 4) >> 2) << 1;
|
||||
bool b = x > 4.0 == x < 2.0 || 2.0 >= sqrt(2.0) && y <= x;
|
||||
bool c = sqrt(2.0) > 2.0;
|
||||
bool d = b ^^ c;
|
||||
bool e = b && c;
|
||||
bool f = b || c;
|
||||
x += 12.0;
|
||||
x -= 12.0;
|
||||
x *= (y /= 10.0);
|
||||
|
@ -20,11 +20,6 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _unifo
|
||||
x = (x - x) + ((y * x) * x) * (y - x);
|
||||
y = (x / y) / x;
|
||||
z = (((z / 2) % 3 << 4) >> 2) << 1;
|
||||
bool b = x > 4.0 == x < 2.0 || 2.0 >= sqrt(2.0) && y <= x;
|
||||
bool c = sqrt(2.0) > 2.0;
|
||||
bool d = b != c;
|
||||
bool e = b && c;
|
||||
bool f = b || c;
|
||||
x += 12.0;
|
||||
x -= 12.0;
|
||||
x *= (y /= 10.0);
|
||||
|
@ -5,8 +5,6 @@ OpEntryPoint Fragment %main "main" %sk_Clockwise
|
||||
OpExecutionMode %main OriginUpperLeft
|
||||
OpName %sk_Clockwise "sk_Clockwise"
|
||||
OpName %main "main"
|
||||
OpName %_0_y "_0_y"
|
||||
OpName %_1_z "_1_z"
|
||||
OpDecorate %sk_Clockwise RelaxedPrecision
|
||||
OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
||||
%bool = OpTypeBool
|
||||
@ -14,16 +12,8 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
||||
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
|
||||
%void = OpTypeVoid
|
||||
%7 = OpTypeFunction %void
|
||||
%float = OpTypeFloat 32
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%float_0 = OpConstant %float 0
|
||||
%false = OpConstantFalse %bool
|
||||
%main = OpFunction %void None %7
|
||||
%8 = OpLabel
|
||||
%_0_y = OpVariable %_ptr_Function_float Function
|
||||
%_1_z = OpVariable %_ptr_Function_float Function
|
||||
OpStore %_0_y %float_0
|
||||
%14 = OpLoad %float %_0_y
|
||||
OpStore %_1_z %14
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
@ -1,6 +1,4 @@
|
||||
|
||||
void main() {
|
||||
float _0_y = 0.0;
|
||||
float _1_z = _0_y;
|
||||
false;
|
||||
}
|
||||
|
@ -9,8 +9,6 @@ struct Outputs {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
float _0_y = 0.0;
|
||||
float _1_z = _0_y;
|
||||
false;
|
||||
return _out;
|
||||
}
|
||||
|
@ -11,7 +11,6 @@ OpMemberName %_UniformBuffer 1 "colorRed"
|
||||
OpMemberName %_UniformBuffer 2 "colorWhite"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %main "main"
|
||||
OpName %result "result"
|
||||
OpName %h "h"
|
||||
OpName %h2 "h2"
|
||||
OpName %h3 "h3"
|
||||
@ -49,84 +48,84 @@ OpMemberDecorate %_UniformBuffer 2 RelaxedPrecision
|
||||
OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %10 Binding 0
|
||||
OpDecorate %10 DescriptorSet 0
|
||||
OpDecorate %28 RelaxedPrecision
|
||||
OpDecorate %35 RelaxedPrecision
|
||||
OpDecorate %42 RelaxedPrecision
|
||||
OpDecorate %47 RelaxedPrecision
|
||||
OpDecorate %51 RelaxedPrecision
|
||||
OpDecorate %56 RelaxedPrecision
|
||||
OpDecorate %60 RelaxedPrecision
|
||||
OpDecorate %62 RelaxedPrecision
|
||||
OpDecorate %66 RelaxedPrecision
|
||||
OpDecorate %71 RelaxedPrecision
|
||||
OpDecorate %26 RelaxedPrecision
|
||||
OpDecorate %33 RelaxedPrecision
|
||||
OpDecorate %40 RelaxedPrecision
|
||||
OpDecorate %46 RelaxedPrecision
|
||||
OpDecorate %50 RelaxedPrecision
|
||||
OpDecorate %55 RelaxedPrecision
|
||||
OpDecorate %59 RelaxedPrecision
|
||||
OpDecorate %61 RelaxedPrecision
|
||||
OpDecorate %65 RelaxedPrecision
|
||||
OpDecorate %70 RelaxedPrecision
|
||||
OpDecorate %74 RelaxedPrecision
|
||||
OpDecorate %75 RelaxedPrecision
|
||||
OpDecorate %76 RelaxedPrecision
|
||||
OpDecorate %73 RelaxedPrecision
|
||||
OpDecorate %73 RelaxedPrecision
|
||||
OpDecorate %81 RelaxedPrecision
|
||||
OpDecorate %72 RelaxedPrecision
|
||||
OpDecorate %72 RelaxedPrecision
|
||||
OpDecorate %80 RelaxedPrecision
|
||||
OpDecorate %83 RelaxedPrecision
|
||||
OpDecorate %84 RelaxedPrecision
|
||||
OpDecorate %85 RelaxedPrecision
|
||||
OpDecorate %86 RelaxedPrecision
|
||||
OpDecorate %83 RelaxedPrecision
|
||||
OpDecorate %83 RelaxedPrecision
|
||||
OpDecorate %91 RelaxedPrecision
|
||||
OpDecorate %82 RelaxedPrecision
|
||||
OpDecorate %82 RelaxedPrecision
|
||||
OpDecorate %90 RelaxedPrecision
|
||||
OpDecorate %93 RelaxedPrecision
|
||||
OpDecorate %94 RelaxedPrecision
|
||||
OpDecorate %95 RelaxedPrecision
|
||||
OpDecorate %96 RelaxedPrecision
|
||||
OpDecorate %97 RelaxedPrecision
|
||||
OpDecorate %93 RelaxedPrecision
|
||||
OpDecorate %93 RelaxedPrecision
|
||||
OpDecorate %99 RelaxedPrecision
|
||||
OpDecorate %104 RelaxedPrecision
|
||||
OpDecorate %110 RelaxedPrecision
|
||||
OpDecorate %118 RelaxedPrecision
|
||||
OpDecorate %125 RelaxedPrecision
|
||||
OpDecorate %133 RelaxedPrecision
|
||||
OpDecorate %141 RelaxedPrecision
|
||||
OpDecorate %146 RelaxedPrecision
|
||||
OpDecorate %153 RelaxedPrecision
|
||||
OpDecorate %159 RelaxedPrecision
|
||||
OpDecorate %163 RelaxedPrecision
|
||||
OpDecorate %168 RelaxedPrecision
|
||||
OpDecorate %173 RelaxedPrecision
|
||||
OpDecorate %177 RelaxedPrecision
|
||||
OpDecorate %183 RelaxedPrecision
|
||||
OpDecorate %188 RelaxedPrecision
|
||||
OpDecorate %195 RelaxedPrecision
|
||||
OpDecorate %203 RelaxedPrecision
|
||||
OpDecorate %211 RelaxedPrecision
|
||||
OpDecorate %218 RelaxedPrecision
|
||||
OpDecorate %225 RelaxedPrecision
|
||||
OpDecorate %233 RelaxedPrecision
|
||||
OpDecorate %241 RelaxedPrecision
|
||||
OpDecorate %246 RelaxedPrecision
|
||||
OpDecorate %251 RelaxedPrecision
|
||||
OpDecorate %253 RelaxedPrecision
|
||||
OpDecorate %259 RelaxedPrecision
|
||||
OpDecorate %92 RelaxedPrecision
|
||||
OpDecorate %92 RelaxedPrecision
|
||||
OpDecorate %98 RelaxedPrecision
|
||||
OpDecorate %103 RelaxedPrecision
|
||||
OpDecorate %109 RelaxedPrecision
|
||||
OpDecorate %117 RelaxedPrecision
|
||||
OpDecorate %124 RelaxedPrecision
|
||||
OpDecorate %132 RelaxedPrecision
|
||||
OpDecorate %140 RelaxedPrecision
|
||||
OpDecorate %145 RelaxedPrecision
|
||||
OpDecorate %152 RelaxedPrecision
|
||||
OpDecorate %158 RelaxedPrecision
|
||||
OpDecorate %162 RelaxedPrecision
|
||||
OpDecorate %167 RelaxedPrecision
|
||||
OpDecorate %172 RelaxedPrecision
|
||||
OpDecorate %176 RelaxedPrecision
|
||||
OpDecorate %182 RelaxedPrecision
|
||||
OpDecorate %187 RelaxedPrecision
|
||||
OpDecorate %194 RelaxedPrecision
|
||||
OpDecorate %202 RelaxedPrecision
|
||||
OpDecorate %210 RelaxedPrecision
|
||||
OpDecorate %217 RelaxedPrecision
|
||||
OpDecorate %224 RelaxedPrecision
|
||||
OpDecorate %232 RelaxedPrecision
|
||||
OpDecorate %240 RelaxedPrecision
|
||||
OpDecorate %245 RelaxedPrecision
|
||||
OpDecorate %250 RelaxedPrecision
|
||||
OpDecorate %252 RelaxedPrecision
|
||||
OpDecorate %258 RelaxedPrecision
|
||||
OpDecorate %262 RelaxedPrecision
|
||||
OpDecorate %263 RelaxedPrecision
|
||||
OpDecorate %264 RelaxedPrecision
|
||||
OpDecorate %265 RelaxedPrecision
|
||||
OpDecorate %266 RelaxedPrecision
|
||||
OpDecorate %267 RelaxedPrecision
|
||||
OpDecorate %268 RelaxedPrecision
|
||||
OpDecorate %269 RelaxedPrecision
|
||||
OpDecorate %270 RelaxedPrecision
|
||||
OpDecorate %272 RelaxedPrecision
|
||||
OpDecorate %274 RelaxedPrecision
|
||||
OpDecorate %276 RelaxedPrecision
|
||||
OpDecorate %278 RelaxedPrecision
|
||||
OpDecorate %280 RelaxedPrecision
|
||||
OpDecorate %282 RelaxedPrecision
|
||||
OpDecorate %284 RelaxedPrecision
|
||||
OpDecorate %287 RelaxedPrecision
|
||||
OpDecorate %314 RelaxedPrecision
|
||||
OpDecorate %329 RelaxedPrecision
|
||||
OpDecorate %332 RelaxedPrecision
|
||||
OpDecorate %335 RelaxedPrecision
|
||||
OpDecorate %340 RelaxedPrecision
|
||||
OpDecorate %345 RelaxedPrecision
|
||||
OpDecorate %349 RelaxedPrecision
|
||||
OpDecorate %355 RelaxedPrecision
|
||||
OpDecorate %271 RelaxedPrecision
|
||||
OpDecorate %273 RelaxedPrecision
|
||||
OpDecorate %275 RelaxedPrecision
|
||||
OpDecorate %277 RelaxedPrecision
|
||||
OpDecorate %279 RelaxedPrecision
|
||||
OpDecorate %281 RelaxedPrecision
|
||||
OpDecorate %283 RelaxedPrecision
|
||||
OpDecorate %286 RelaxedPrecision
|
||||
OpDecorate %313 RelaxedPrecision
|
||||
OpDecorate %328 RelaxedPrecision
|
||||
OpDecorate %331 RelaxedPrecision
|
||||
OpDecorate %334 RelaxedPrecision
|
||||
OpDecorate %339 RelaxedPrecision
|
||||
OpDecorate %344 RelaxedPrecision
|
||||
OpDecorate %348 RelaxedPrecision
|
||||
OpDecorate %354 RelaxedPrecision
|
||||
OpDecorate %356 RelaxedPrecision
|
||||
OpDecorate %357 RelaxedPrecision
|
||||
OpDecorate %358 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -140,7 +139,6 @@ OpDecorate %358 RelaxedPrecision
|
||||
%void = OpTypeVoid
|
||||
%15 = OpTypeFunction %void
|
||||
%18 = OpTypeFunction %v4float
|
||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
@ -150,6 +148,7 @@ OpDecorate %358 RelaxedPrecision
|
||||
%_ptr_Function_v2float = OpTypePointer Function %v2float
|
||||
%v3float = OpTypeVector %float 3
|
||||
%_ptr_Function_v3float = OpTypePointer Function %v3float
|
||||
%_ptr_Function_v4float = OpTypePointer Function %v4float
|
||||
%int_1 = OpConstant %int 1
|
||||
%mat2v2float = OpTypeMatrix %v2float 2
|
||||
%_ptr_Function_mat2v2float = OpTypePointer Function %mat2v2float
|
||||
@ -184,7 +183,6 @@ OpReturn
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %18
|
||||
%19 = OpLabel
|
||||
%result = OpVariable %_ptr_Function_v4float Function
|
||||
%h = OpVariable %_ptr_Function_float Function
|
||||
%h2 = OpVariable %_ptr_Function_v2float Function
|
||||
%h3 = OpVariable %_ptr_Function_v3float Function
|
||||
@ -208,351 +206,351 @@ OpFunctionEnd
|
||||
%b3 = OpVariable %_ptr_Function_v3bool Function
|
||||
%b4 = OpVariable %_ptr_Function_v4bool Function
|
||||
%ok = OpVariable %_ptr_Function_bool Function
|
||||
%350 = OpVariable %_ptr_Function_v4float Function
|
||||
%24 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%28 = OpLoad %v4float %24
|
||||
%29 = OpCompositeExtract %float %28 0
|
||||
OpStore %h %29
|
||||
%34 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%35 = OpLoad %v4float %34
|
||||
%36 = OpCompositeExtract %float %35 1
|
||||
%37 = OpCompositeConstruct %v2float %36 %36
|
||||
OpStore %h2 %37
|
||||
%41 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%42 = OpLoad %v4float %41
|
||||
%43 = OpCompositeExtract %float %42 2
|
||||
%44 = OpCompositeConstruct %v3float %43 %43 %43
|
||||
OpStore %h3 %44
|
||||
%46 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%47 = OpLoad %v4float %46
|
||||
%48 = OpCompositeExtract %float %47 3
|
||||
%49 = OpCompositeConstruct %v4float %48 %48 %48 %48
|
||||
OpStore %h4 %49
|
||||
%50 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%51 = OpLoad %v4float %50
|
||||
%52 = OpCompositeExtract %float %51 0
|
||||
%53 = OpAccessChain %_ptr_Function_float %h3 %int_1
|
||||
OpStore %53 %52
|
||||
%55 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%56 = OpLoad %v4float %55
|
||||
%57 = OpCompositeExtract %float %56 1
|
||||
%58 = OpCompositeConstruct %v2float %57 %57
|
||||
%59 = OpLoad %v3float %h3
|
||||
%60 = OpVectorShuffle %v3float %59 %58 3 1 4
|
||||
OpStore %h3 %60
|
||||
%61 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%62 = OpLoad %v4float %61
|
||||
%63 = OpCompositeExtract %float %62 3
|
||||
%64 = OpCompositeConstruct %v4float %63 %63 %63 %63
|
||||
%65 = OpLoad %v4float %h4
|
||||
%66 = OpVectorShuffle %v4float %65 %64 6 7 4 5
|
||||
OpStore %h4 %66
|
||||
%70 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%71 = OpLoad %v4float %70
|
||||
%72 = OpCompositeExtract %float %71 0
|
||||
%75 = OpCompositeConstruct %v2float %72 %float_0
|
||||
%76 = OpCompositeConstruct %v2float %float_0 %72
|
||||
%73 = OpCompositeConstruct %mat2v2float %75 %76
|
||||
OpStore %h2x2 %73
|
||||
%80 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%81 = OpLoad %v4float %80
|
||||
%82 = OpCompositeExtract %float %81 1
|
||||
%84 = OpCompositeConstruct %v3float %82 %float_0 %float_0
|
||||
%85 = OpCompositeConstruct %v3float %float_0 %82 %float_0
|
||||
%86 = OpCompositeConstruct %v3float %float_0 %float_0 %82
|
||||
%83 = OpCompositeConstruct %mat3v3float %84 %85 %86
|
||||
OpStore %h3x3 %83
|
||||
%90 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%91 = OpLoad %v4float %90
|
||||
%92 = OpCompositeExtract %float %91 2
|
||||
%94 = OpCompositeConstruct %v4float %92 %float_0 %float_0 %float_0
|
||||
%95 = OpCompositeConstruct %v4float %float_0 %92 %float_0 %float_0
|
||||
%96 = OpCompositeConstruct %v4float %float_0 %float_0 %92 %float_0
|
||||
%97 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %92
|
||||
%93 = OpCompositeConstruct %mat4v4float %94 %95 %96 %97
|
||||
OpStore %h4x4 %93
|
||||
%98 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%99 = OpLoad %v4float %98
|
||||
%100 = OpCompositeExtract %float %99 2
|
||||
%101 = OpCompositeConstruct %v3float %100 %100 %100
|
||||
%102 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_1
|
||||
OpStore %102 %101
|
||||
%103 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%104 = OpLoad %v4float %103
|
||||
%105 = OpCompositeExtract %float %104 0
|
||||
%107 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_3
|
||||
%108 = OpAccessChain %_ptr_Function_float %107 %int_3
|
||||
OpStore %108 %105
|
||||
%109 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%110 = OpLoad %v4float %109
|
||||
%111 = OpCompositeExtract %float %110 0
|
||||
%113 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
|
||||
%114 = OpAccessChain %_ptr_Function_float %113 %int_0
|
||||
OpStore %114 %111
|
||||
%117 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%118 = OpLoad %v4float %117
|
||||
%119 = OpCompositeExtract %float %118 0
|
||||
%120 = OpConvertFToS %int %119
|
||||
OpStore %i %120
|
||||
%124 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%125 = OpLoad %v4float %124
|
||||
%126 = OpCompositeExtract %float %125 1
|
||||
%127 = OpConvertFToS %int %126
|
||||
%128 = OpCompositeConstruct %v2int %127 %127
|
||||
OpStore %i2 %128
|
||||
%132 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%133 = OpLoad %v4float %132
|
||||
%134 = OpCompositeExtract %float %133 2
|
||||
%135 = OpConvertFToS %int %134
|
||||
%136 = OpCompositeConstruct %v3int %135 %135 %135
|
||||
OpStore %i3 %136
|
||||
%140 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%141 = OpLoad %v4float %140
|
||||
%142 = OpCompositeExtract %float %141 3
|
||||
%143 = OpConvertFToS %int %142
|
||||
%144 = OpCompositeConstruct %v4int %143 %143 %143 %143
|
||||
OpStore %i4 %144
|
||||
%145 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%146 = OpLoad %v4float %145
|
||||
%147 = OpCompositeExtract %float %146 2
|
||||
%148 = OpConvertFToS %int %147
|
||||
%149 = OpCompositeConstruct %v3int %148 %148 %148
|
||||
%150 = OpLoad %v4int %i4
|
||||
%151 = OpVectorShuffle %v4int %150 %149 4 5 6 3
|
||||
OpStore %i4 %151
|
||||
%152 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%153 = OpLoad %v4float %152
|
||||
%154 = OpCompositeExtract %float %153 0
|
||||
%155 = OpConvertFToS %int %154
|
||||
%156 = OpAccessChain %_ptr_Function_int %i2 %int_1
|
||||
OpStore %156 %155
|
||||
%158 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%159 = OpLoad %v4float %158
|
||||
%160 = OpCompositeExtract %float %159 0
|
||||
OpStore %f %160
|
||||
%162 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%163 = OpLoad %v4float %162
|
||||
%164 = OpCompositeExtract %float %163 1
|
||||
%165 = OpCompositeConstruct %v2float %164 %164
|
||||
OpStore %f2 %165
|
||||
%167 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%168 = OpLoad %v4float %167
|
||||
%169 = OpCompositeExtract %float %168 2
|
||||
%170 = OpCompositeConstruct %v3float %169 %169 %169
|
||||
OpStore %f3 %170
|
||||
%172 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%173 = OpLoad %v4float %172
|
||||
%174 = OpCompositeExtract %float %173 3
|
||||
%175 = OpCompositeConstruct %v4float %174 %174 %174 %174
|
||||
OpStore %f4 %175
|
||||
%176 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%177 = OpLoad %v4float %176
|
||||
%178 = OpCompositeExtract %float %177 1
|
||||
%179 = OpCompositeConstruct %v2float %178 %178
|
||||
%180 = OpLoad %v3float %f3
|
||||
%181 = OpVectorShuffle %v3float %180 %179 3 4 2
|
||||
OpStore %f3 %181
|
||||
%182 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%183 = OpLoad %v4float %182
|
||||
%184 = OpCompositeExtract %float %183 0
|
||||
%185 = OpAccessChain %_ptr_Function_float %f2 %int_0
|
||||
OpStore %185 %184
|
||||
%187 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%188 = OpLoad %v4float %187
|
||||
%189 = OpCompositeExtract %float %188 0
|
||||
%191 = OpCompositeConstruct %v2float %189 %float_0
|
||||
%192 = OpCompositeConstruct %v2float %float_0 %189
|
||||
%190 = OpCompositeConstruct %mat2v2float %191 %192
|
||||
OpStore %f2x2 %190
|
||||
%194 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%195 = OpLoad %v4float %194
|
||||
%196 = OpCompositeExtract %float %195 1
|
||||
%198 = OpCompositeConstruct %v3float %196 %float_0 %float_0
|
||||
%199 = OpCompositeConstruct %v3float %float_0 %196 %float_0
|
||||
%200 = OpCompositeConstruct %v3float %float_0 %float_0 %196
|
||||
%197 = OpCompositeConstruct %mat3v3float %198 %199 %200
|
||||
OpStore %f3x3 %197
|
||||
%202 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%203 = OpLoad %v4float %202
|
||||
%204 = OpCompositeExtract %float %203 2
|
||||
%206 = OpCompositeConstruct %v4float %204 %float_0 %float_0 %float_0
|
||||
%207 = OpCompositeConstruct %v4float %float_0 %204 %float_0 %float_0
|
||||
%208 = OpCompositeConstruct %v4float %float_0 %float_0 %204 %float_0
|
||||
%209 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %204
|
||||
%205 = OpCompositeConstruct %mat4v4float %206 %207 %208 %209
|
||||
OpStore %f4x4 %205
|
||||
%210 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%211 = OpLoad %v4float %210
|
||||
%212 = OpCompositeExtract %float %211 0
|
||||
%213 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0
|
||||
%214 = OpAccessChain %_ptr_Function_float %213 %int_0
|
||||
OpStore %214 %212
|
||||
%217 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%218 = OpLoad %v4float %217
|
||||
%219 = OpCompositeExtract %float %218 0
|
||||
%220 = OpFUnordNotEqual %bool %219 %float_0
|
||||
OpStore %b %220
|
||||
%224 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%225 = OpLoad %v4float %224
|
||||
%226 = OpCompositeExtract %float %225 1
|
||||
%227 = OpFUnordNotEqual %bool %226 %float_0
|
||||
%228 = OpCompositeConstruct %v2bool %227 %227
|
||||
OpStore %b2 %228
|
||||
%232 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%233 = OpLoad %v4float %232
|
||||
%234 = OpCompositeExtract %float %233 2
|
||||
%235 = OpFUnordNotEqual %bool %234 %float_0
|
||||
%236 = OpCompositeConstruct %v3bool %235 %235 %235
|
||||
OpStore %b3 %236
|
||||
%240 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%241 = OpLoad %v4float %240
|
||||
%242 = OpCompositeExtract %float %241 3
|
||||
%243 = OpFUnordNotEqual %bool %242 %float_0
|
||||
%244 = OpCompositeConstruct %v4bool %243 %243 %243 %243
|
||||
OpStore %b4 %244
|
||||
%245 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%246 = OpLoad %v4float %245
|
||||
%247 = OpCompositeExtract %float %246 1
|
||||
%248 = OpFUnordNotEqual %bool %247 %float_0
|
||||
%249 = OpCompositeConstruct %v2bool %248 %248
|
||||
%250 = OpLoad %v4bool %b4
|
||||
%251 = OpVectorShuffle %v4bool %250 %249 4 1 2 5
|
||||
OpStore %b4 %251
|
||||
%252 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%253 = OpLoad %v4float %252
|
||||
%254 = OpCompositeExtract %float %253 0
|
||||
%255 = OpFUnordNotEqual %bool %254 %float_0
|
||||
%256 = OpAccessChain %_ptr_Function_bool %b3 %int_2
|
||||
OpStore %256 %255
|
||||
%349 = OpVariable %_ptr_Function_v4float Function
|
||||
%22 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%26 = OpLoad %v4float %22
|
||||
%27 = OpCompositeExtract %float %26 0
|
||||
OpStore %h %27
|
||||
%32 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%33 = OpLoad %v4float %32
|
||||
%34 = OpCompositeExtract %float %33 1
|
||||
%35 = OpCompositeConstruct %v2float %34 %34
|
||||
OpStore %h2 %35
|
||||
%39 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%40 = OpLoad %v4float %39
|
||||
%41 = OpCompositeExtract %float %40 2
|
||||
%42 = OpCompositeConstruct %v3float %41 %41 %41
|
||||
OpStore %h3 %42
|
||||
%45 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%46 = OpLoad %v4float %45
|
||||
%47 = OpCompositeExtract %float %46 3
|
||||
%48 = OpCompositeConstruct %v4float %47 %47 %47 %47
|
||||
OpStore %h4 %48
|
||||
%49 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%50 = OpLoad %v4float %49
|
||||
%51 = OpCompositeExtract %float %50 0
|
||||
%52 = OpAccessChain %_ptr_Function_float %h3 %int_1
|
||||
OpStore %52 %51
|
||||
%54 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%55 = OpLoad %v4float %54
|
||||
%56 = OpCompositeExtract %float %55 1
|
||||
%57 = OpCompositeConstruct %v2float %56 %56
|
||||
%58 = OpLoad %v3float %h3
|
||||
%59 = OpVectorShuffle %v3float %58 %57 3 1 4
|
||||
OpStore %h3 %59
|
||||
%60 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%61 = OpLoad %v4float %60
|
||||
%62 = OpCompositeExtract %float %61 3
|
||||
%63 = OpCompositeConstruct %v4float %62 %62 %62 %62
|
||||
%64 = OpLoad %v4float %h4
|
||||
%65 = OpVectorShuffle %v4float %64 %63 6 7 4 5
|
||||
OpStore %h4 %65
|
||||
%69 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%70 = OpLoad %v4float %69
|
||||
%71 = OpCompositeExtract %float %70 0
|
||||
%74 = OpCompositeConstruct %v2float %71 %float_0
|
||||
%75 = OpCompositeConstruct %v2float %float_0 %71
|
||||
%72 = OpCompositeConstruct %mat2v2float %74 %75
|
||||
OpStore %h2x2 %72
|
||||
%79 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%80 = OpLoad %v4float %79
|
||||
%81 = OpCompositeExtract %float %80 1
|
||||
%83 = OpCompositeConstruct %v3float %81 %float_0 %float_0
|
||||
%84 = OpCompositeConstruct %v3float %float_0 %81 %float_0
|
||||
%85 = OpCompositeConstruct %v3float %float_0 %float_0 %81
|
||||
%82 = OpCompositeConstruct %mat3v3float %83 %84 %85
|
||||
OpStore %h3x3 %82
|
||||
%89 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%90 = OpLoad %v4float %89
|
||||
%91 = OpCompositeExtract %float %90 2
|
||||
%93 = OpCompositeConstruct %v4float %91 %float_0 %float_0 %float_0
|
||||
%94 = OpCompositeConstruct %v4float %float_0 %91 %float_0 %float_0
|
||||
%95 = OpCompositeConstruct %v4float %float_0 %float_0 %91 %float_0
|
||||
%96 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %91
|
||||
%92 = OpCompositeConstruct %mat4v4float %93 %94 %95 %96
|
||||
OpStore %h4x4 %92
|
||||
%97 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%98 = OpLoad %v4float %97
|
||||
%99 = OpCompositeExtract %float %98 2
|
||||
%100 = OpCompositeConstruct %v3float %99 %99 %99
|
||||
%101 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_1
|
||||
OpStore %101 %100
|
||||
%102 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%103 = OpLoad %v4float %102
|
||||
%104 = OpCompositeExtract %float %103 0
|
||||
%106 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_3
|
||||
%107 = OpAccessChain %_ptr_Function_float %106 %int_3
|
||||
OpStore %107 %104
|
||||
%108 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%109 = OpLoad %v4float %108
|
||||
%110 = OpCompositeExtract %float %109 0
|
||||
%112 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
|
||||
%113 = OpAccessChain %_ptr_Function_float %112 %int_0
|
||||
OpStore %113 %110
|
||||
%116 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%117 = OpLoad %v4float %116
|
||||
%118 = OpCompositeExtract %float %117 0
|
||||
%119 = OpConvertFToS %int %118
|
||||
OpStore %i %119
|
||||
%123 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%124 = OpLoad %v4float %123
|
||||
%125 = OpCompositeExtract %float %124 1
|
||||
%126 = OpConvertFToS %int %125
|
||||
%127 = OpCompositeConstruct %v2int %126 %126
|
||||
OpStore %i2 %127
|
||||
%131 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%132 = OpLoad %v4float %131
|
||||
%133 = OpCompositeExtract %float %132 2
|
||||
%134 = OpConvertFToS %int %133
|
||||
%135 = OpCompositeConstruct %v3int %134 %134 %134
|
||||
OpStore %i3 %135
|
||||
%139 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%140 = OpLoad %v4float %139
|
||||
%141 = OpCompositeExtract %float %140 3
|
||||
%142 = OpConvertFToS %int %141
|
||||
%143 = OpCompositeConstruct %v4int %142 %142 %142 %142
|
||||
OpStore %i4 %143
|
||||
%144 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%145 = OpLoad %v4float %144
|
||||
%146 = OpCompositeExtract %float %145 2
|
||||
%147 = OpConvertFToS %int %146
|
||||
%148 = OpCompositeConstruct %v3int %147 %147 %147
|
||||
%149 = OpLoad %v4int %i4
|
||||
%150 = OpVectorShuffle %v4int %149 %148 4 5 6 3
|
||||
OpStore %i4 %150
|
||||
%151 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%152 = OpLoad %v4float %151
|
||||
%153 = OpCompositeExtract %float %152 0
|
||||
%154 = OpConvertFToS %int %153
|
||||
%155 = OpAccessChain %_ptr_Function_int %i2 %int_1
|
||||
OpStore %155 %154
|
||||
%157 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%158 = OpLoad %v4float %157
|
||||
%159 = OpCompositeExtract %float %158 0
|
||||
OpStore %f %159
|
||||
%161 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%162 = OpLoad %v4float %161
|
||||
%163 = OpCompositeExtract %float %162 1
|
||||
%164 = OpCompositeConstruct %v2float %163 %163
|
||||
OpStore %f2 %164
|
||||
%166 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%167 = OpLoad %v4float %166
|
||||
%168 = OpCompositeExtract %float %167 2
|
||||
%169 = OpCompositeConstruct %v3float %168 %168 %168
|
||||
OpStore %f3 %169
|
||||
%171 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%172 = OpLoad %v4float %171
|
||||
%173 = OpCompositeExtract %float %172 3
|
||||
%174 = OpCompositeConstruct %v4float %173 %173 %173 %173
|
||||
OpStore %f4 %174
|
||||
%175 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%176 = OpLoad %v4float %175
|
||||
%177 = OpCompositeExtract %float %176 1
|
||||
%178 = OpCompositeConstruct %v2float %177 %177
|
||||
%179 = OpLoad %v3float %f3
|
||||
%180 = OpVectorShuffle %v3float %179 %178 3 4 2
|
||||
OpStore %f3 %180
|
||||
%181 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%182 = OpLoad %v4float %181
|
||||
%183 = OpCompositeExtract %float %182 0
|
||||
%184 = OpAccessChain %_ptr_Function_float %f2 %int_0
|
||||
OpStore %184 %183
|
||||
%186 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%187 = OpLoad %v4float %186
|
||||
%188 = OpCompositeExtract %float %187 0
|
||||
%190 = OpCompositeConstruct %v2float %188 %float_0
|
||||
%191 = OpCompositeConstruct %v2float %float_0 %188
|
||||
%189 = OpCompositeConstruct %mat2v2float %190 %191
|
||||
OpStore %f2x2 %189
|
||||
%193 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%194 = OpLoad %v4float %193
|
||||
%195 = OpCompositeExtract %float %194 1
|
||||
%197 = OpCompositeConstruct %v3float %195 %float_0 %float_0
|
||||
%198 = OpCompositeConstruct %v3float %float_0 %195 %float_0
|
||||
%199 = OpCompositeConstruct %v3float %float_0 %float_0 %195
|
||||
%196 = OpCompositeConstruct %mat3v3float %197 %198 %199
|
||||
OpStore %f3x3 %196
|
||||
%201 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%202 = OpLoad %v4float %201
|
||||
%203 = OpCompositeExtract %float %202 2
|
||||
%205 = OpCompositeConstruct %v4float %203 %float_0 %float_0 %float_0
|
||||
%206 = OpCompositeConstruct %v4float %float_0 %203 %float_0 %float_0
|
||||
%207 = OpCompositeConstruct %v4float %float_0 %float_0 %203 %float_0
|
||||
%208 = OpCompositeConstruct %v4float %float_0 %float_0 %float_0 %203
|
||||
%204 = OpCompositeConstruct %mat4v4float %205 %206 %207 %208
|
||||
OpStore %f4x4 %204
|
||||
%209 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%210 = OpLoad %v4float %209
|
||||
%211 = OpCompositeExtract %float %210 0
|
||||
%212 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0
|
||||
%213 = OpAccessChain %_ptr_Function_float %212 %int_0
|
||||
OpStore %213 %211
|
||||
%216 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%217 = OpLoad %v4float %216
|
||||
%218 = OpCompositeExtract %float %217 0
|
||||
%219 = OpFUnordNotEqual %bool %218 %float_0
|
||||
OpStore %b %219
|
||||
%223 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%224 = OpLoad %v4float %223
|
||||
%225 = OpCompositeExtract %float %224 1
|
||||
%226 = OpFUnordNotEqual %bool %225 %float_0
|
||||
%227 = OpCompositeConstruct %v2bool %226 %226
|
||||
OpStore %b2 %227
|
||||
%231 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%232 = OpLoad %v4float %231
|
||||
%233 = OpCompositeExtract %float %232 2
|
||||
%234 = OpFUnordNotEqual %bool %233 %float_0
|
||||
%235 = OpCompositeConstruct %v3bool %234 %234 %234
|
||||
OpStore %b3 %235
|
||||
%239 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%240 = OpLoad %v4float %239
|
||||
%241 = OpCompositeExtract %float %240 3
|
||||
%242 = OpFUnordNotEqual %bool %241 %float_0
|
||||
%243 = OpCompositeConstruct %v4bool %242 %242 %242 %242
|
||||
OpStore %b4 %243
|
||||
%244 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%245 = OpLoad %v4float %244
|
||||
%246 = OpCompositeExtract %float %245 1
|
||||
%247 = OpFUnordNotEqual %bool %246 %float_0
|
||||
%248 = OpCompositeConstruct %v2bool %247 %247
|
||||
%249 = OpLoad %v4bool %b4
|
||||
%250 = OpVectorShuffle %v4bool %249 %248 4 1 2 5
|
||||
OpStore %b4 %250
|
||||
%251 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%252 = OpLoad %v4float %251
|
||||
%253 = OpCompositeExtract %float %252 0
|
||||
%254 = OpFUnordNotEqual %bool %253 %float_0
|
||||
%255 = OpAccessChain %_ptr_Function_bool %b3 %int_2
|
||||
OpStore %255 %254
|
||||
OpStore %ok %true
|
||||
%259 = OpLoad %bool %ok
|
||||
OpSelectionMerge %261 None
|
||||
OpBranchConditional %259 %260 %261
|
||||
%258 = OpLoad %bool %ok
|
||||
OpSelectionMerge %260 None
|
||||
OpBranchConditional %258 %259 %260
|
||||
%259 = OpLabel
|
||||
%262 = OpLoad %float %h
|
||||
%263 = OpLoad %v2float %h2
|
||||
%264 = OpCompositeExtract %float %263 0
|
||||
%265 = OpFMul %float %262 %264
|
||||
%266 = OpLoad %v3float %h3
|
||||
%267 = OpCompositeExtract %float %266 0
|
||||
%268 = OpFMul %float %265 %267
|
||||
%269 = OpLoad %v4float %h4
|
||||
%270 = OpCompositeExtract %float %269 0
|
||||
%271 = OpFMul %float %268 %270
|
||||
%272 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
|
||||
%273 = OpLoad %v2float %272
|
||||
%274 = OpCompositeExtract %float %273 0
|
||||
%275 = OpFMul %float %271 %274
|
||||
%276 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_0
|
||||
%277 = OpLoad %v3float %276
|
||||
%278 = OpCompositeExtract %float %277 0
|
||||
%279 = OpFMul %float %275 %278
|
||||
%280 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_0
|
||||
%281 = OpLoad %v4float %280
|
||||
%282 = OpCompositeExtract %float %281 0
|
||||
%283 = OpFMul %float %279 %282
|
||||
%284 = OpFOrdEqual %bool %float_1 %283
|
||||
OpBranch %260
|
||||
%260 = OpLabel
|
||||
%263 = OpLoad %float %h
|
||||
%264 = OpLoad %v2float %h2
|
||||
%265 = OpCompositeExtract %float %264 0
|
||||
%266 = OpFMul %float %263 %265
|
||||
%267 = OpLoad %v3float %h3
|
||||
%268 = OpCompositeExtract %float %267 0
|
||||
%269 = OpFMul %float %266 %268
|
||||
%270 = OpLoad %v4float %h4
|
||||
%271 = OpCompositeExtract %float %270 0
|
||||
%272 = OpFMul %float %269 %271
|
||||
%273 = OpAccessChain %_ptr_Function_v2float %h2x2 %int_0
|
||||
%274 = OpLoad %v2float %273
|
||||
%275 = OpCompositeExtract %float %274 0
|
||||
%276 = OpFMul %float %272 %275
|
||||
%277 = OpAccessChain %_ptr_Function_v3float %h3x3 %int_0
|
||||
%278 = OpLoad %v3float %277
|
||||
%279 = OpCompositeExtract %float %278 0
|
||||
%280 = OpFMul %float %276 %279
|
||||
%281 = OpAccessChain %_ptr_Function_v4float %h4x4 %int_0
|
||||
%282 = OpLoad %v4float %281
|
||||
%283 = OpCompositeExtract %float %282 0
|
||||
%284 = OpFMul %float %280 %283
|
||||
%285 = OpFOrdEqual %bool %float_1 %284
|
||||
OpBranch %261
|
||||
%261 = OpLabel
|
||||
%286 = OpPhi %bool %false %19 %285 %260
|
||||
OpStore %ok %286
|
||||
%287 = OpLoad %bool %ok
|
||||
OpSelectionMerge %289 None
|
||||
OpBranchConditional %287 %288 %289
|
||||
%285 = OpPhi %bool %false %19 %284 %259
|
||||
OpStore %ok %285
|
||||
%286 = OpLoad %bool %ok
|
||||
OpSelectionMerge %288 None
|
||||
OpBranchConditional %286 %287 %288
|
||||
%287 = OpLabel
|
||||
%289 = OpLoad %float %f
|
||||
%290 = OpLoad %v2float %f2
|
||||
%291 = OpCompositeExtract %float %290 0
|
||||
%292 = OpFMul %float %289 %291
|
||||
%293 = OpLoad %v3float %f3
|
||||
%294 = OpCompositeExtract %float %293 0
|
||||
%295 = OpFMul %float %292 %294
|
||||
%296 = OpLoad %v4float %f4
|
||||
%297 = OpCompositeExtract %float %296 0
|
||||
%298 = OpFMul %float %295 %297
|
||||
%299 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0
|
||||
%300 = OpLoad %v2float %299
|
||||
%301 = OpCompositeExtract %float %300 0
|
||||
%302 = OpFMul %float %298 %301
|
||||
%303 = OpAccessChain %_ptr_Function_v3float %f3x3 %int_0
|
||||
%304 = OpLoad %v3float %303
|
||||
%305 = OpCompositeExtract %float %304 0
|
||||
%306 = OpFMul %float %302 %305
|
||||
%307 = OpAccessChain %_ptr_Function_v4float %f4x4 %int_0
|
||||
%308 = OpLoad %v4float %307
|
||||
%309 = OpCompositeExtract %float %308 0
|
||||
%310 = OpFMul %float %306 %309
|
||||
%311 = OpFOrdEqual %bool %float_1 %310
|
||||
OpBranch %288
|
||||
%288 = OpLabel
|
||||
%290 = OpLoad %float %f
|
||||
%291 = OpLoad %v2float %f2
|
||||
%292 = OpCompositeExtract %float %291 0
|
||||
%293 = OpFMul %float %290 %292
|
||||
%294 = OpLoad %v3float %f3
|
||||
%295 = OpCompositeExtract %float %294 0
|
||||
%296 = OpFMul %float %293 %295
|
||||
%297 = OpLoad %v4float %f4
|
||||
%298 = OpCompositeExtract %float %297 0
|
||||
%299 = OpFMul %float %296 %298
|
||||
%300 = OpAccessChain %_ptr_Function_v2float %f2x2 %int_0
|
||||
%301 = OpLoad %v2float %300
|
||||
%302 = OpCompositeExtract %float %301 0
|
||||
%303 = OpFMul %float %299 %302
|
||||
%304 = OpAccessChain %_ptr_Function_v3float %f3x3 %int_0
|
||||
%305 = OpLoad %v3float %304
|
||||
%306 = OpCompositeExtract %float %305 0
|
||||
%307 = OpFMul %float %303 %306
|
||||
%308 = OpAccessChain %_ptr_Function_v4float %f4x4 %int_0
|
||||
%309 = OpLoad %v4float %308
|
||||
%310 = OpCompositeExtract %float %309 0
|
||||
%311 = OpFMul %float %307 %310
|
||||
%312 = OpFOrdEqual %bool %float_1 %311
|
||||
OpBranch %289
|
||||
%289 = OpLabel
|
||||
%313 = OpPhi %bool %false %261 %312 %288
|
||||
OpStore %ok %313
|
||||
%314 = OpLoad %bool %ok
|
||||
OpSelectionMerge %316 None
|
||||
OpBranchConditional %314 %315 %316
|
||||
%312 = OpPhi %bool %false %260 %311 %287
|
||||
OpStore %ok %312
|
||||
%313 = OpLoad %bool %ok
|
||||
OpSelectionMerge %315 None
|
||||
OpBranchConditional %313 %314 %315
|
||||
%314 = OpLabel
|
||||
%316 = OpLoad %int %i
|
||||
%317 = OpLoad %v2int %i2
|
||||
%318 = OpCompositeExtract %int %317 0
|
||||
%319 = OpIMul %int %316 %318
|
||||
%320 = OpLoad %v3int %i3
|
||||
%321 = OpCompositeExtract %int %320 0
|
||||
%322 = OpIMul %int %319 %321
|
||||
%323 = OpLoad %v4int %i4
|
||||
%324 = OpCompositeExtract %int %323 0
|
||||
%325 = OpIMul %int %322 %324
|
||||
%326 = OpIEqual %bool %int_1 %325
|
||||
OpBranch %315
|
||||
%315 = OpLabel
|
||||
%317 = OpLoad %int %i
|
||||
%318 = OpLoad %v2int %i2
|
||||
%319 = OpCompositeExtract %int %318 0
|
||||
%320 = OpIMul %int %317 %319
|
||||
%321 = OpLoad %v3int %i3
|
||||
%322 = OpCompositeExtract %int %321 0
|
||||
%323 = OpIMul %int %320 %322
|
||||
%324 = OpLoad %v4int %i4
|
||||
%325 = OpCompositeExtract %int %324 0
|
||||
%326 = OpIMul %int %323 %325
|
||||
%327 = OpIEqual %bool %int_1 %326
|
||||
OpBranch %316
|
||||
%316 = OpLabel
|
||||
%328 = OpPhi %bool %false %289 %327 %315
|
||||
OpStore %ok %328
|
||||
%329 = OpLoad %bool %ok
|
||||
OpSelectionMerge %331 None
|
||||
OpBranchConditional %329 %330 %331
|
||||
%330 = OpLabel
|
||||
%332 = OpLoad %bool %b
|
||||
OpSelectionMerge %334 None
|
||||
OpBranchConditional %332 %333 %334
|
||||
%327 = OpPhi %bool %false %288 %326 %314
|
||||
OpStore %ok %327
|
||||
%328 = OpLoad %bool %ok
|
||||
OpSelectionMerge %330 None
|
||||
OpBranchConditional %328 %329 %330
|
||||
%329 = OpLabel
|
||||
%331 = OpLoad %bool %b
|
||||
OpSelectionMerge %333 None
|
||||
OpBranchConditional %331 %332 %333
|
||||
%332 = OpLabel
|
||||
%334 = OpLoad %v2bool %b2
|
||||
%335 = OpCompositeExtract %bool %334 0
|
||||
OpBranch %333
|
||||
%333 = OpLabel
|
||||
%335 = OpLoad %v2bool %b2
|
||||
%336 = OpCompositeExtract %bool %335 0
|
||||
OpBranch %334
|
||||
%334 = OpLabel
|
||||
%337 = OpPhi %bool %false %330 %336 %333
|
||||
OpSelectionMerge %339 None
|
||||
OpBranchConditional %337 %338 %339
|
||||
%336 = OpPhi %bool %false %329 %335 %332
|
||||
OpSelectionMerge %338 None
|
||||
OpBranchConditional %336 %337 %338
|
||||
%337 = OpLabel
|
||||
%339 = OpLoad %v3bool %b3
|
||||
%340 = OpCompositeExtract %bool %339 0
|
||||
OpBranch %338
|
||||
%338 = OpLabel
|
||||
%340 = OpLoad %v3bool %b3
|
||||
%341 = OpCompositeExtract %bool %340 0
|
||||
OpBranch %339
|
||||
%339 = OpLabel
|
||||
%342 = OpPhi %bool %false %334 %341 %338
|
||||
OpSelectionMerge %344 None
|
||||
OpBranchConditional %342 %343 %344
|
||||
%341 = OpPhi %bool %false %333 %340 %337
|
||||
OpSelectionMerge %343 None
|
||||
OpBranchConditional %341 %342 %343
|
||||
%342 = OpLabel
|
||||
%344 = OpLoad %v4bool %b4
|
||||
%345 = OpCompositeExtract %bool %344 0
|
||||
OpBranch %343
|
||||
%343 = OpLabel
|
||||
%345 = OpLoad %v4bool %b4
|
||||
%346 = OpCompositeExtract %bool %345 0
|
||||
OpBranch %344
|
||||
%344 = OpLabel
|
||||
%347 = OpPhi %bool %false %339 %346 %343
|
||||
OpBranch %331
|
||||
%331 = OpLabel
|
||||
%348 = OpPhi %bool %false %316 %347 %344
|
||||
OpStore %ok %348
|
||||
%349 = OpLoad %bool %ok
|
||||
OpSelectionMerge %353 None
|
||||
OpBranchConditional %349 %351 %352
|
||||
%346 = OpPhi %bool %false %338 %345 %342
|
||||
OpBranch %330
|
||||
%330 = OpLabel
|
||||
%347 = OpPhi %bool %false %315 %346 %343
|
||||
OpStore %ok %347
|
||||
%348 = OpLoad %bool %ok
|
||||
OpSelectionMerge %352 None
|
||||
OpBranchConditional %348 %350 %351
|
||||
%350 = OpLabel
|
||||
%353 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%354 = OpLoad %v4float %353
|
||||
OpStore %349 %354
|
||||
OpBranch %352
|
||||
%351 = OpLabel
|
||||
%354 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%355 = OpLoad %v4float %354
|
||||
OpStore %350 %355
|
||||
OpBranch %353
|
||||
%355 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%356 = OpLoad %v4float %355
|
||||
OpStore %349 %356
|
||||
OpBranch %352
|
||||
%352 = OpLabel
|
||||
%356 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%357 = OpLoad %v4float %356
|
||||
OpStore %350 %357
|
||||
OpBranch %353
|
||||
%353 = OpLabel
|
||||
%358 = OpLoad %v4float %350
|
||||
OpReturnValue %358
|
||||
%357 = OpLoad %v4float %349
|
||||
OpReturnValue %357
|
||||
OpFunctionEnd
|
||||
|
@ -4,7 +4,6 @@ uniform vec4 colorGreen;
|
||||
uniform vec4 colorRed;
|
||||
uniform vec4 colorWhite;
|
||||
vec4 main() {
|
||||
vec4 result;
|
||||
float h;
|
||||
h = colorWhite.x;
|
||||
false;
|
||||
|
@ -15,7 +15,6 @@ struct Outputs {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
float4 result;
|
||||
float h;
|
||||
h = _uniforms.colorWhite.x;
|
||||
false;
|
||||
|
@ -5,7 +5,6 @@ OpEntryPoint Fragment %main "main" %sk_Clockwise
|
||||
OpExecutionMode %main OriginUpperLeft
|
||||
OpName %sk_Clockwise "sk_Clockwise"
|
||||
OpName %main "main"
|
||||
OpName %x "x"
|
||||
OpDecorate %sk_Clockwise RelaxedPrecision
|
||||
OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
||||
%bool = OpTypeBool
|
||||
@ -13,10 +12,7 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
||||
%sk_Clockwise = OpVariable %_ptr_Input_bool Input
|
||||
%void = OpTypeVoid
|
||||
%7 = OpTypeFunction %void
|
||||
%int = OpTypeInt 32 1
|
||||
%_ptr_Function_int = OpTypePointer Function %int
|
||||
%main = OpFunction %void None %7
|
||||
%8 = OpLabel
|
||||
%x = OpVariable %_ptr_Function_int Function
|
||||
OpReturn
|
||||
OpFunctionEnd
|
||||
|
@ -1,4 +1,3 @@
|
||||
|
||||
void main() {
|
||||
int x;
|
||||
}
|
||||
|
@ -9,6 +9,5 @@ struct Outputs {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
int x;
|
||||
return _out;
|
||||
}
|
||||
|
@ -11,8 +11,6 @@ OpMemberName %_UniformBuffer 1 "colorGreen"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %main "main"
|
||||
OpName %result "result"
|
||||
OpName %x "x"
|
||||
OpName %y "y"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
OpDecorate %sk_FragColor Location 0
|
||||
OpDecorate %sk_FragColor Index 0
|
||||
@ -26,8 +24,8 @@ OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %10 Binding 0
|
||||
OpDecorate %10 DescriptorSet 0
|
||||
OpDecorate %26 RelaxedPrecision
|
||||
OpDecorate %34 RelaxedPrecision
|
||||
OpDecorate %35 RelaxedPrecision
|
||||
OpDecorate %29 RelaxedPrecision
|
||||
OpDecorate %30 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -45,9 +43,6 @@ OpDecorate %35 RelaxedPrecision
|
||||
%_ptr_Uniform_v4float = OpTypePointer Uniform %v4float
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%float_5 = OpConstant %float 5
|
||||
%float_10 = OpConstant %float 10
|
||||
%int_1 = OpConstant %int 1
|
||||
%_entrypoint = OpFunction %void None %15
|
||||
%16 = OpLabel
|
||||
@ -58,16 +53,12 @@ OpFunctionEnd
|
||||
%main = OpFunction %v4float None %18
|
||||
%19 = OpLabel
|
||||
%result = OpVariable %_ptr_Function_v4float Function
|
||||
%x = OpVariable %_ptr_Function_float Function
|
||||
%y = OpVariable %_ptr_Function_float Function
|
||||
%22 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%26 = OpLoad %v4float %22
|
||||
OpStore %result %26
|
||||
OpStore %x %float_5
|
||||
OpStore %y %float_10
|
||||
%32 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%34 = OpLoad %v4float %32
|
||||
OpStore %result %34
|
||||
%35 = OpLoad %v4float %result
|
||||
OpReturnValue %35
|
||||
%27 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%29 = OpLoad %v4float %27
|
||||
OpStore %result %29
|
||||
%30 = OpLoad %v4float %result
|
||||
OpReturnValue %30
|
||||
OpFunctionEnd
|
||||
|
@ -4,8 +4,6 @@ uniform vec4 colorRed;
|
||||
uniform vec4 colorGreen;
|
||||
vec4 main() {
|
||||
vec4 result = colorRed;
|
||||
const float x = 5.0;
|
||||
const float y = 10.0;
|
||||
{
|
||||
result = colorGreen;
|
||||
}
|
||||
|
@ -15,8 +15,6 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _unifo
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
float4 result = _uniforms.colorRed;
|
||||
const float x = 5.0;
|
||||
const float y = 10.0;
|
||||
{
|
||||
result = _uniforms.colorGreen;
|
||||
}
|
||||
|
@ -17,10 +17,6 @@ OpName %_2_y "_2_y"
|
||||
OpName %_3_z "_3_z"
|
||||
OpName %_4_w "_4_w"
|
||||
OpName %a "a"
|
||||
OpName %_5_ZERO "_5_ZERO"
|
||||
OpName %_6_ONE "_6_ONE"
|
||||
OpName %_7_TWO "_7_TWO"
|
||||
OpName %_8_THREE "_8_THREE"
|
||||
OpName %_9_x "_9_x"
|
||||
OpName %_10_y "_10_y"
|
||||
OpName %_11_z "_11_z"
|
||||
@ -55,28 +51,28 @@ OpDecorate %41 RelaxedPrecision
|
||||
OpDecorate %42 RelaxedPrecision
|
||||
OpDecorate %43 RelaxedPrecision
|
||||
OpDecorate %44 RelaxedPrecision
|
||||
OpDecorate %48 RelaxedPrecision
|
||||
OpDecorate %52 RelaxedPrecision
|
||||
OpDecorate %56 RelaxedPrecision
|
||||
OpDecorate %60 RelaxedPrecision
|
||||
OpDecorate %63 RelaxedPrecision
|
||||
OpDecorate %64 RelaxedPrecision
|
||||
OpDecorate %68 RelaxedPrecision
|
||||
OpDecorate %71 RelaxedPrecision
|
||||
OpDecorate %72 RelaxedPrecision
|
||||
OpDecorate %73 RelaxedPrecision
|
||||
OpDecorate %74 RelaxedPrecision
|
||||
OpDecorate %83 RelaxedPrecision
|
||||
OpDecorate %86 RelaxedPrecision
|
||||
OpDecorate %65 RelaxedPrecision
|
||||
OpDecorate %66 RelaxedPrecision
|
||||
OpDecorate %75 RelaxedPrecision
|
||||
OpDecorate %78 RelaxedPrecision
|
||||
OpDecorate %81 RelaxedPrecision
|
||||
OpDecorate %84 RelaxedPrecision
|
||||
OpDecorate %87 RelaxedPrecision
|
||||
OpDecorate %88 RelaxedPrecision
|
||||
OpDecorate %89 RelaxedPrecision
|
||||
OpDecorate %92 RelaxedPrecision
|
||||
OpDecorate %95 RelaxedPrecision
|
||||
OpDecorate %96 RelaxedPrecision
|
||||
OpDecorate %97 RelaxedPrecision
|
||||
OpDecorate %98 RelaxedPrecision
|
||||
OpDecorate %101 RelaxedPrecision
|
||||
OpDecorate %111 RelaxedPrecision
|
||||
OpDecorate %117 RelaxedPrecision
|
||||
OpDecorate %126 RelaxedPrecision
|
||||
OpDecorate %128 RelaxedPrecision
|
||||
OpDecorate %129 RelaxedPrecision
|
||||
OpDecorate %90 RelaxedPrecision
|
||||
OpDecorate %93 RelaxedPrecision
|
||||
OpDecorate %103 RelaxedPrecision
|
||||
OpDecorate %109 RelaxedPrecision
|
||||
OpDecorate %119 RelaxedPrecision
|
||||
OpDecorate %122 RelaxedPrecision
|
||||
OpDecorate %123 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -95,21 +91,19 @@ OpDecorate %129 RelaxedPrecision
|
||||
%int = OpTypeInt 32 1
|
||||
%int_0 = OpConstant %int 0
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%_ptr_Function_int = OpTypePointer Function %int
|
||||
%int_1 = OpConstant %int 1
|
||||
%int_2 = OpConstant %int 2
|
||||
%int_3 = OpConstant %int 3
|
||||
%float_0 = OpConstant %float 0
|
||||
%float_1 = OpConstant %float 1
|
||||
%float_2 = OpConstant %float 2
|
||||
%float_3 = OpConstant %float 3
|
||||
%81 = OpConstantComposite %v4float %float_0 %float_1 %float_2 %float_3
|
||||
%73 = OpConstantComposite %v4float %float_0 %float_1 %float_2 %float_3
|
||||
%false = OpConstantFalse %bool
|
||||
%float_n1_25 = OpConstant %float -1.25
|
||||
%float_0_75 = OpConstant %float 0.75
|
||||
%float_2_25 = OpConstant %float 2.25
|
||||
%105 = OpConstantComposite %v4float %float_n1_25 %float_0 %float_0_75 %float_2_25
|
||||
%97 = OpConstantComposite %v4float %float_n1_25 %float_0 %float_0_75 %float_2_25
|
||||
%v4bool = OpTypeVector %bool 4
|
||||
%int_1 = OpConstant %int 1
|
||||
%int_2 = OpConstant %int 2
|
||||
%_entrypoint = OpFunction %void None %15
|
||||
%16 = OpLabel
|
||||
%17 = OpFunctionCall %v4float %main
|
||||
@ -124,10 +118,6 @@ OpFunctionEnd
|
||||
%_3_z = OpVariable %_ptr_Function_float Function
|
||||
%_4_w = OpVariable %_ptr_Function_float Function
|
||||
%a = OpVariable %_ptr_Function_v4float Function
|
||||
%_5_ZERO = OpVariable %_ptr_Function_int Function
|
||||
%_6_ONE = OpVariable %_ptr_Function_int Function
|
||||
%_7_TWO = OpVariable %_ptr_Function_int Function
|
||||
%_8_THREE = OpVariable %_ptr_Function_int Function
|
||||
%_9_x = OpVariable %_ptr_Function_float Function
|
||||
%_10_y = OpVariable %_ptr_Function_float Function
|
||||
%_11_z = OpVariable %_ptr_Function_float Function
|
||||
@ -139,7 +129,7 @@ OpFunctionEnd
|
||||
%_16_z = OpVariable %_ptr_Function_float Function
|
||||
%_17_w = OpVariable %_ptr_Function_float Function
|
||||
%c = OpVariable %_ptr_Function_v4float Function
|
||||
%121 = OpVariable %_ptr_Function_v4float Function
|
||||
%113 = OpVariable %_ptr_Function_v4float Function
|
||||
%22 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%26 = OpLoad %v4float %22
|
||||
OpStore %_0_v %26
|
||||
@ -161,85 +151,81 @@ OpStore %_4_w %39
|
||||
%44 = OpLoad %float %_4_w
|
||||
%45 = OpCompositeConstruct %v4float %41 %42 %43 %44
|
||||
OpStore %a %45
|
||||
OpStore %_5_ZERO %int_0
|
||||
OpStore %_6_ONE %int_1
|
||||
OpStore %_7_TWO %int_2
|
||||
OpStore %_8_THREE %int_3
|
||||
%47 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%48 = OpLoad %v4float %47
|
||||
%49 = OpCompositeExtract %float %48 0
|
||||
OpStore %_9_x %49
|
||||
%51 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%52 = OpLoad %v4float %51
|
||||
%53 = OpCompositeExtract %float %52 1
|
||||
OpStore %_10_y %53
|
||||
%55 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%56 = OpLoad %v4float %55
|
||||
%57 = OpCompositeExtract %float %56 0
|
||||
OpStore %_9_x %57
|
||||
%57 = OpCompositeExtract %float %56 2
|
||||
OpStore %_11_z %57
|
||||
%59 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%60 = OpLoad %v4float %59
|
||||
%61 = OpCompositeExtract %float %60 1
|
||||
OpStore %_10_y %61
|
||||
%63 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%64 = OpLoad %v4float %63
|
||||
%65 = OpCompositeExtract %float %64 2
|
||||
OpStore %_11_z %65
|
||||
%67 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%68 = OpLoad %v4float %67
|
||||
%69 = OpCompositeExtract %float %68 3
|
||||
OpStore %_12_w %69
|
||||
%71 = OpLoad %float %_9_x
|
||||
%72 = OpLoad %float %_10_y
|
||||
%73 = OpLoad %float %_11_z
|
||||
%74 = OpLoad %float %_12_w
|
||||
%75 = OpCompositeConstruct %v4float %71 %72 %73 %74
|
||||
OpStore %b %75
|
||||
OpStore %_13_v %81
|
||||
%83 = OpLoad %v4float %_13_v
|
||||
%84 = OpCompositeExtract %float %83 0
|
||||
OpStore %_14_x %84
|
||||
%86 = OpLoad %v4float %_13_v
|
||||
%87 = OpCompositeExtract %float %86 1
|
||||
OpStore %_15_y %87
|
||||
%89 = OpLoad %v4float %_13_v
|
||||
%90 = OpCompositeExtract %float %89 2
|
||||
OpStore %_16_z %90
|
||||
%92 = OpLoad %v4float %_13_v
|
||||
%93 = OpCompositeExtract %float %92 3
|
||||
OpStore %_17_w %93
|
||||
%95 = OpLoad %float %_14_x
|
||||
%96 = OpLoad %float %_15_y
|
||||
%97 = OpLoad %float %_16_z
|
||||
%98 = OpLoad %float %_17_w
|
||||
%99 = OpCompositeConstruct %v4float %95 %96 %97 %98
|
||||
OpStore %c %99
|
||||
%101 = OpLoad %v4float %a
|
||||
%106 = OpFOrdEqual %v4bool %101 %105
|
||||
%108 = OpAll %bool %106
|
||||
OpSelectionMerge %110 None
|
||||
OpBranchConditional %108 %109 %110
|
||||
%109 = OpLabel
|
||||
%111 = OpLoad %v4float %b
|
||||
%112 = OpFOrdEqual %v4bool %111 %105
|
||||
%113 = OpAll %bool %112
|
||||
OpBranch %110
|
||||
%110 = OpLabel
|
||||
%114 = OpPhi %bool %false %19 %113 %109
|
||||
%61 = OpCompositeExtract %float %60 3
|
||||
OpStore %_12_w %61
|
||||
%63 = OpLoad %float %_9_x
|
||||
%64 = OpLoad %float %_10_y
|
||||
%65 = OpLoad %float %_11_z
|
||||
%66 = OpLoad %float %_12_w
|
||||
%67 = OpCompositeConstruct %v4float %63 %64 %65 %66
|
||||
OpStore %b %67
|
||||
OpStore %_13_v %73
|
||||
%75 = OpLoad %v4float %_13_v
|
||||
%76 = OpCompositeExtract %float %75 0
|
||||
OpStore %_14_x %76
|
||||
%78 = OpLoad %v4float %_13_v
|
||||
%79 = OpCompositeExtract %float %78 1
|
||||
OpStore %_15_y %79
|
||||
%81 = OpLoad %v4float %_13_v
|
||||
%82 = OpCompositeExtract %float %81 2
|
||||
OpStore %_16_z %82
|
||||
%84 = OpLoad %v4float %_13_v
|
||||
%85 = OpCompositeExtract %float %84 3
|
||||
OpStore %_17_w %85
|
||||
%87 = OpLoad %float %_14_x
|
||||
%88 = OpLoad %float %_15_y
|
||||
%89 = OpLoad %float %_16_z
|
||||
%90 = OpLoad %float %_17_w
|
||||
%91 = OpCompositeConstruct %v4float %87 %88 %89 %90
|
||||
OpStore %c %91
|
||||
%93 = OpLoad %v4float %a
|
||||
%98 = OpFOrdEqual %v4bool %93 %97
|
||||
%100 = OpAll %bool %98
|
||||
OpSelectionMerge %102 None
|
||||
OpBranchConditional %100 %101 %102
|
||||
%101 = OpLabel
|
||||
%103 = OpLoad %v4float %b
|
||||
%104 = OpFOrdEqual %v4bool %103 %97
|
||||
%105 = OpAll %bool %104
|
||||
OpBranch %102
|
||||
%102 = OpLabel
|
||||
%106 = OpPhi %bool %false %19 %105 %101
|
||||
OpSelectionMerge %108 None
|
||||
OpBranchConditional %106 %107 %108
|
||||
%107 = OpLabel
|
||||
%109 = OpLoad %v4float %c
|
||||
%110 = OpFOrdEqual %v4bool %109 %73
|
||||
%111 = OpAll %bool %110
|
||||
OpBranch %108
|
||||
%108 = OpLabel
|
||||
%112 = OpPhi %bool %false %102 %111 %107
|
||||
OpSelectionMerge %116 None
|
||||
OpBranchConditional %114 %115 %116
|
||||
OpBranchConditional %112 %114 %115
|
||||
%114 = OpLabel
|
||||
%117 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%119 = OpLoad %v4float %117
|
||||
OpStore %113 %119
|
||||
OpBranch %116
|
||||
%115 = OpLabel
|
||||
%117 = OpLoad %v4float %c
|
||||
%118 = OpFOrdEqual %v4bool %117 %81
|
||||
%119 = OpAll %bool %118
|
||||
%120 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%122 = OpLoad %v4float %120
|
||||
OpStore %113 %122
|
||||
OpBranch %116
|
||||
%116 = OpLabel
|
||||
%120 = OpPhi %bool %false %110 %119 %115
|
||||
OpSelectionMerge %124 None
|
||||
OpBranchConditional %120 %122 %123
|
||||
%122 = OpLabel
|
||||
%125 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%126 = OpLoad %v4float %125
|
||||
OpStore %121 %126
|
||||
OpBranch %124
|
||||
%123 = OpLabel
|
||||
%127 = OpAccessChain %_ptr_Uniform_v4float %10 %int_2
|
||||
%128 = OpLoad %v4float %127
|
||||
OpStore %121 %128
|
||||
OpBranch %124
|
||||
%124 = OpLabel
|
||||
%129 = OpLoad %v4float %121
|
||||
OpReturnValue %129
|
||||
%123 = OpLoad %v4float %113
|
||||
OpReturnValue %123
|
||||
OpFunctionEnd
|
||||
|
@ -10,10 +10,6 @@ vec4 main() {
|
||||
float _3_z = _0_v.z;
|
||||
float _4_w = _0_v.w;
|
||||
vec4 a = vec4(_1_x, _2_y, _3_z, _4_w);
|
||||
const int _5_ZERO = 0;
|
||||
const int _6_ONE = 1;
|
||||
const int _7_TWO = 2;
|
||||
const int _8_THREE = 3;
|
||||
float _9_x = testInputs.x;
|
||||
float _10_y = testInputs.y;
|
||||
float _11_z = testInputs.z;
|
||||
|
@ -21,10 +21,6 @@ fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _unifo
|
||||
float _3_z = _0_v.z;
|
||||
float _4_w = _0_v.w;
|
||||
float4 a = float4(_1_x, _2_y, _3_z, _4_w);
|
||||
const int _5_ZERO = 0;
|
||||
const int _6_ONE = 1;
|
||||
const int _7_TWO = 2;
|
||||
const int _8_THREE = 3;
|
||||
float _9_x = _uniforms.testInputs.x;
|
||||
float _10_y = _uniforms.testInputs.y;
|
||||
float _11_z = _uniforms.testInputs.z;
|
||||
|
@ -10,8 +10,6 @@ OpMemberName %_UniformBuffer 0 "colorGreen"
|
||||
OpMemberName %_UniformBuffer 1 "colorRed"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %main "main"
|
||||
OpName %TRUE "TRUE"
|
||||
OpName %FALSE "FALSE"
|
||||
OpName %ok "ok"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
OpDecorate %sk_FragColor Location 0
|
||||
@ -25,14 +23,14 @@ OpMemberDecorate %_UniformBuffer 1 RelaxedPrecision
|
||||
OpDecorate %_UniformBuffer Block
|
||||
OpDecorate %10 Binding 0
|
||||
OpDecorate %10 DescriptorSet 0
|
||||
OpDecorate %26 RelaxedPrecision
|
||||
OpDecorate %33 RelaxedPrecision
|
||||
OpDecorate %39 RelaxedPrecision
|
||||
OpDecorate %43 RelaxedPrecision
|
||||
OpDecorate %48 RelaxedPrecision
|
||||
OpDecorate %55 RelaxedPrecision
|
||||
OpDecorate %58 RelaxedPrecision
|
||||
OpDecorate %59 RelaxedPrecision
|
||||
OpDecorate %24 RelaxedPrecision
|
||||
OpDecorate %31 RelaxedPrecision
|
||||
OpDecorate %37 RelaxedPrecision
|
||||
OpDecorate %41 RelaxedPrecision
|
||||
OpDecorate %46 RelaxedPrecision
|
||||
OpDecorate %53 RelaxedPrecision
|
||||
OpDecorate %56 RelaxedPrecision
|
||||
OpDecorate %57 RelaxedPrecision
|
||||
%float = OpTypeFloat 32
|
||||
%v4float = OpTypeVector %float 4
|
||||
%_ptr_Output_v4float = OpTypePointer Output %v4float
|
||||
@ -63,53 +61,49 @@ OpReturn
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %18
|
||||
%19 = OpLabel
|
||||
%TRUE = OpVariable %_ptr_Function_bool Function
|
||||
%FALSE = OpVariable %_ptr_Function_bool Function
|
||||
%ok = OpVariable %_ptr_Function_bool Function
|
||||
%49 = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %TRUE %true
|
||||
OpStore %FALSE %false
|
||||
%47 = OpVariable %_ptr_Function_v4float Function
|
||||
OpStore %ok %true
|
||||
%26 = OpLoad %bool %ok
|
||||
OpSelectionMerge %28 None
|
||||
OpBranchConditional %26 %27 %28
|
||||
%27 = OpLabel
|
||||
%29 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%33 = OpLoad %v4float %29
|
||||
%34 = OpCompositeExtract %float %33 1
|
||||
%36 = OpFOrdEqual %bool %34 %float_1
|
||||
%37 = OpSelect %bool %36 %true %false
|
||||
OpBranch %28
|
||||
%28 = OpLabel
|
||||
%38 = OpPhi %bool %false %19 %37 %27
|
||||
OpStore %ok %38
|
||||
%39 = OpLoad %bool %ok
|
||||
OpSelectionMerge %41 None
|
||||
OpBranchConditional %39 %40 %41
|
||||
%40 = OpLabel
|
||||
%42 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%43 = OpLoad %v4float %42
|
||||
%44 = OpCompositeExtract %float %43 0
|
||||
%45 = OpFOrdEqual %bool %44 %float_1
|
||||
%46 = OpSelect %bool %45 %false %true
|
||||
OpBranch %41
|
||||
%41 = OpLabel
|
||||
%47 = OpPhi %bool %false %28 %46 %40
|
||||
OpStore %ok %47
|
||||
%48 = OpLoad %bool %ok
|
||||
OpSelectionMerge %53 None
|
||||
OpBranchConditional %48 %51 %52
|
||||
%24 = OpLoad %bool %ok
|
||||
OpSelectionMerge %26 None
|
||||
OpBranchConditional %24 %25 %26
|
||||
%25 = OpLabel
|
||||
%27 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%31 = OpLoad %v4float %27
|
||||
%32 = OpCompositeExtract %float %31 1
|
||||
%34 = OpFOrdEqual %bool %32 %float_1
|
||||
%35 = OpSelect %bool %34 %true %false
|
||||
OpBranch %26
|
||||
%26 = OpLabel
|
||||
%36 = OpPhi %bool %false %19 %35 %25
|
||||
OpStore %ok %36
|
||||
%37 = OpLoad %bool %ok
|
||||
OpSelectionMerge %39 None
|
||||
OpBranchConditional %37 %38 %39
|
||||
%38 = OpLabel
|
||||
%40 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%41 = OpLoad %v4float %40
|
||||
%42 = OpCompositeExtract %float %41 0
|
||||
%43 = OpFOrdEqual %bool %42 %float_1
|
||||
%44 = OpSelect %bool %43 %false %true
|
||||
OpBranch %39
|
||||
%39 = OpLabel
|
||||
%45 = OpPhi %bool %false %26 %44 %38
|
||||
OpStore %ok %45
|
||||
%46 = OpLoad %bool %ok
|
||||
OpSelectionMerge %51 None
|
||||
OpBranchConditional %46 %49 %50
|
||||
%49 = OpLabel
|
||||
%52 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%53 = OpLoad %v4float %52
|
||||
OpStore %47 %53
|
||||
OpBranch %51
|
||||
%50 = OpLabel
|
||||
%54 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%56 = OpLoad %v4float %54
|
||||
OpStore %47 %56
|
||||
OpBranch %51
|
||||
%51 = OpLabel
|
||||
%54 = OpAccessChain %_ptr_Uniform_v4float %10 %int_0
|
||||
%55 = OpLoad %v4float %54
|
||||
OpStore %49 %55
|
||||
OpBranch %53
|
||||
%52 = OpLabel
|
||||
%56 = OpAccessChain %_ptr_Uniform_v4float %10 %int_1
|
||||
%58 = OpLoad %v4float %56
|
||||
OpStore %49 %58
|
||||
OpBranch %53
|
||||
%53 = OpLabel
|
||||
%59 = OpLoad %v4float %49
|
||||
OpReturnValue %59
|
||||
%57 = OpLoad %v4float %47
|
||||
OpReturnValue %57
|
||||
OpFunctionEnd
|
||||
|
@ -3,8 +3,6 @@ out vec4 sk_FragColor;
|
||||
uniform vec4 colorGreen;
|
||||
uniform vec4 colorRed;
|
||||
vec4 main() {
|
||||
const bool TRUE = true;
|
||||
const bool FALSE = false;
|
||||
bool ok = true;
|
||||
ok = ok && (colorGreen.y == 1.0 ? true : false);
|
||||
ok = ok && (colorGreen.x == 1.0 ? false : true);
|
||||
|
@ -14,8 +14,6 @@ struct Outputs {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], constant Uniforms& _uniforms [[buffer(0)]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
const bool TRUE = true;
|
||||
const bool FALSE = false;
|
||||
bool ok = true;
|
||||
ok = ok && (_uniforms.colorGreen.y == 1.0 ? true : false);
|
||||
ok = ok && (_uniforms.colorGreen.x == 1.0 ? false : true);
|
||||
|
@ -7,11 +7,9 @@ OpName %sk_FragColor "sk_FragColor"
|
||||
OpName %sk_Clockwise "sk_Clockwise"
|
||||
OpName %_entrypoint "_entrypoint"
|
||||
OpName %main "main"
|
||||
OpName %a "a"
|
||||
OpName %b "b"
|
||||
OpName %c "c"
|
||||
OpName %d "d"
|
||||
OpName %e "e"
|
||||
OpDecorate %sk_FragColor RelaxedPrecision
|
||||
OpDecorate %sk_FragColor Location 0
|
||||
OpDecorate %sk_FragColor Index 0
|
||||
@ -28,9 +26,9 @@ OpDecorate %sk_Clockwise BuiltIn FrontFacing
|
||||
%12 = OpTypeFunction %void
|
||||
%15 = OpTypeFunction %v4float
|
||||
%_ptr_Function_float = OpTypePointer Function %float
|
||||
%float_1 = OpConstant %float 1
|
||||
%float_2 = OpConstant %float 2
|
||||
%float_3 = OpConstant %float 3
|
||||
%float_1 = OpConstant %float 1
|
||||
%float_0 = OpConstant %float 0
|
||||
%float_5 = OpConstant %float 5
|
||||
%float_4 = OpConstant %float 4
|
||||
@ -42,36 +40,31 @@ OpReturn
|
||||
OpFunctionEnd
|
||||
%main = OpFunction %v4float None %15
|
||||
%16 = OpLabel
|
||||
%a = OpVariable %_ptr_Function_float Function
|
||||
%b = OpVariable %_ptr_Function_float Function
|
||||
%c = OpVariable %_ptr_Function_float Function
|
||||
%d = OpVariable %_ptr_Function_float Function
|
||||
%e = OpVariable %_ptr_Function_float Function
|
||||
OpStore %a %float_1
|
||||
OpStore %b %float_2
|
||||
OpStore %c %float_3
|
||||
%25 = OpLoad %float %c
|
||||
OpStore %d %25
|
||||
%23 = OpLoad %float %c
|
||||
OpStore %d %23
|
||||
%24 = OpLoad %float %b
|
||||
%26 = OpFAdd %float %24 %float_1
|
||||
OpStore %b %26
|
||||
%27 = OpLoad %float %d
|
||||
OpStore %e %27
|
||||
%28 = OpLoad %float %b
|
||||
%29 = OpFAdd %float %28 %float_1
|
||||
OpStore %b %29
|
||||
%30 = OpLoad %float %d
|
||||
%31 = OpFAdd %float %30 %float_1
|
||||
OpStore %d %31
|
||||
%32 = OpLoad %float %b
|
||||
%33 = OpFOrdEqual %bool %32 %float_2
|
||||
%34 = OpSelect %float %33 %float_1 %float_0
|
||||
%36 = OpLoad %float %b
|
||||
%37 = OpFOrdEqual %bool %36 %float_3
|
||||
%38 = OpSelect %float %37 %float_1 %float_0
|
||||
%39 = OpLoad %float %d
|
||||
%41 = OpFOrdEqual %bool %39 %float_5
|
||||
%42 = OpSelect %float %41 %float_1 %float_0
|
||||
%43 = OpLoad %float %d
|
||||
%45 = OpFOrdEqual %bool %43 %float_4
|
||||
%46 = OpSelect %float %45 %float_1 %float_0
|
||||
%47 = OpCompositeConstruct %v4float %34 %38 %42 %46
|
||||
OpReturnValue %47
|
||||
%28 = OpFAdd %float %27 %float_1
|
||||
OpStore %d %28
|
||||
%29 = OpLoad %float %b
|
||||
%30 = OpFOrdEqual %bool %29 %float_2
|
||||
%31 = OpSelect %float %30 %float_1 %float_0
|
||||
%33 = OpLoad %float %b
|
||||
%34 = OpFOrdEqual %bool %33 %float_3
|
||||
%35 = OpSelect %float %34 %float_1 %float_0
|
||||
%36 = OpLoad %float %d
|
||||
%38 = OpFOrdEqual %bool %36 %float_5
|
||||
%39 = OpSelect %float %38 %float_1 %float_0
|
||||
%40 = OpLoad %float %d
|
||||
%42 = OpFOrdEqual %bool %40 %float_4
|
||||
%43 = OpSelect %float %42 %float_1 %float_0
|
||||
%44 = OpCompositeConstruct %v4float %31 %35 %39 %43
|
||||
OpReturnValue %44
|
||||
OpFunctionEnd
|
||||
|
@ -1,11 +1,9 @@
|
||||
|
||||
out vec4 sk_FragColor;
|
||||
vec4 main() {
|
||||
float a = 1.0;
|
||||
float b = 2.0;
|
||||
float c = 3.0;
|
||||
float d = c;
|
||||
float e = d;
|
||||
b++;
|
||||
d++;
|
||||
return vec4(float(b == 2.0), float(b == 3.0), float(d == 5.0), float(d == 4.0));
|
||||
|
@ -9,11 +9,9 @@ struct Outputs {
|
||||
fragment Outputs fragmentMain(Inputs _in [[stage_in]], bool _frontFacing [[front_facing]], float4 _fragCoord [[position]]) {
|
||||
Outputs _out;
|
||||
(void)_out;
|
||||
float a = 1.0;
|
||||
float b = 2.0;
|
||||
float c = 3.0;
|
||||
float d = c;
|
||||
float e = d;
|
||||
b++;
|
||||
d++;
|
||||
_out.sk_FragColor = float4(float(b == 2.0), float(b == 3.0), float(d == 5.0), float(d == 4.0));
|
||||
|
Loading…
Reference in New Issue
Block a user