From 63e6f820d8a4b2ddf812a9ff3beb3f36a5d38724 Mon Sep 17 00:00:00 2001 From: Ben Clayton Date: Thu, 7 Jul 2022 17:49:02 +0000 Subject: [PATCH] tint/resolver: Evaluate const-expr swizzles Bug: chromium:1341475 Change-Id: I2ac44824b08c460df759a96d0ba96f6045b60f74 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/95765 Reviewed-by: Dan Sinclair Commit-Queue: Ben Clayton --- src/tint/resolver/resolver.cc | 6 +- src/tint/resolver/resolver.h | 3 + src/tint/resolver/resolver_constants.cc | 17 + src/tint/resolver/resolver_constants_test.cc | 58 + src/tint/sem/expression.h | 2 +- src/tint/sem/index_accessor_expression.h | 2 +- src/tint/sem/member_accessor_expression.cc | 10 +- src/tint/sem/member_accessor_expression.h | 6 + src/tint/sem/variable.h | 6 +- .../access/let/matrix.spvasm.expected.glsl | 2 +- .../access/let/matrix.spvasm.expected.hlsl | 2 +- .../access/let/matrix.spvasm.expected.msl | 2 +- .../access/let/matrix.spvasm.expected.spvasm | 24 +- .../access/let/vector.spvasm.expected.glsl | 6 +- .../access/let/vector.spvasm.expected.hlsl | 6 +- .../access/let/vector.spvasm.expected.msl | 6 +- .../access/let/vector.spvasm.expected.spvasm | 23 +- test/tint/bug/chromium/1341475.wgsl | 4 + .../bug/chromium/1341475.wgsl.expected.glsl | 11 + .../bug/chromium/1341475.wgsl.expected.hlsl | 5 + .../bug/chromium/1341475.wgsl.expected.msl | 8 + .../bug/chromium/1341475.wgsl.expected.spvasm | 20 + .../bug/chromium/1341475.wgsl.expected.wgsl | 4 + test/tint/bug/tint/749.spvasm.expected.glsl | 62 +- test/tint/bug/tint/749.spvasm.expected.hlsl | 62 +- test/tint/bug/tint/749.spvasm.expected.msl | 62 +- test/tint/bug/tint/749.spvasm.expected.spvasm | 4541 ++++++++--------- test/tint/bug/tint/948.wgsl.expected.glsl | 2 +- test/tint/bug/tint/948.wgsl.expected.hlsl | 2 +- test/tint/bug/tint/948.wgsl.expected.msl | 2 +- test/tint/bug/tint/948.wgsl.expected.spvasm | 593 ++- .../splat/with_swizzle/f32.wgsl.expected.glsl | 6 +- .../splat/with_swizzle/f32.wgsl.expected.hlsl | 6 +- .../splat/with_swizzle/f32.wgsl.expected.msl | 6 +- .../with_swizzle/f32.wgsl.expected.spvasm | 25 +- 35 files changed, 2822 insertions(+), 2780 deletions(-) create mode 100644 test/tint/bug/chromium/1341475.wgsl create mode 100644 test/tint/bug/chromium/1341475.wgsl.expected.glsl create mode 100644 test/tint/bug/chromium/1341475.wgsl.expected.hlsl create mode 100644 test/tint/bug/chromium/1341475.wgsl.expected.msl create mode 100644 test/tint/bug/chromium/1341475.wgsl.expected.spvasm create mode 100644 test/tint/bug/chromium/1341475.wgsl.expected.wgsl diff --git a/src/tint/resolver/resolver.cc b/src/tint/resolver/resolver.cc index 42cd0bba39..9891f29872 100644 --- a/src/tint/resolver/resolver.cc +++ b/src/tint/resolver/resolver.cc @@ -1976,7 +1976,8 @@ sem::Expression* Resolver::MemberAccessor(const ast::MemberAccessorExpression* e ret = builder_->create(ret, ref->StorageClass(), ref->Access()); } - return builder_->create(expr, ret, current_statement_, object, + sem::Constant* val = nullptr; // TODO(crbug.com/tint/1611): Add structure support. + return builder_->create(expr, ret, current_statement_, val, object, member, has_side_effects, source_var); } @@ -2043,7 +2044,8 @@ sem::Expression* Resolver::MemberAccessor(const ast::MemberAccessorExpression* e // the swizzle. ret = builder_->create(vec->type(), static_cast(size)); } - return builder_->create(expr, ret, current_statement_, object, + auto* val = EvaluateSwizzleValue(object, ret, swizzle); + return builder_->create(expr, ret, current_statement_, val, object, std::move(swizzle), has_side_effects, source_var); } diff --git a/src/tint/resolver/resolver.h b/src/tint/resolver/resolver.h index 7c1f838517..9a9811f3bb 100644 --- a/src/tint/resolver/resolver.h +++ b/src/tint/resolver/resolver.h @@ -218,6 +218,9 @@ class Resolver { const sem::Type* ty); // Note: ty is not an array or structure const sem::Constant* EvaluateIndexValue(const sem::Expression* obj, const sem::Expression* idx); const sem::Constant* EvaluateLiteralValue(const ast::LiteralExpression*, const sem::Type*); + const sem::Constant* EvaluateSwizzleValue(const sem::Expression* vector, + const sem::Type* type, + const std::vector& indices); const sem::Constant* EvaluateUnaryValue(const sem::Expression*, const IntrinsicTable::UnaryOperator&); diff --git a/src/tint/resolver/resolver_constants.cc b/src/tint/resolver/resolver_constants.cc index 0c314cb414..30c00e21b9 100644 --- a/src/tint/resolver/resolver_constants.cc +++ b/src/tint/resolver/resolver_constants.cc @@ -19,6 +19,7 @@ #include "src/tint/sem/abstract_float.h" #include "src/tint/sem/abstract_int.h" #include "src/tint/sem/constant.h" +#include "src/tint/sem/member_accessor_expression.h" #include "src/tint/sem/type_constructor.h" #include "src/tint/utils/compiler_macros.h" #include "src/tint/utils/transform.h" @@ -537,6 +538,22 @@ const sem::Constant* Resolver::EvaluateIndexValue(const sem::Expression* obj_exp return obj_val->Index(static_cast(idx)); } +const sem::Constant* Resolver::EvaluateSwizzleValue(const sem::Expression* vec_expr, + const sem::Type* type, + const std::vector& indices) { + auto* vec_val = vec_expr->ConstantValue(); + if (!vec_val) { + return nullptr; + } + if (indices.size() == 1) { + return static_cast(vec_val->Index(indices[0])); + } else { + auto values = utils::Transform( + indices, [&](uint32_t i) { return static_cast(vec_val->Index(i)); }); + return CreateComposite(*builder_, type, std::move(values)); + } +} + const sem::Constant* Resolver::EvaluateBitcastValue(const sem::Expression*, const sem::Type*) { // TODO(crbug.com/tint/1581): Implement @const intrinsics return nullptr; diff --git a/src/tint/resolver/resolver_constants_test.cc b/src/tint/resolver/resolver_constants_test.cc index ff8a18994d..b8ef1b103e 100644 --- a/src/tint/resolver/resolver_constants_test.cc +++ b/src/tint/resolver/resolver_constants_test.cc @@ -20,6 +20,7 @@ #include "src/tint/resolver/resolver_test_helper.h" #include "src/tint/sem/expression.h" #include "src/tint/sem/index_accessor_expression.h" +#include "src/tint/sem/member_accessor_expression.h" #include "src/tint/sem/test_helper.h" using namespace tint::number_suffixes; // NOLINT @@ -1869,6 +1870,63 @@ TEST_F(ResolverConstantsTest, Vec3_Index_OOB_Low) { EXPECT_EQ(sem->ConstantValue()->As(), 1_i); } +TEST_F(ResolverConstantsTest, Vec3_Swizzle_Scalar) { + auto* expr = MemberAccessor(vec3(1_i, 2_i, 3_i), "y"); + WrapInFunction(expr); + + EXPECT_TRUE(r()->Resolve()) << r()->error(); + + auto* sem = Sem().Get(expr); + ASSERT_NE(sem, nullptr); + ASSERT_TRUE(sem->Type()->Is()); + EXPECT_TYPE(sem->ConstantValue()->Type(), sem->Type()); + EXPECT_TRUE(sem->ConstantValue()->AllEqual()); + EXPECT_FALSE(sem->ConstantValue()->AnyZero()); + EXPECT_FALSE(sem->ConstantValue()->AllZero()); + EXPECT_EQ(sem->ConstantValue()->As(), 2_i); +} + +TEST_F(ResolverConstantsTest, Vec3_Swizzle_Vector) { + auto* expr = MemberAccessor(vec3(1_i, 2_i, 3_i), "zx"); + WrapInFunction(expr); + + EXPECT_TRUE(r()->Resolve()) << r()->error(); + + auto* sem = Sem().Get(expr); + ASSERT_NE(sem, nullptr); + auto* vec = sem->Type()->As(); + ASSERT_NE(vec, nullptr); + EXPECT_EQ(vec->Width(), 2u); + EXPECT_TYPE(sem->ConstantValue()->Type(), sem->Type()); + + EXPECT_TRUE(sem->ConstantValue()->Index(0)->AllEqual()); + EXPECT_FALSE(sem->ConstantValue()->Index(0)->AnyZero()); + EXPECT_FALSE(sem->ConstantValue()->Index(0)->AllZero()); + EXPECT_EQ(sem->ConstantValue()->Index(0)->As(), 3._a); + + EXPECT_TRUE(sem->ConstantValue()->Index(1)->AllEqual()); + EXPECT_FALSE(sem->ConstantValue()->Index(1)->AnyZero()); + EXPECT_FALSE(sem->ConstantValue()->Index(1)->AllZero()); + EXPECT_EQ(sem->ConstantValue()->Index(1)->As(), 1._a); +} + +TEST_F(ResolverConstantsTest, Vec3_Swizzle_Chain) { + auto* expr = // (1, 2, 3) -> (2, 3, 1) -> (3, 2) -> 2 + MemberAccessor(MemberAccessor(MemberAccessor(vec3(1_i, 2_i, 3_i), "gbr"), "yx"), "y"); + WrapInFunction(expr); + + EXPECT_TRUE(r()->Resolve()) << r()->error(); + + auto* sem = Sem().Get(expr); + ASSERT_NE(sem, nullptr); + ASSERT_TRUE(sem->Type()->Is()); + EXPECT_TYPE(sem->ConstantValue()->Type(), sem->Type()); + EXPECT_TRUE(sem->ConstantValue()->AllEqual()); + EXPECT_FALSE(sem->ConstantValue()->AnyZero()); + EXPECT_FALSE(sem->ConstantValue()->AllZero()); + EXPECT_EQ(sem->ConstantValue()->As(), 2_i); +} + TEST_F(ResolverConstantsTest, Mat3x2_Index) { auto* expr = IndexAccessor( mat3x2(vec2(1._a, 2._a), vec2(3._a, 4._a), vec2(5._a, 6._a)), 2_i); diff --git a/src/tint/sem/expression.h b/src/tint/sem/expression.h index 05e5dacf30..45a67cafde 100644 --- a/src/tint/sem/expression.h +++ b/src/tint/sem/expression.h @@ -35,7 +35,7 @@ class Expression : public Castable { /// @param declaration the AST node /// @param type the resolved type of the expression /// @param statement the statement that owns this expression - /// @param constant the constant value of the expression. May be invalid + /// @param constant the constant value of the expression. May be null /// @param has_side_effects true if this expression may have side-effects /// @param source_var the (optional) source variable for this expression Expression(const ast::Expression* declaration, diff --git a/src/tint/sem/index_accessor_expression.h b/src/tint/sem/index_accessor_expression.h index 233b0fa4ef..3ba10eadae 100644 --- a/src/tint/sem/index_accessor_expression.h +++ b/src/tint/sem/index_accessor_expression.h @@ -35,7 +35,7 @@ class IndexAccessorExpression final : public Castable indices, bool has_side_effects, const Variable* source_var /* = nullptr */) - : Base(declaration, type, statement, object, has_side_effects, source_var), + : Base(declaration, type, statement, constant, object, has_side_effects, source_var), indices_(std::move(indices)) {} Swizzle::~Swizzle() = default; diff --git a/src/tint/sem/member_accessor_expression.h b/src/tint/sem/member_accessor_expression.h index 3d60816a08..d8484a8c7e 100644 --- a/src/tint/sem/member_accessor_expression.h +++ b/src/tint/sem/member_accessor_expression.h @@ -38,12 +38,14 @@ class MemberAccessorExpression : public Castable { /// @param declaration the AST node /// @param type the resolved type of the expression /// @param statement the statement that owns this expression + /// @param constant the constant value of the expression. May be null /// @param object the object that holds the member being accessed /// @param indices the swizzle indices /// @param has_side_effects whether this expression may have side effects @@ -104,6 +109,7 @@ class Swizzle final : public Castable { Swizzle(const ast::MemberAccessorExpression* declaration, const sem::Type* type, const Statement* statement, + const Constant* constant, const Expression* object, std::vector indices, bool has_side_effects, diff --git a/src/tint/sem/variable.h b/src/tint/sem/variable.h index 28e8f975a6..e5a5ceccb4 100644 --- a/src/tint/sem/variable.h +++ b/src/tint/sem/variable.h @@ -47,7 +47,7 @@ class Variable : public Castable { /// @param type the variable type /// @param storage_class the variable storage class /// @param access the variable access control type - /// @param constant_value the constant value for the variable. May be invalid + /// @param constant_value the constant value for the variable. May be null Variable(const ast::Variable* declaration, const sem::Type* type, ast::StorageClass storage_class, @@ -105,7 +105,7 @@ class LocalVariable final : public Castable { /// @param storage_class the variable storage class /// @param access the variable access control type /// @param statement the statement that declared this local variable - /// @param constant_value the constant value for the variable. May be invalid + /// @param constant_value the constant value for the variable. May be null LocalVariable(const ast::Variable* declaration, const sem::Type* type, ast::StorageClass storage_class, @@ -139,7 +139,7 @@ class GlobalVariable final : public Castable { /// @param type the variable type /// @param storage_class the variable storage class /// @param access the variable access control type - /// @param constant_value the constant value for the variable. May be invalid + /// @param constant_value the constant value for the variable. May be null /// @param binding_point the optional resource binding point of the variable GlobalVariable(const ast::Variable* declaration, const sem::Type* type, diff --git a/test/tint/access/let/matrix.spvasm.expected.glsl b/test/tint/access/let/matrix.spvasm.expected.glsl index f4bf9ccb58..28576b7e69 100644 --- a/test/tint/access/let/matrix.spvasm.expected.glsl +++ b/test/tint/access/let/matrix.spvasm.expected.glsl @@ -1,7 +1,7 @@ #version 310 es void main_1() { - float x_24 = vec3(4.0f, 5.0f, 6.0f).y; + float x_24 = 5.0f; return; } diff --git a/test/tint/access/let/matrix.spvasm.expected.hlsl b/test/tint/access/let/matrix.spvasm.expected.hlsl index 164f0209e7..a78b2e6987 100644 --- a/test/tint/access/let/matrix.spvasm.expected.hlsl +++ b/test/tint/access/let/matrix.spvasm.expected.hlsl @@ -1,5 +1,5 @@ void main_1() { - const float x_24 = float3(4.0f, 5.0f, 6.0f).y; + const float x_24 = 5.0f; return; } diff --git a/test/tint/access/let/matrix.spvasm.expected.msl b/test/tint/access/let/matrix.spvasm.expected.msl index ca54fa670e..bbb7ba6df0 100644 --- a/test/tint/access/let/matrix.spvasm.expected.msl +++ b/test/tint/access/let/matrix.spvasm.expected.msl @@ -2,7 +2,7 @@ using namespace metal; void main_1() { - float const x_24 = float3(4.0f, 5.0f, 6.0f)[1]; + float const x_24 = 5.0f; return; } diff --git a/test/tint/access/let/matrix.spvasm.expected.spvasm b/test/tint/access/let/matrix.spvasm.expected.spvasm index 7556cb3a49..a95383cf33 100644 --- a/test/tint/access/let/matrix.spvasm.expected.spvasm +++ b/test/tint/access/let/matrix.spvasm.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 28 +; Bound: 10 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -12,31 +12,13 @@ %void = OpTypeVoid %1 = OpTypeFunction %void %float = OpTypeFloat 32 - %v3float = OpTypeVector %float 3 -%mat3v3float = OpTypeMatrix %v3float 3 - %float_1 = OpConstant %float 1 - %float_2 = OpConstant %float 2 - %float_3 = OpConstant %float 3 - %11 = OpConstantComposite %v3float %float_1 %float_2 %float_3 - %float_4 = OpConstant %float 4 %float_5 = OpConstant %float 5 - %float_6 = OpConstant %float 6 - %15 = OpConstantComposite %v3float %float_4 %float_5 %float_6 - %float_7 = OpConstant %float 7 - %float_8 = OpConstant %float 8 - %float_9 = OpConstant %float 9 - %19 = OpConstantComposite %v3float %float_7 %float_8 %float_9 - %20 = OpConstantComposite %mat3v3float %11 %15 %19 - %uint = OpTypeInt 32 0 - %uint_1 = OpConstant %uint 1 %main_1 = OpFunction %void None %1 %4 = OpLabel - %23 = OpCompositeExtract %v3float %20 1 - %24 = OpCompositeExtract %float %23 1 OpReturn OpFunctionEnd %main = OpFunction %void None %1 - %26 = OpLabel - %27 = OpFunctionCall %void %main_1 + %8 = OpLabel + %9 = OpFunctionCall %void %main_1 OpReturn OpFunctionEnd diff --git a/test/tint/access/let/vector.spvasm.expected.glsl b/test/tint/access/let/vector.spvasm.expected.glsl index 6d744cd49d..6edf308c27 100644 --- a/test/tint/access/let/vector.spvasm.expected.glsl +++ b/test/tint/access/let/vector.spvasm.expected.glsl @@ -1,9 +1,9 @@ #version 310 es void main_1() { - float x_11 = vec3(1.0f, 2.0f, 3.0f).y; - vec2 x_13 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).z); - vec3 x_14 = vec3(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y); + float x_11 = 2.0f; + vec2 x_13 = vec2(1.0f, 3.0f); + vec3 x_14 = vec3(1.0f, 3.0f, 2.0f); return; } diff --git a/test/tint/access/let/vector.spvasm.expected.hlsl b/test/tint/access/let/vector.spvasm.expected.hlsl index cc37e54310..d5e689bb00 100644 --- a/test/tint/access/let/vector.spvasm.expected.hlsl +++ b/test/tint/access/let/vector.spvasm.expected.hlsl @@ -1,7 +1,7 @@ void main_1() { - const float x_11 = float3(1.0f, 2.0f, 3.0f).y; - const float2 x_13 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z); - const float3 x_14 = float3(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y); + const float x_11 = 2.0f; + const float2 x_13 = float2(1.0f, 3.0f); + const float3 x_14 = float3(1.0f, 3.0f, 2.0f); return; } diff --git a/test/tint/access/let/vector.spvasm.expected.msl b/test/tint/access/let/vector.spvasm.expected.msl index 354e9b13d2..1277c5a008 100644 --- a/test/tint/access/let/vector.spvasm.expected.msl +++ b/test/tint/access/let/vector.spvasm.expected.msl @@ -2,9 +2,9 @@ using namespace metal; void main_1() { - float const x_11 = float3(1.0f, 2.0f, 3.0f)[1]; - float2 const x_13 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2]); - float3 const x_14 = float3(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1]); + float const x_11 = 2.0f; + float2 const x_13 = float2(1.0f, 3.0f); + float3 const x_14 = float3(1.0f, 3.0f, 2.0f); return; } diff --git a/test/tint/access/let/vector.spvasm.expected.spvasm b/test/tint/access/let/vector.spvasm.expected.spvasm index 5b2e1625c3..58ec939637 100644 --- a/test/tint/access/let/vector.spvasm.expected.spvasm +++ b/test/tint/access/let/vector.spvasm.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 23 +; Bound: 16 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -12,26 +12,19 @@ %void = OpTypeVoid %1 = OpTypeFunction %void %float = OpTypeFloat 32 - %v3float = OpTypeVector %float 3 - %float_1 = OpConstant %float 1 %float_2 = OpConstant %float 2 - %float_3 = OpConstant %float 3 - %10 = OpConstantComposite %v3float %float_1 %float_2 %float_3 %v2float = OpTypeVector %float 2 + %float_1 = OpConstant %float 1 + %float_3 = OpConstant %float 3 + %10 = OpConstantComposite %v2float %float_1 %float_3 + %v3float = OpTypeVector %float 3 + %12 = OpConstantComposite %v3float %float_1 %float_3 %float_2 %main_1 = OpFunction %void None %1 %4 = OpLabel - %11 = OpCompositeExtract %float %10 1 - %13 = OpCompositeExtract %float %10 0 - %14 = OpCompositeExtract %float %10 2 - %15 = OpCompositeConstruct %v2float %13 %14 - %16 = OpCompositeExtract %float %10 0 - %17 = OpCompositeExtract %float %10 2 - %18 = OpCompositeExtract %float %10 1 - %19 = OpCompositeConstruct %v3float %16 %17 %18 OpReturn OpFunctionEnd %main = OpFunction %void None %1 - %21 = OpLabel - %22 = OpFunctionCall %void %main_1 + %14 = OpLabel + %15 = OpFunctionCall %void %main_1 OpReturn OpFunctionEnd diff --git a/test/tint/bug/chromium/1341475.wgsl b/test/tint/bug/chromium/1341475.wgsl new file mode 100644 index 0000000000..864442b17a --- /dev/null +++ b/test/tint/bug/chromium/1341475.wgsl @@ -0,0 +1,4 @@ +@compute @workgroup_size(1) +fn main() { + _ = mix(1.0, vec2(1.0).y, 1.0); +} diff --git a/test/tint/bug/chromium/1341475.wgsl.expected.glsl b/test/tint/bug/chromium/1341475.wgsl.expected.glsl new file mode 100644 index 0000000000..f00984780a --- /dev/null +++ b/test/tint/bug/chromium/1341475.wgsl.expected.glsl @@ -0,0 +1,11 @@ +#version 310 es + +void tint_symbol() { + mix(1.0f, 1.0f, 1.0f); +} + +layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; +void main() { + tint_symbol(); + return; +} diff --git a/test/tint/bug/chromium/1341475.wgsl.expected.hlsl b/test/tint/bug/chromium/1341475.wgsl.expected.hlsl new file mode 100644 index 0000000000..01c8800086 --- /dev/null +++ b/test/tint/bug/chromium/1341475.wgsl.expected.hlsl @@ -0,0 +1,5 @@ +[numthreads(1, 1, 1)] +void main() { + lerp(1.0f, 1.0f, 1.0f); + return; +} diff --git a/test/tint/bug/chromium/1341475.wgsl.expected.msl b/test/tint/bug/chromium/1341475.wgsl.expected.msl new file mode 100644 index 0000000000..5e194ff887 --- /dev/null +++ b/test/tint/bug/chromium/1341475.wgsl.expected.msl @@ -0,0 +1,8 @@ +#include + +using namespace metal; +kernel void tint_symbol() { + mix(1.0f, 1.0f, 1.0f); + return; +} + diff --git a/test/tint/bug/chromium/1341475.wgsl.expected.spvasm b/test/tint/bug/chromium/1341475.wgsl.expected.spvasm new file mode 100644 index 0000000000..784c1dec9c --- /dev/null +++ b/test/tint/bug/chromium/1341475.wgsl.expected.spvasm @@ -0,0 +1,20 @@ +; SPIR-V +; Version: 1.3 +; Generator: Google Tint Compiler; 0 +; Bound: 9 +; Schema: 0 + OpCapability Shader + %7 = OpExtInstImport "GLSL.std.450" + OpMemoryModel Logical GLSL450 + OpEntryPoint GLCompute %main "main" + OpExecutionMode %main LocalSize 1 1 1 + OpName %main "main" + %void = OpTypeVoid + %1 = OpTypeFunction %void + %float = OpTypeFloat 32 + %float_1 = OpConstant %float 1 + %main = OpFunction %void None %1 + %4 = OpLabel + %5 = OpExtInst %float %7 FMix %float_1 %float_1 %float_1 + OpReturn + OpFunctionEnd diff --git a/test/tint/bug/chromium/1341475.wgsl.expected.wgsl b/test/tint/bug/chromium/1341475.wgsl.expected.wgsl new file mode 100644 index 0000000000..f77126b445 --- /dev/null +++ b/test/tint/bug/chromium/1341475.wgsl.expected.wgsl @@ -0,0 +1,4 @@ +@compute @workgroup_size(1) +fn main() { + _ = mix(1.0, vec2(1.0).y, 1.0); +} diff --git a/test/tint/bug/tint/749.spvasm.expected.glsl b/test/tint/bug/tint/749.spvasm.expected.glsl index 96a7c143d5..ea9ce91b46 100644 --- a/test/tint/bug/tint/749.spvasm.expected.glsl +++ b/test/tint/bug/tint/749.spvasm.expected.glsl @@ -22,7 +22,7 @@ void swap_i1_i1_(inout int i, inout int j) { int x_932 = temp; temp = 0; temp = x_932; - vec3 x_523 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z); + vec3 x_523 = vec3(3.0f, 2.0f, 3.0f); int x_933 = i; i = 0; i = x_933; @@ -46,7 +46,7 @@ void swap_i1_i1_(inout int i, inout int j) { int x_938 = j; j = 0; j = x_938; - vec3 x_525 = vec3(x_523.z, vec3(1.0f, 2.0f, 3.0f).x, x_523.y); + vec3 x_525 = vec3(x_523.z, 1.0f, x_523.y); int x_939 = i; i = 0; i = x_939; @@ -136,7 +136,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { int x_955 = param_3; param_3 = 0; param_3 = x_955; - vec3 x_534 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).z); + vec3 x_534 = vec3(3.0f, 1.0f, 3.0f); int x_956 = param_1; param_1 = 0; param_1 = x_956; @@ -172,7 +172,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { int x_963 = pivot; pivot = 0; pivot = x_963; - x_537 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z); + x_537 = vec2(2.0f, 3.0f); QuicksortObject x_964 = obj; int tint_symbol_11[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0); QuicksortObject tint_symbol_12 = QuicksortObject(tint_symbol_11); @@ -215,7 +215,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { obj = tint_symbol_14; obj = x_972; int x_63 = pivot; - vec2 x_540 = vec2(vec3(1.0f, 2.0f, 3.0f).y, x_534.z); + vec2 x_540 = vec2(2.0f, x_534.z); int x_973 = i_1; i_1 = 0; i_1 = x_973; @@ -246,7 +246,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { int x_980 = l; l = 0; l = x_980; - vec3 x_544 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y, x_540.x); + vec3 x_544 = vec3(3.0f, 2.0f, x_540.x); int x_70 = i_1; vec2 x_545 = vec2(x_537.y, x_538.x); int x_981 = param; @@ -346,7 +346,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { int x_1003 = l; l = 0; l = x_1003; - vec2 x_554 = vec2(x_536.z, vec3(1.0f, 2.0f, 3.0f).y); + vec2 x_554 = vec2(x_536.z, 2.0f); int x_1004 = param_1; param_1 = 0; param_1 = x_1004; @@ -378,7 +378,7 @@ void quicksort_() { int tint_symbol_19[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0); stack = tint_symbol_19; stack = x_1008; - vec2 x_556 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).y); + vec2 x_556 = vec2(2.0f); int x_1009 = param_5; param_5 = 0; param_5 = x_1009; @@ -387,7 +387,7 @@ void quicksort_() { p = 0; p = x_1010; int x_93 = top; - vec2 x_557 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).x); + vec2 x_557 = vec2(1.0f); int x_1011 = p; p = 0; p = x_1011; @@ -431,7 +431,7 @@ void quicksort_() { int x_1020 = param_4; param_4 = 0; param_4 = x_1020; - vec3 x_562 = vec3(vec3(1.0f, 2.0f, 3.0f).z, x_558.y, vec3(1.0f, 2.0f, 3.0f).y); + vec3 x_562 = vec3(3.0f, x_558.y, 2.0f); int x_1021 = stack[x_96_save]; stack[x_96_save] = 0; stack[x_96_save] = x_1021; @@ -534,7 +534,7 @@ void quicksort_() { int x_1043 = stack[x_100_save]; stack[x_100_save] = 0; stack[x_100_save] = x_1043; - vec2 x_573 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z); + vec2 x_573 = vec2(2.0f, 3.0f); top = (x_112 - 1); int x_1044 = param_5; param_5 = 0; @@ -566,7 +566,7 @@ void quicksort_() { stack[x_110_save] = x_1050; vec2 x_577 = vec2(x_569.y, x_569.z); int x_120 = h_1; - vec2 x_578 = vec2(x_558.x, vec3(1.0f, 2.0f, 3.0f).y); + vec2 x_578 = vec2(x_558.x, 2.0f); param_5 = x_120; int x_1051 = stack[x_100_save]; stack[x_100_save] = 0; @@ -676,7 +676,7 @@ void quicksort_() { int x_1076 = stack[x_96_save]; stack[x_96_save] = 0; stack[x_96_save] = x_1076; - vec2 x_592 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).y); + vec2 x_592 = vec2(1.0f, 2.0f); QuicksortObject x_1077 = obj; int tint_symbol_31[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0); QuicksortObject tint_symbol_32 = QuicksortObject(tint_symbol_31); @@ -821,7 +821,7 @@ void main_1() { QuicksortObject tint_symbol_40 = QuicksortObject(tint_symbol_39); obj = tint_symbol_40; obj = x_722; - vec2 x_431 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).x); + vec2 x_431 = vec2(1.0f); int x_158 = i_2; vec2 x_723 = uv; uv = vec2(0.0f); @@ -841,7 +841,7 @@ void main_1() { QuicksortObject tint_symbol_44 = QuicksortObject(tint_symbol_43); obj = tint_symbol_44; obj = x_756; - vec2 x_446 = vec2(vec2(0.0f).x, vec2(0.0f).x); + vec2 x_446 = vec2(0.0f); int x_757 = i_2; i_2 = 0; i_2 = x_757; @@ -855,7 +855,7 @@ void main_1() { vec2 x_759 = uv; uv = vec2(0.0f); uv = x_759; - vec2 x_447 = vec2(vec2(0.0f).y, vec2(0.0f).y); + vec2 x_447 = vec2(0.0f); vec2 x_760 = uv; uv = vec2(0.0f); uv = x_760; @@ -875,7 +875,7 @@ void main_1() { QuicksortObject tint_symbol_50 = QuicksortObject(tint_symbol_49); obj = tint_symbol_50; obj = x_763; - vec3 x_449 = vec3(x_184.y, vec3(1.0f, 2.0f, 3.0f).z, x_184.w); + vec3 x_449 = vec3(x_184.y, 3.0f, x_184.w); vec3 x_764 = color; color = vec3(0.0f); color = x_764; @@ -919,7 +919,7 @@ void main_1() { float x_773 = color.x; color.x = 0.0f; color.x = x_773; - vec2 x_452 = vec2(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y); + vec2 x_452 = vec2(3.0f, 2.0f); int x_774 = i_2; i_2 = 0; i_2 = x_774; @@ -954,7 +954,7 @@ void main_1() { int x_781 = obj.numbers[0u]; obj.numbers[0u] = 0; obj.numbers[0u] = x_781; - vec3 x_456 = vec3(vec2(0.0f).y, x_448.y, x_448.y); + vec3 x_456 = vec3(0.0f, x_448.y, x_448.y); float x_782 = uv.x; uv.x = 0.0f; uv.x = x_782; @@ -973,7 +973,7 @@ void main_1() { QuicksortObject tint_symbol_64 = QuicksortObject(tint_symbol_63); obj = tint_symbol_64; obj = x_785; - vec2 x_458 = vec2(vec3(1.0f, 2.0f, 3.0f).z, vec2(0.0f).y); + vec2 x_458 = vec2(3.0f, 0.0f); int x_786 = i_2; i_2 = 0; i_2 = x_786; @@ -1013,7 +1013,7 @@ void main_1() { float x_796 = uv.x; uv.x = 0.0f; uv.x = x_796; - vec2 x_461 = vec2(vec2(0.0f).y, vec2(0.0f).y); + vec2 x_461 = vec2(0.0f); float x_797 = uv.x; uv.x = 0.0f; uv.x = x_797; @@ -1057,7 +1057,7 @@ void main_1() { int x_808 = i_2; i_2 = 0; i_2 = x_808; - vec2 x_466 = vec2(x_455.y, vec2(0.0f).y); + vec2 x_466 = vec2(x_455.y, 0.0f); int x_809 = i_2; i_2 = 0; i_2 = x_809; @@ -1111,7 +1111,7 @@ void main_1() { int x_822 = obj.numbers[0u]; obj.numbers[0u] = 0; obj.numbers[0u] = x_822; - vec2 x_470 = vec2(vec2(0.0f).x, vec2(0.0f).y); + vec2 x_470 = vec2(0.0f); float x_823 = color.z; color.z = 0.0f; color.z = x_823; @@ -1153,7 +1153,7 @@ void main_1() { color.x = x_832; vec2 x_476 = vec2(x_451.z, x_460.y); color.y = (x_257 + float(x_254)); - vec3 x_477 = vec3(vec2(0.0f).x, x_472.x, vec2(0.0f).y); + vec3 x_477 = vec3(0.0f, x_472.x, 0.0f); float x_833 = uv.x; uv.x = 0.0f; uv.x = x_833; @@ -1168,14 +1168,14 @@ void main_1() { int x_836 = i_2; i_2 = 0; i_2 = x_836; - vec3 x_479 = vec3(vec2(0.0f).y, x_454.y, vec2(0.0f).x); + vec3 x_479 = vec3(0.0f, x_454.y, 0.0f); int x_837 = obj.numbers[0u]; obj.numbers[0u] = 0; obj.numbers[0u] = x_837; float x_838 = color.y; color.y = 0.0f; color.y = x_838; - vec3 x_480 = vec3(x_446.x, x_446.x, vec2(0.0f).y); + vec3 x_480 = vec3(x_446.x, x_446.x, 0.0f); float x_839 = uv.x; uv.x = 0.0f; uv.x = x_839; @@ -1281,7 +1281,7 @@ void main_1() { float x_865 = color.x; color.x = 0.0f; color.x = x_865; - vec2 x_491 = vec2(vec3(1.0f, 2.0f, 3.0f).y, x_454.x); + vec2 x_491 = vec2(2.0f, x_454.x); float x_866 = color.y; color.y = 0.0f; color.y = x_866; @@ -1382,7 +1382,7 @@ void main_1() { float x_891 = color.y; color.y = 0.0f; color.y = x_891; - vec2 x_504 = vec2(x_453.y, vec2(0.0f).x); + vec2 x_504 = vec2(x_453.y, 0.0f); float x_892 = color.x; color.x = 0.0f; color.x = x_892; @@ -1431,7 +1431,7 @@ void main_1() { float x_904 = color.z; color.z = 0.0f; color.z = x_904; - vec3 x_510 = vec3(vec3(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z); + vec3 x_510 = vec3(2.0f, x_485.y, x_485.z); float x_905 = color.z; color.z = 0.0f; color.z = x_905; @@ -1485,7 +1485,7 @@ void main_1() { float x_918 = uv.x; uv.x = 0.0f; uv.x = x_918; - vec3 x_517 = vec3(vec2(0.0f).x, vec2(0.0f).x, vec2(0.0f).y); + vec3 x_517 = vec3(0.0f); color.x = (float(x_317) + x_320); float x_919 = color.x; color.x = 0.0f; @@ -1528,7 +1528,7 @@ void main_1() { float x_928 = uv.y; uv.y = 0.0f; uv.y = x_928; - vec3 x_521 = vec3(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).y, x_520.y); + vec3 x_521 = vec3(2.0f, 2.0f, x_520.y); float x_929 = uv.x; uv.x = 0.0f; uv.x = x_929; diff --git a/test/tint/bug/tint/749.spvasm.expected.hlsl b/test/tint/bug/tint/749.spvasm.expected.hlsl index 3208c159ed..8605266c5b 100644 --- a/test/tint/bug/tint/749.spvasm.expected.hlsl +++ b/test/tint/bug/tint/749.spvasm.expected.hlsl @@ -14,7 +14,7 @@ void swap_i1_i1_(inout int i, inout int j) { const int x_932 = temp; temp = 0; temp = x_932; - const float3 x_523 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z); + const float3 x_523 = float3(3.0f, 2.0f, 3.0f); const int x_933 = i; i = 0; i = x_933; @@ -46,7 +46,7 @@ void swap_i1_i1_(inout int i, inout int j) { const int x_938 = j; j = 0; j = x_938; - const float3 x_525 = float3(x_523.z, float3(1.0f, 2.0f, 3.0f).x, x_523.y); + const float3 x_525 = float3(x_523.z, 1.0f, x_523.y); const int x_939 = i; i = 0; i = x_939; @@ -192,7 +192,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { const int x_955 = param_3; param_3 = 0; param_3 = x_955; - const float3 x_534 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z); + const float3 x_534 = float3(3.0f, 1.0f, 3.0f); const int x_956 = param_1; param_1 = 0; param_1 = x_956; @@ -228,7 +228,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { const int x_963 = pivot; pivot = 0; pivot = x_963; - x_537 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z); + x_537 = float2(2.0f, 3.0f); const QuicksortObject x_964 = obj; const int tint_symbol_60[10] = (int[10])0; const QuicksortObject tint_symbol_61 = {tint_symbol_60}; @@ -279,7 +279,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { obj = tint_symbol_63; obj = x_972; const int x_63 = pivot; - const float2 x_540 = float2(float3(1.0f, 2.0f, 3.0f).y, x_534.z); + const float2 x_540 = float2(2.0f, x_534.z); const int x_973 = i_1; i_1 = 0; i_1 = x_973; @@ -310,7 +310,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { const int x_980 = l; l = 0; l = x_980; - const float3 x_544 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y, x_540.x); + const float3 x_544 = float3(3.0f, 2.0f, x_540.x); const int x_70 = i_1; const float2 x_545 = float2(x_537.y, x_538.x); const int x_981 = param; @@ -434,7 +434,7 @@ int performPartition_i1_i1_(inout int l, inout int h) { const int x_1003 = l; l = 0; l = x_1003; - const float2 x_554 = float2(x_536.z, float3(1.0f, 2.0f, 3.0f).y); + const float2 x_554 = float2(x_536.z, 2.0f); const int x_1004 = param_1; param_1 = 0; param_1 = x_1004; @@ -466,7 +466,7 @@ void quicksort_() { const int tint_symbol_68[10] = (int[10])0; stack = tint_symbol_68; stack = x_1008; - const float2 x_556 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y); + const float2 x_556 = (2.0f).xx; const int x_1009 = param_5; param_5 = 0; param_5 = x_1009; @@ -475,7 +475,7 @@ void quicksort_() { p = 0; p = x_1010; const int x_93 = top; - const float2 x_557 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).x); + const float2 x_557 = (1.0f).xx; const int x_1011 = p; p = 0; p = x_1011; @@ -519,7 +519,7 @@ void quicksort_() { const int x_1020 = param_4; param_4 = 0; param_4 = x_1020; - const float3 x_562 = float3(float3(1.0f, 2.0f, 3.0f).z, x_558.y, float3(1.0f, 2.0f, 3.0f).y); + const float3 x_562 = float3(3.0f, x_558.y, 2.0f); const int x_1021 = stack[x_96_save]; stack[x_96_save] = 0; stack[x_96_save] = x_1021; @@ -622,7 +622,7 @@ void quicksort_() { const int x_1043 = stack[x_100_save]; stack[x_100_save] = 0; stack[x_100_save] = x_1043; - const float2 x_573 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z); + const float2 x_573 = float2(2.0f, 3.0f); top = (x_112 - 1); const int x_1044 = param_5; param_5 = 0; @@ -654,7 +654,7 @@ void quicksort_() { stack[x_110_save] = x_1050; const float2 x_577 = float2(x_569.y, x_569.z); const int x_120 = h_1; - const float2 x_578 = float2(x_558.x, float3(1.0f, 2.0f, 3.0f).y); + const float2 x_578 = float2(x_558.x, 2.0f); param_5 = x_120; const int x_1051 = stack[x_100_save]; stack[x_100_save] = 0; @@ -764,7 +764,7 @@ void quicksort_() { const int x_1076 = stack[x_96_save]; stack[x_96_save] = 0; stack[x_96_save] = x_1076; - const float2 x_592 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).y); + const float2 x_592 = float2(1.0f, 2.0f); const QuicksortObject x_1077 = obj; const int tint_symbol_80[10] = (int[10])0; const QuicksortObject tint_symbol_81 = {tint_symbol_80}; @@ -909,7 +909,7 @@ void main_1() { const QuicksortObject tint_symbol_89 = {tint_symbol_88}; obj = tint_symbol_89; obj = x_722; - const float2 x_431 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).x); + const float2 x_431 = (1.0f).xx; const int x_158 = i_2; const float2 x_723 = uv; uv = (0.0f).xx; @@ -929,7 +929,7 @@ void main_1() { const QuicksortObject tint_symbol_93 = {tint_symbol_92}; obj = tint_symbol_93; obj = x_756; - const float2 x_446 = float2((0.0f).xx.x, (0.0f).xx.x); + const float2 x_446 = (0.0f).xx; const int x_757 = i_2; i_2 = 0; i_2 = x_757; @@ -943,7 +943,7 @@ void main_1() { const float2 x_759 = uv; uv = (0.0f).xx; uv = x_759; - const float2 x_447 = float2((0.0f).xx.y, (0.0f).xx.y); + const float2 x_447 = (0.0f).xx; const float2 x_760 = uv; uv = (0.0f).xx; uv = x_760; @@ -963,7 +963,7 @@ void main_1() { const QuicksortObject tint_symbol_99 = {tint_symbol_98}; obj = tint_symbol_99; obj = x_763; - const float3 x_449 = float3(x_184.y, float3(1.0f, 2.0f, 3.0f).z, x_184.w); + const float3 x_449 = float3(x_184.y, 3.0f, x_184.w); const float3 x_764 = color; color = (0.0f).xxx; color = x_764; @@ -1007,7 +1007,7 @@ void main_1() { const float x_773 = color.x; color.x = 0.0f; color.x = x_773; - const float2 x_452 = float2(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y); + const float2 x_452 = float2(3.0f, 2.0f); const int x_774 = i_2; i_2 = 0; i_2 = x_774; @@ -1042,7 +1042,7 @@ void main_1() { const int x_781 = obj.numbers[0u]; obj.numbers[0u] = 0; obj.numbers[0u] = x_781; - const float3 x_456 = float3((0.0f).xx.y, x_448.y, x_448.y); + const float3 x_456 = float3(0.0f, x_448.y, x_448.y); const float x_782 = uv.x; uv.x = 0.0f; uv.x = x_782; @@ -1061,7 +1061,7 @@ void main_1() { const QuicksortObject tint_symbol_113 = {tint_symbol_112}; obj = tint_symbol_113; obj = x_785; - const float2 x_458 = float2(float3(1.0f, 2.0f, 3.0f).z, (0.0f).xx.y); + const float2 x_458 = float2(3.0f, 0.0f); const int x_786 = i_2; i_2 = 0; i_2 = x_786; @@ -1101,7 +1101,7 @@ void main_1() { const float x_796 = uv.x; uv.x = 0.0f; uv.x = x_796; - const float2 x_461 = float2((0.0f).xx.y, (0.0f).xx.y); + const float2 x_461 = (0.0f).xx; const float x_797 = uv.x; uv.x = 0.0f; uv.x = x_797; @@ -1145,7 +1145,7 @@ void main_1() { const int x_808 = i_2; i_2 = 0; i_2 = x_808; - const float2 x_466 = float2(x_455.y, (0.0f).xx.y); + const float2 x_466 = float2(x_455.y, 0.0f); const int x_809 = i_2; i_2 = 0; i_2 = x_809; @@ -1199,7 +1199,7 @@ void main_1() { const int x_822 = obj.numbers[0u]; obj.numbers[0u] = 0; obj.numbers[0u] = x_822; - const float2 x_470 = float2((0.0f).xx.x, (0.0f).xx.y); + const float2 x_470 = (0.0f).xx; const float x_823 = color.z; color.z = 0.0f; color.z = x_823; @@ -1241,7 +1241,7 @@ void main_1() { color.x = x_832; const float2 x_476 = float2(x_451.z, x_460.y); color.y = (x_257 + float(x_254)); - const float3 x_477 = float3((0.0f).xx.x, x_472.x, (0.0f).xx.y); + const float3 x_477 = float3(0.0f, x_472.x, 0.0f); const float x_833 = uv.x; uv.x = 0.0f; uv.x = x_833; @@ -1256,14 +1256,14 @@ void main_1() { const int x_836 = i_2; i_2 = 0; i_2 = x_836; - const float3 x_479 = float3((0.0f).xx.y, x_454.y, (0.0f).xx.x); + const float3 x_479 = float3(0.0f, x_454.y, 0.0f); const int x_837 = obj.numbers[0u]; obj.numbers[0u] = 0; obj.numbers[0u] = x_837; const float x_838 = color.y; color.y = 0.0f; color.y = x_838; - const float3 x_480 = float3(x_446.x, x_446.x, (0.0f).xx.y); + const float3 x_480 = float3(x_446.x, x_446.x, 0.0f); const float x_839 = uv.x; uv.x = 0.0f; uv.x = x_839; @@ -1369,7 +1369,7 @@ void main_1() { const float x_865 = color.x; color.x = 0.0f; color.x = x_865; - const float2 x_491 = float2(float3(1.0f, 2.0f, 3.0f).y, x_454.x); + const float2 x_491 = float2(2.0f, x_454.x); const float x_866 = color.y; color.y = 0.0f; color.y = x_866; @@ -1470,7 +1470,7 @@ void main_1() { const float x_891 = color.y; color.y = 0.0f; color.y = x_891; - const float2 x_504 = float2(x_453.y, (0.0f).xx.x); + const float2 x_504 = float2(x_453.y, 0.0f); const float x_892 = color.x; color.x = 0.0f; color.x = x_892; @@ -1519,7 +1519,7 @@ void main_1() { const float x_904 = color.z; color.z = 0.0f; color.z = x_904; - const float3 x_510 = float3(float3(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z); + const float3 x_510 = float3(2.0f, x_485.y, x_485.z); const float x_905 = color.z; color.z = 0.0f; color.z = x_905; @@ -1573,7 +1573,7 @@ void main_1() { const float x_918 = uv.x; uv.x = 0.0f; uv.x = x_918; - const float3 x_517 = float3((0.0f).xx.x, (0.0f).xx.x, (0.0f).xx.y); + const float3 x_517 = (0.0f).xxx; color.x = (float(x_317) + x_320); const float x_919 = color.x; color.x = 0.0f; @@ -1616,7 +1616,7 @@ void main_1() { const float x_928 = uv.y; uv.y = 0.0f; uv.y = x_928; - const float3 x_521 = float3(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y, x_520.y); + const float3 x_521 = float3(2.0f, 2.0f, x_520.y); const float x_929 = uv.x; uv.x = 0.0f; uv.x = x_929; diff --git a/test/tint/bug/tint/749.spvasm.expected.msl b/test/tint/bug/tint/749.spvasm.expected.msl index 88d8ef49db..119081c18e 100644 --- a/test/tint/bug/tint/749.spvasm.expected.msl +++ b/test/tint/bug/tint/749.spvasm.expected.msl @@ -27,7 +27,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_932 = temp; temp = 0; temp = x_932; - float3 const x_523 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]); + float3 const x_523 = float3(3.0f, 2.0f, 3.0f); int const x_933 = *(i); *(i) = 0; *(i) = x_933; @@ -51,7 +51,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec int const x_938 = *(j); *(j) = 0; *(j) = x_938; - float3 const x_525 = float3(x_523[2], float3(1.0f, 2.0f, 3.0f)[0], x_523[1]); + float3 const x_525 = float3(x_523[2], 1.0f, x_523[1]); int const x_939 = *(i); *(i) = 0; *(i) = x_939; @@ -141,7 +141,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_955 = param_3; param_3 = 0; param_3 = x_955; - float3 const x_534 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2]); + float3 const x_534 = float3(3.0f, 1.0f, 3.0f); int const x_956 = param_1; param_1 = 0; param_1 = x_956; @@ -177,7 +177,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_963 = pivot; pivot = 0; pivot = x_963; - x_537 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]); + x_537 = float2(2.0f, 3.0f); QuicksortObject const x_964 = *(tint_symbol_82); tint_array const tint_symbol_10 = tint_array{}; QuicksortObject const tint_symbol_11 = {.numbers=tint_symbol_10}; @@ -220,7 +220,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui *(tint_symbol_82) = tint_symbol_13; *(tint_symbol_82) = x_972; int const x_63 = pivot; - float2 const x_540 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_534[2]); + float2 const x_540 = float2(2.0f, x_534[2]); int const x_973 = i_1; i_1 = 0; i_1 = x_973; @@ -251,7 +251,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_980 = *(l); *(l) = 0; *(l) = x_980; - float3 const x_544 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1], x_540[0]); + float3 const x_544 = float3(3.0f, 2.0f, x_540[0]); int const x_70 = i_1; float2 const x_545 = float2(x_537[1], x_538[0]); int const x_981 = param; @@ -352,7 +352,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui int const x_1003 = *(l); *(l) = 0; *(l) = x_1003; - float2 const x_554 = float2(x_536[2], float3(1.0f, 2.0f, 3.0f)[1]); + float2 const x_554 = float2(x_536[2], 2.0f); int const x_1004 = param_1; param_1 = 0; param_1 = x_1004; @@ -384,7 +384,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { tint_array const tint_symbol_18 = tint_array{}; stack = tint_symbol_18; stack = x_1008; - float2 const x_556 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1]); + float2 const x_556 = float2(2.0f); int const x_1009 = param_5; param_5 = 0; param_5 = x_1009; @@ -393,7 +393,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { p = 0; p = x_1010; int const x_93 = top; - float2 const x_557 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]); + float2 const x_557 = float2(1.0f); int const x_1011 = p; p = 0; p = x_1011; @@ -437,7 +437,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1020 = param_4; param_4 = 0; param_4 = x_1020; - float3 const x_562 = float3(float3(1.0f, 2.0f, 3.0f)[2], x_558[1], float3(1.0f, 2.0f, 3.0f)[1]); + float3 const x_562 = float3(3.0f, x_558[1], 2.0f); int const x_1021 = stack[x_96_save]; stack[x_96_save] = 0; stack[x_96_save] = x_1021; @@ -540,7 +540,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1043 = stack[x_100_save]; stack[x_100_save] = 0; stack[x_100_save] = x_1043; - float2 const x_573 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]); + float2 const x_573 = float2(2.0f, 3.0f); top = as_type((as_type(x_112) - as_type(1))); int const x_1044 = param_5; param_5 = 0; @@ -573,7 +573,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { stack[x_110_save] = x_1050; float2 const x_577 = float2(x_569[1], x_569[2]); int const x_120 = h_1; - float2 const x_578 = float2(x_558[0], float3(1.0f, 2.0f, 3.0f)[1]); + float2 const x_578 = float2(x_558[0], 2.0f); param_5 = x_120; int const x_1051 = stack[x_100_save]; stack[x_100_save] = 0; @@ -683,7 +683,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) { int const x_1076 = stack[x_96_save]; stack[x_96_save] = 0; stack[x_96_save] = x_1076; - float2 const x_592 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[1]); + float2 const x_592 = float2(1.0f, 2.0f); QuicksortObject const x_1077 = *(tint_symbol_83); tint_array const tint_symbol_30 = tint_array{}; QuicksortObject const tint_symbol_31 = {.numbers=tint_symbol_30}; @@ -828,7 +828,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t QuicksortObject const tint_symbol_39 = {.numbers=tint_symbol_38}; *(tint_symbol_84) = tint_symbol_39; *(tint_symbol_84) = x_722; - float2 const x_431 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]); + float2 const x_431 = float2(1.0f); int const x_158 = i_2; float2 const x_723 = uv; uv = float2(0.0f); @@ -848,7 +848,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t QuicksortObject const tint_symbol_43 = {.numbers=tint_symbol_42}; *(tint_symbol_84) = tint_symbol_43; *(tint_symbol_84) = x_756; - float2 const x_446 = float2(float2(0.0f)[0], float2(0.0f)[0]); + float2 const x_446 = float2(0.0f); int const x_757 = i_2; i_2 = 0; i_2 = x_757; @@ -862,7 +862,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float2 const x_759 = uv; uv = float2(0.0f); uv = x_759; - float2 const x_447 = float2(float2(0.0f)[1], float2(0.0f)[1]); + float2 const x_447 = float2(0.0f); float2 const x_760 = uv; uv = float2(0.0f); uv = x_760; @@ -882,7 +882,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t QuicksortObject const tint_symbol_49 = {.numbers=tint_symbol_48}; *(tint_symbol_84) = tint_symbol_49; *(tint_symbol_84) = x_763; - float3 const x_449 = float3(x_184[1], float3(1.0f, 2.0f, 3.0f)[2], x_184[3]); + float3 const x_449 = float3(x_184[1], 3.0f, x_184[3]); float3 const x_764 = color; color = float3(0.0f); color = x_764; @@ -926,7 +926,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float const x_773 = color[0]; color[0] = 0.0f; color[0] = x_773; - float2 const x_452 = float2(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1]); + float2 const x_452 = float2(3.0f, 2.0f); int const x_774 = i_2; i_2 = 0; i_2 = x_774; @@ -961,7 +961,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t int const x_781 = (*(tint_symbol_84)).numbers[0u]; (*(tint_symbol_84)).numbers[0u] = 0; (*(tint_symbol_84)).numbers[0u] = x_781; - float3 const x_456 = float3(float2(0.0f)[1], x_448[1], x_448[1]); + float3 const x_456 = float3(0.0f, x_448[1], x_448[1]); float const x_782 = uv[0]; uv[0] = 0.0f; uv[0] = x_782; @@ -980,7 +980,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t QuicksortObject const tint_symbol_63 = {.numbers=tint_symbol_62}; *(tint_symbol_84) = tint_symbol_63; *(tint_symbol_84) = x_785; - float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2(0.0f)[1]); + float2 const x_458 = float2(3.0f, 0.0f); int const x_786 = i_2; i_2 = 0; i_2 = x_786; @@ -1020,7 +1020,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float const x_796 = uv[0]; uv[0] = 0.0f; uv[0] = x_796; - float2 const x_461 = float2(float2(0.0f)[1], float2(0.0f)[1]); + float2 const x_461 = float2(0.0f); float const x_797 = uv[0]; uv[0] = 0.0f; uv[0] = x_797; @@ -1064,7 +1064,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t int const x_808 = i_2; i_2 = 0; i_2 = x_808; - float2 const x_466 = float2(x_455[1], float2(0.0f)[1]); + float2 const x_466 = float2(x_455[1], 0.0f); int const x_809 = i_2; i_2 = 0; i_2 = x_809; @@ -1118,7 +1118,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t int const x_822 = (*(tint_symbol_84)).numbers[0u]; (*(tint_symbol_84)).numbers[0u] = 0; (*(tint_symbol_84)).numbers[0u] = x_822; - float2 const x_470 = float2(float2(0.0f)[0], float2(0.0f)[1]); + float2 const x_470 = float2(0.0f); float const x_823 = color[2]; color[2] = 0.0f; color[2] = x_823; @@ -1160,7 +1160,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t color[0] = x_832; float2 const x_476 = float2(x_451[2], x_460[1]); color[1] = (x_257 + float(x_254)); - float3 const x_477 = float3(float2(0.0f)[0], x_472[0], float2(0.0f)[1]); + float3 const x_477 = float3(0.0f, x_472[0], 0.0f); float const x_833 = uv[0]; uv[0] = 0.0f; uv[0] = x_833; @@ -1175,14 +1175,14 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t int const x_836 = i_2; i_2 = 0; i_2 = x_836; - float3 const x_479 = float3(float2(0.0f)[1], x_454[1], float2(0.0f)[0]); + float3 const x_479 = float3(0.0f, x_454[1], 0.0f); int const x_837 = (*(tint_symbol_84)).numbers[0u]; (*(tint_symbol_84)).numbers[0u] = 0; (*(tint_symbol_84)).numbers[0u] = x_837; float const x_838 = color[1]; color[1] = 0.0f; color[1] = x_838; - float3 const x_480 = float3(x_446[0], x_446[0], float2(0.0f)[1]); + float3 const x_480 = float3(x_446[0], x_446[0], 0.0f); float const x_839 = uv[0]; uv[0] = 0.0f; uv[0] = x_839; @@ -1288,7 +1288,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float const x_865 = color[0]; color[0] = 0.0f; color[0] = x_865; - float2 const x_491 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_454[0]); + float2 const x_491 = float2(2.0f, x_454[0]); float const x_866 = color[1]; color[1] = 0.0f; color[1] = x_866; @@ -1389,7 +1389,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float const x_891 = color[1]; color[1] = 0.0f; color[1] = x_891; - float2 const x_504 = float2(x_453[1], float2(0.0f)[0]); + float2 const x_504 = float2(x_453[1], 0.0f); float const x_892 = color[0]; color[0] = 0.0f; color[0] = x_892; @@ -1438,7 +1438,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float const x_904 = color[2]; color[2] = 0.0f; color[2] = x_904; - float3 const x_510 = float3(float3(1.0f, 2.0f, 3.0f)[1], x_485[1], x_485[2]); + float3 const x_510 = float3(2.0f, x_485[1], x_485[2]); float const x_905 = color[2]; color[2] = 0.0f; color[2] = x_905; @@ -1492,7 +1492,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float const x_918 = uv[0]; uv[0] = 0.0f; uv[0] = x_918; - float3 const x_517 = float3(float2(0.0f)[0], float2(0.0f)[0], float2(0.0f)[1]); + float3 const x_517 = float3(0.0f); color[0] = (float(x_317) + x_320); float const x_919 = color[0]; color[0] = 0.0f; @@ -1535,7 +1535,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t float const x_928 = uv[1]; uv[1] = 0.0f; uv[1] = x_928; - float3 const x_521 = float3(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1], x_520[1]); + float3 const x_521 = float3(2.0f, 2.0f, x_520[1]); float const x_929 = uv[0]; uv[0] = 0.0f; uv[0] = x_929; diff --git a/test/tint/bug/tint/749.spvasm.expected.spvasm b/test/tint/bug/tint/749.spvasm.expected.spvasm index cb9afaa725..70a28b153b 100644 --- a/test/tint/bug/tint/749.spvasm.expected.spvasm +++ b/test/tint/bug/tint/749.spvasm.expected.spvasm @@ -1,10 +1,10 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 1830 +; Bound: 1769 ; Schema: 0 OpCapability Shader - %1691 = OpExtInstImport "GLSL.std.450" + %1636 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %gl_FragCoord_param_1 %x_GLF_color_1_1 OpExecutionMode %main OriginUpperLeft @@ -88,33 +88,41 @@ %23 = OpTypeFunction %void %_ptr_Function_int %_ptr_Function_int %31 = OpConstantNull %int %v3float = OpTypeVector %float 3 - %float_1 = OpConstant %float 1 - %float_2 = OpConstant %float 2 %float_3 = OpConstant %float 3 - %37 = OpConstantComposite %v3float %float_1 %float_2 %float_3 + %float_2 = OpConstant %float 2 + %36 = OpConstantComposite %v3float %float_3 %float_2 %float_3 %uint_0 = OpConstant %uint 0 %_ptr_Private_int = OpTypePointer Private %int - %101 = OpConstantNull %_arr_int_uint_10 - %102 = OpConstantComposite %QuicksortObject %101 - %153 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int + %float_1 = OpConstant %float 1 + %96 = OpConstantNull %_arr_int_uint_10 + %97 = OpConstantComposite %QuicksortObject %96 + %148 = OpTypeFunction %int %_ptr_Function_int %_ptr_Function_int %_ptr_Function_v2float = OpTypePointer Function %v2float - %167 = OpConstantNull %v2float + %162 = OpConstantNull %v2float %_ptr_Function_v3float = OpTypePointer Function %v3float - %170 = OpConstantNull %v3float + %165 = OpConstantNull %v3float + %183 = OpConstantComposite %v3float %float_3 %float_1 %float_3 %uint_1 = OpConstant %uint 1 %int_10 = OpConstant %int 10 + %219 = OpConstantComposite %v2float %float_2 %float_3 %_ptr_Function_float = OpTypePointer Function %float %bool = OpTypeBool %int_1 = OpConstant %int 1 - %418 = OpTypeFunction %void + %404 = OpTypeFunction %void %_ptr_Function__arr_int_uint_10 = OpTypePointer Function %_arr_int_uint_10 %int_9 = OpConstant %int 9 + %418 = OpConstantComposite %v2float %float_2 %float_2 %int_n1 = OpConstant %int -1 - %520 = OpConstantNull %uint + %423 = OpConstantComposite %v2float %float_1 %float_1 + %500 = OpConstantNull %uint + %710 = OpConstantComposite %v2float %float_1 %float_2 %true = OpConstantTrue %bool %_ptr_Uniform_v2float = OpTypePointer Uniform %v2float - %949 = OpConstantNull %float + %891 = OpConstantComposite %v3float %float_1 %float_2 %float_3 + %914 = OpConstantNull %float + %916 = OpConstantComposite %v2float %float_3 %float_2 %float_0_25 = OpConstant %float 0.25 + %965 = OpConstantComposite %v2float %float_3 %914 %float_0_5 = OpConstant %float 0.5 %uint_2 = OpConstant %uint 2 %float_0_75 = OpConstant %float 0.75 @@ -126,7 +134,7 @@ %int_8 = OpConstant %int 8 %uint_9 = OpConstant %uint 9 %main_out = OpTypeStruct %v4float - %1817 = OpTypeFunction %main_out %v4float + %1756 = OpTypeFunction %main_out %v4float %swap_i1_i1_ = OpFunction %void None %23 %i = OpFunctionParameter %_ptr_Function_int %j = OpFunctionParameter %_ptr_Function_int @@ -135,139 +143,134 @@ %32 = OpLoad %int %temp OpStore %temp %31 OpStore %temp %32 - %38 = OpCompositeExtract %float %37 2 - %39 = OpCompositeExtract %float %37 1 - %40 = OpCompositeExtract %float %37 2 - %41 = OpCompositeConstruct %v3float %38 %39 %40 - %43 = OpLoad %int %i + %38 = OpLoad %int %i OpStore %i %31 - OpStore %i %43 - %47 = OpLoad %int %i - %49 = OpLoad %int %j + OpStore %i %38 + %42 = OpLoad %int %i + %44 = OpLoad %int %j OpStore %j %31 - OpStore %j %49 - %52 = OpCompositeExtract %float %41 1 - %53 = OpCompositeExtract %float %41 0 - %54 = OpCompositeExtract %float %41 1 - %55 = OpCompositeConstruct %v3float %52 %53 %54 - %56 = OpLoad %int %temp + OpStore %j %44 + %47 = OpCompositeExtract %float %36 1 + %48 = OpCompositeExtract %float %36 0 + %49 = OpCompositeExtract %float %36 1 + %50 = OpCompositeConstruct %v3float %47 %48 %49 + %51 = OpLoad %int %temp OpStore %temp %31 - OpStore %temp %56 - %59 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - %60 = OpLoad %int %59 - %61 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - OpStore %61 %31 - %62 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - OpStore %62 %60 - %63 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - %64 = OpLoad %int %63 - %65 = OpLoad %int %temp + OpStore %temp %51 + %54 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + %55 = OpLoad %int %54 + %56 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + OpStore %56 %31 + %57 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + OpStore %57 %55 + %58 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + %59 = OpLoad %int %58 + %60 = OpLoad %int %temp OpStore %temp %31 - OpStore %temp %65 - OpStore %temp %64 - %67 = OpLoad %int %j + OpStore %temp %60 + OpStore %temp %59 + %62 = OpLoad %int %j OpStore %j %31 - OpStore %j %67 - %70 = OpCompositeExtract %float %41 2 - %71 = OpCompositeExtract %float %37 0 - %72 = OpCompositeExtract %float %41 1 - %73 = OpCompositeConstruct %v3float %70 %71 %72 - %75 = OpLoad %int %i + OpStore %j %62 + %65 = OpCompositeExtract %float %36 2 + %67 = OpCompositeExtract %float %36 1 + %68 = OpCompositeConstruct %v3float %65 %float_1 %67 + %70 = OpLoad %int %i OpStore %i %31 - OpStore %i %75 - %79 = OpLoad %int %i - %80 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - %81 = OpLoad %int %80 - %82 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - OpStore %82 %31 - %83 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - OpStore %83 %81 - %85 = OpLoad %int %j - %87 = OpLoad %int %i + OpStore %i %70 + %74 = OpLoad %int %i + %75 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + %76 = OpLoad %int %75 + %77 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + OpStore %77 %31 + %78 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + OpStore %78 %76 + %80 = OpLoad %int %j + %82 = OpLoad %int %i OpStore %i %31 - OpStore %i %87 - %90 = OpCompositeExtract %float %73 0 - %91 = OpCompositeExtract %float %73 2 - %92 = OpCompositeExtract %float %73 2 - %93 = OpCompositeConstruct %v3float %90 %91 %92 - %94 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - %95 = OpLoad %int %94 - %96 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - OpStore %96 %31 - %97 = OpAccessChain %_ptr_Private_int %obj %uint_0 %47 - OpStore %97 %95 - %98 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85 - %99 = OpLoad %int %98 - %100 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %100 - %103 = OpCompositeExtract %float %93 0 - %104 = OpCompositeExtract %float %93 0 - %105 = OpCompositeConstruct %v2float %103 %104 - %106 = OpCompositeExtract %float %55 0 - %107 = OpCompositeExtract %float %55 2 - %108 = OpCompositeExtract %float %55 0 - %109 = OpCompositeConstruct %v3float %106 %107 %108 - %110 = OpAccessChain %_ptr_Private_int %obj %uint_0 %79 - OpStore %110 %99 - %111 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %111 - %112 = OpCompositeExtract %float %93 1 - %113 = OpCompositeExtract %float %93 2 - %114 = OpCompositeExtract %float %93 0 - %115 = OpCompositeConstruct %v3float %112 %113 %114 - %117 = OpLoad %int %i + OpStore %i %82 + %85 = OpCompositeExtract %float %68 0 + %86 = OpCompositeExtract %float %68 2 + %87 = OpCompositeExtract %float %68 2 + %88 = OpCompositeConstruct %v3float %85 %86 %87 + %89 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + %90 = OpLoad %int %89 + %91 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + OpStore %91 %31 + %92 = OpAccessChain %_ptr_Private_int %obj %uint_0 %42 + OpStore %92 %90 + %93 = OpAccessChain %_ptr_Private_int %obj %uint_0 %80 + %94 = OpLoad %int %93 + %95 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %95 + %98 = OpCompositeExtract %float %88 0 + %99 = OpCompositeExtract %float %88 0 + %100 = OpCompositeConstruct %v2float %98 %99 + %101 = OpCompositeExtract %float %50 0 + %102 = OpCompositeExtract %float %50 2 + %103 = OpCompositeExtract %float %50 0 + %104 = OpCompositeConstruct %v3float %101 %102 %103 + %105 = OpAccessChain %_ptr_Private_int %obj %uint_0 %74 + OpStore %105 %94 + %106 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %106 + %107 = OpCompositeExtract %float %88 1 + %108 = OpCompositeExtract %float %88 2 + %109 = OpCompositeExtract %float %88 0 + %110 = OpCompositeConstruct %v3float %107 %108 %109 + %112 = OpLoad %int %i OpStore %i %31 - OpStore %i %117 - %121 = OpLoad %int %j - %122 = OpLoad %int %temp + OpStore %i %112 + %116 = OpLoad %int %j + %117 = OpLoad %int %temp OpStore %temp %31 - OpStore %temp %122 - %123 = OpCompositeExtract %float %115 2 - %124 = OpCompositeExtract %float %115 1 - %125 = OpCompositeConstruct %v2float %123 %124 - %126 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85 - %127 = OpLoad %int %126 - %128 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85 - OpStore %128 %31 - %129 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85 - OpStore %129 %127 - %130 = OpLoad %int %temp - %132 = OpLoad %int %j + OpStore %temp %117 + %118 = OpCompositeExtract %float %110 2 + %119 = OpCompositeExtract %float %110 1 + %120 = OpCompositeConstruct %v2float %118 %119 + %121 = OpAccessChain %_ptr_Private_int %obj %uint_0 %80 + %122 = OpLoad %int %121 + %123 = OpAccessChain %_ptr_Private_int %obj %uint_0 %80 + OpStore %123 %31 + %124 = OpAccessChain %_ptr_Private_int %obj %uint_0 %80 + OpStore %124 %122 + %125 = OpLoad %int %temp + %127 = OpLoad %int %j OpStore %j %31 - OpStore %j %132 - %135 = OpCompositeExtract %float %105 0 - %136 = OpCompositeExtract %float %93 1 - %137 = OpCompositeExtract %float %93 0 - %138 = OpCompositeConstruct %v3float %135 %136 %137 - %139 = OpAccessChain %_ptr_Private_int %obj %uint_0 %79 - %140 = OpLoad %int %139 - %141 = OpAccessChain %_ptr_Private_int %obj %uint_0 %79 - OpStore %141 %31 - %142 = OpAccessChain %_ptr_Private_int %obj %uint_0 %79 - OpStore %142 %140 - %143 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %143 - %144 = OpCompositeExtract %float %109 0 - %145 = OpCompositeExtract %float %109 1 - %146 = OpCompositeExtract %float %109 0 - %147 = OpCompositeConstruct %v3float %144 %145 %146 - %148 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85 - %149 = OpLoad %int %148 - %150 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85 - OpStore %150 %31 - %151 = OpAccessChain %_ptr_Private_int %obj %uint_0 %85 - OpStore %151 %149 - %152 = OpAccessChain %_ptr_Private_int %obj %uint_0 %121 - OpStore %152 %130 + OpStore %j %127 + %130 = OpCompositeExtract %float %100 0 + %131 = OpCompositeExtract %float %88 1 + %132 = OpCompositeExtract %float %88 0 + %133 = OpCompositeConstruct %v3float %130 %131 %132 + %134 = OpAccessChain %_ptr_Private_int %obj %uint_0 %74 + %135 = OpLoad %int %134 + %136 = OpAccessChain %_ptr_Private_int %obj %uint_0 %74 + OpStore %136 %31 + %137 = OpAccessChain %_ptr_Private_int %obj %uint_0 %74 + OpStore %137 %135 + %138 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %138 + %139 = OpCompositeExtract %float %104 0 + %140 = OpCompositeExtract %float %104 1 + %141 = OpCompositeExtract %float %104 0 + %142 = OpCompositeConstruct %v3float %139 %140 %141 + %143 = OpAccessChain %_ptr_Private_int %obj %uint_0 %80 + %144 = OpLoad %int %143 + %145 = OpAccessChain %_ptr_Private_int %obj %uint_0 %80 + OpStore %145 %31 + %146 = OpAccessChain %_ptr_Private_int %obj %uint_0 %80 + OpStore %146 %144 + %147 = OpAccessChain %_ptr_Private_int %obj %uint_0 %116 + OpStore %147 %125 OpReturn OpFunctionEnd -%performPartition_i1_i1_ = OpFunction %int None %153 +%performPartition_i1_i1_ = OpFunction %int None %148 %l = OpFunctionParameter %_ptr_Function_int %h = OpFunctionParameter %_ptr_Function_int - %157 = OpLabel + %152 = OpLabel %param_3 = OpVariable %_ptr_Function_int Function %31 %i_1 = OpVariable %_ptr_Function_int Function %31 %j_1 = OpVariable %_ptr_Function_int Function %31 @@ -275,2366 +278,2302 @@ %param_1 = OpVariable %_ptr_Function_int Function %31 %param = OpVariable %_ptr_Function_int Function %31 %pivot = OpVariable %_ptr_Function_int Function %31 - %x_537 = OpVariable %_ptr_Function_v2float Function %167 - %x_538 = OpVariable %_ptr_Function_v3float Function %170 - %172 = OpLoad %int %h + %x_537 = OpVariable %_ptr_Function_v2float Function %162 + %x_538 = OpVariable %_ptr_Function_v3float Function %165 + %167 = OpLoad %int %h OpStore %h %31 - OpStore %h %172 - %176 = OpLoad %int %h - %178 = OpLoad %int %l + OpStore %h %167 + %171 = OpLoad %int %h + %173 = OpLoad %int %l OpStore %l %31 - OpStore %l %178 - %181 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - %182 = OpLoad %int %181 - %183 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - OpStore %183 %31 - %184 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - OpStore %184 %182 - %185 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - %186 = OpLoad %int %185 - %187 = OpLoad %int %param_3 + OpStore %l %173 + %176 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + %177 = OpLoad %int %176 + %178 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + OpStore %178 %31 + %179 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + OpStore %179 %177 + %180 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + %181 = OpLoad %int %180 + %182 = OpLoad %int %param_3 OpStore %param_3 %31 - OpStore %param_3 %187 - %188 = OpCompositeExtract %float %37 2 - %189 = OpCompositeExtract %float %37 0 - %190 = OpCompositeExtract %float %37 2 - %191 = OpCompositeConstruct %v3float %188 %189 %190 - %192 = OpLoad %int %param_1 + OpStore %param_3 %182 + %184 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %192 - OpStore %pivot %186 - %194 = OpLoad %int %l - %196 = OpLoad %int %h + OpStore %param_1 %184 + OpStore %pivot %181 + %186 = OpLoad %int %l + %188 = OpLoad %int %h OpStore %h %31 - OpStore %h %196 - %199 = OpLoad %int %j_1 + OpStore %h %188 + %191 = OpLoad %int %j_1 OpStore %j_1 %31 - OpStore %j_1 %199 - %200 = OpCompositeExtract %float %191 1 - %201 = OpCompositeExtract %float %191 2 - %202 = OpCompositeExtract %float %191 1 - %203 = OpCompositeConstruct %v3float %200 %201 %202 - %205 = OpLoad %int %l + OpStore %j_1 %191 + %192 = OpCompositeExtract %float %183 1 + %193 = OpCompositeExtract %float %183 2 + %194 = OpCompositeExtract %float %183 1 + %195 = OpCompositeConstruct %v3float %192 %193 %194 + %197 = OpLoad %int %l OpStore %l %31 - OpStore %l %205 - %208 = OpBitcast %int %uint_1 - %210 = OpISub %int %194 %208 - OpStore %i_1 %210 - %212 = OpLoad %int %l - %213 = OpCompositeExtract %float %191 0 - %214 = OpCompositeExtract %float %191 2 - %215 = OpCompositeExtract %float %203 0 - %216 = OpCompositeConstruct %v3float %213 %214 %215 + OpStore %l %197 + %200 = OpBitcast %int %uint_1 + %202 = OpISub %int %186 %200 + OpStore %i_1 %202 + %204 = OpLoad %int %l + %205 = OpCompositeExtract %float %183 0 + %206 = OpCompositeExtract %float %183 2 + %207 = OpCompositeExtract %float %195 0 + %208 = OpCompositeConstruct %v3float %205 %206 %207 OpStore %j_1 %int_10 - %218 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %218 - OpBranch %219 - %219 = OpLabel - OpLoopMerge %220 %221 None - OpBranch %222 - %222 = OpLabel - %223 = OpLoad %int %pivot + %210 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %210 + OpBranch %211 + %211 = OpLabel + OpLoopMerge %212 %213 None + OpBranch %214 + %214 = OpLabel + %215 = OpLoad %int %pivot OpStore %pivot %31 - OpStore %pivot %223 - %224 = OpLoad %int %param_1 + OpStore %pivot %215 + %216 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %224 - %225 = OpLoad %int %j_1 - %226 = OpLoad %int %pivot + OpStore %param_1 %216 + %217 = OpLoad %int %j_1 + %218 = OpLoad %int %pivot OpStore %pivot %31 - OpStore %pivot %226 - %227 = OpCompositeExtract %float %37 1 - %228 = OpCompositeExtract %float %37 2 - %229 = OpCompositeConstruct %v2float %227 %228 - OpStore %x_537 %229 - %230 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %230 - %232 = OpLoad %int %h - %234 = OpLoad %int %h + OpStore %pivot %218 + OpStore %x_537 %219 + %220 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %220 + %222 = OpLoad %int %h + %224 = OpLoad %int %h OpStore %h %31 - OpStore %h %234 - %237 = OpLoad %int %param + OpStore %h %224 + %227 = OpLoad %int %param OpStore %param %31 - OpStore %param %237 - %238 = OpLoad %int %j_1 + OpStore %param %227 + %228 = OpLoad %int %j_1 OpStore %j_1 %31 - OpStore %j_1 %238 - %239 = OpCompositeExtract %float %191 0 - %241 = OpAccessChain %_ptr_Function_float %x_537 %uint_1 - %242 = OpLoad %float %241 - %243 = OpCompositeExtract %float %191 2 - %244 = OpCompositeConstruct %v3float %239 %242 %243 - OpStore %x_538 %244 - %245 = OpLoad %int %param + OpStore %j_1 %228 + %229 = OpCompositeExtract %float %183 0 + %231 = OpAccessChain %_ptr_Function_float %x_537 %uint_1 + %232 = OpLoad %float %231 + %233 = OpCompositeExtract %float %183 2 + %234 = OpCompositeConstruct %v3float %229 %232 %233 + OpStore %x_538 %234 + %235 = OpLoad %int %param OpStore %param %31 - OpStore %param %245 - %246 = OpBitcast %int %uint_1 - %247 = OpISub %int %232 %246 - %248 = OpSLessThanEqual %bool %225 %247 - OpSelectionMerge %250 None - OpBranchConditional %248 %251 %252 - %251 = OpLabel - OpBranch %250 - %252 = OpLabel - OpBranch %220 - %250 = OpLabel - %253 = OpLoad %int %j_1 - %254 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - %255 = OpLoad %int %254 - %256 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - OpStore %256 %31 - %257 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - OpStore %257 %255 - %259 = OpLoad %int %h + OpStore %param %235 + %236 = OpBitcast %int %uint_1 + %237 = OpISub %int %222 %236 + %238 = OpSLessThanEqual %bool %217 %237 + OpSelectionMerge %240 None + OpBranchConditional %238 %241 %242 + %241 = OpLabel + OpBranch %240 + %242 = OpLabel + OpBranch %212 + %240 = OpLabel + %243 = OpLoad %int %j_1 + %244 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + %245 = OpLoad %int %244 + %246 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + OpStore %246 %31 + %247 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + OpStore %247 %245 + %249 = OpLoad %int %h OpStore %h %31 - OpStore %h %259 - %262 = OpAccessChain %_ptr_Function_float %x_537 %uint_0 - %263 = OpLoad %float %262 - %264 = OpCompositeExtract %float %203 2 - %265 = OpAccessChain %_ptr_Function_float %x_537 %uint_0 - %266 = OpLoad %float %265 - %267 = OpCompositeConstruct %v3float %263 %264 %266 - %268 = OpLoad %int %param_1 + OpStore %h %249 + %252 = OpAccessChain %_ptr_Function_float %x_537 %uint_0 + %253 = OpLoad %float %252 + %254 = OpCompositeExtract %float %195 2 + %255 = OpAccessChain %_ptr_Function_float %x_537 %uint_0 + %256 = OpLoad %float %255 + %257 = OpCompositeConstruct %v3float %253 %254 %256 + %258 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %268 - %269 = OpAccessChain %_ptr_Private_int %obj %uint_0 %253 - %270 = OpLoad %int %269 - %271 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %271 - %272 = OpLoad %int %pivot - %273 = OpCompositeExtract %float %37 1 - %274 = OpCompositeExtract %float %191 2 - %275 = OpCompositeConstruct %v2float %273 %274 - %276 = OpLoad %int %i_1 + OpStore %param_1 %258 + %259 = OpAccessChain %_ptr_Private_int %obj %uint_0 %243 + %260 = OpLoad %int %259 + %261 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %261 + %262 = OpLoad %int %pivot + %263 = OpCompositeExtract %float %183 2 + %264 = OpCompositeConstruct %v2float %float_2 %263 + %265 = OpLoad %int %i_1 OpStore %i_1 %31 - OpStore %i_1 %276 - %278 = OpLoad %int %l + OpStore %i_1 %265 + %267 = OpLoad %int %l OpStore %l %31 - OpStore %l %278 - %281 = OpCompositeExtract %float %191 1 - %282 = OpCompositeExtract %float %191 0 - %283 = OpCompositeExtract %float %191 1 - %284 = OpCompositeConstruct %v3float %281 %282 %283 - %285 = OpLoad %int %pivot + OpStore %l %267 + %270 = OpCompositeExtract %float %183 1 + %271 = OpCompositeExtract %float %183 0 + %272 = OpCompositeExtract %float %183 1 + %273 = OpCompositeConstruct %v3float %270 %271 %272 + %274 = OpLoad %int %pivot OpStore %pivot %31 - OpStore %pivot %285 - %286 = OpSLessThanEqual %bool %270 %272 - OpSelectionMerge %287 None - OpBranchConditional %286 %288 %287 - %288 = OpLabel - %289 = OpCompositeExtract %float %284 2 - %290 = OpCompositeExtract %float %284 0 - %291 = OpCompositeExtract %float %284 0 - %292 = OpCompositeConstruct %v3float %289 %290 %291 - %293 = OpLoad %int %param_3 + OpStore %pivot %274 + %275 = OpSLessThanEqual %bool %260 %262 + OpSelectionMerge %276 None + OpBranchConditional %275 %277 %276 + %277 = OpLabel + %278 = OpCompositeExtract %float %273 2 + %279 = OpCompositeExtract %float %273 0 + %280 = OpCompositeExtract %float %273 0 + %281 = OpCompositeConstruct %v3float %278 %279 %280 + %282 = OpLoad %int %param_3 OpStore %param_3 %31 - OpStore %param_3 %293 - %294 = OpLoad %int %i_1 - %295 = OpLoad %int %pivot + OpStore %param_3 %282 + %283 = OpLoad %int %i_1 + %284 = OpLoad %int %pivot OpStore %pivot %31 - OpStore %pivot %295 - %296 = OpCompositeExtract %float %267 0 - %297 = OpCompositeExtract %float %284 1 - %298 = OpCompositeConstruct %v2float %296 %297 - %299 = OpLoad %int %i_1 + OpStore %pivot %284 + %285 = OpCompositeExtract %float %257 0 + %286 = OpCompositeExtract %float %273 1 + %287 = OpCompositeConstruct %v2float %285 %286 + %288 = OpLoad %int %i_1 OpStore %i_1 %31 - OpStore %i_1 %299 - %300 = OpLoad %int %param + OpStore %i_1 %288 + %289 = OpLoad %int %param OpStore %param %31 - OpStore %param %300 - %301 = OpBitcast %int %uint_1 - %302 = OpIAdd %int %294 %301 - OpStore %i_1 %302 - %304 = OpLoad %int %l + OpStore %param %289 + %290 = OpBitcast %int %uint_1 + %291 = OpIAdd %int %283 %290 + OpStore %i_1 %291 + %293 = OpLoad %int %l OpStore %l %31 - OpStore %l %304 - %307 = OpCompositeExtract %float %37 2 - %308 = OpCompositeExtract %float %37 1 - %309 = OpCompositeExtract %float %275 0 - %310 = OpCompositeConstruct %v3float %307 %308 %309 - %311 = OpLoad %int %i_1 - %312 = OpAccessChain %_ptr_Function_float %x_537 %uint_1 - %313 = OpLoad %float %312 - %314 = OpAccessChain %_ptr_Function_float %x_538 %uint_0 - %315 = OpLoad %float %314 - %316 = OpCompositeConstruct %v2float %313 %315 - %317 = OpLoad %int %param + OpStore %l %293 + %296 = OpCompositeExtract %float %264 0 + %297 = OpCompositeConstruct %v3float %float_3 %float_2 %296 + %298 = OpLoad %int %i_1 + %299 = OpAccessChain %_ptr_Function_float %x_537 %uint_1 + %300 = OpLoad %float %299 + %301 = OpAccessChain %_ptr_Function_float %x_538 %uint_0 + %302 = OpLoad %float %301 + %303 = OpCompositeConstruct %v2float %300 %302 + %304 = OpLoad %int %param OpStore %param %31 - OpStore %param %317 - OpStore %param %311 - %318 = OpLoad %int %param + OpStore %param %304 + OpStore %param %298 + %305 = OpLoad %int %param OpStore %param %31 - OpStore %param %318 - %319 = OpCompositeExtract %float %316 0 - %320 = OpCompositeExtract %float %316 0 - %321 = OpCompositeConstruct %v2float %319 %320 - %322 = OpLoad %int %i_1 + OpStore %param %305 + %306 = OpCompositeExtract %float %303 0 + %307 = OpCompositeExtract %float %303 0 + %308 = OpCompositeConstruct %v2float %306 %307 + %309 = OpLoad %int %i_1 OpStore %i_1 %31 - OpStore %i_1 %322 - %323 = OpLoad %int %j_1 - OpStore %param_1 %323 - %324 = OpLoad %int %param_3 + OpStore %i_1 %309 + %310 = OpLoad %int %j_1 + OpStore %param_1 %310 + %311 = OpLoad %int %param_3 OpStore %param_3 %31 - OpStore %param_3 %324 - %325 = OpFunctionCall %void %swap_i1_i1_ %param %param_1 - %328 = OpLoad %int %param_1 + OpStore %param_3 %311 + %312 = OpFunctionCall %void %swap_i1_i1_ %param %param_1 + %315 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %328 - OpBranch %287 - %287 = OpLabel - %329 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %329 - OpBranch %221 - %221 = OpLabel - %331 = OpLoad %int %h + OpStore %param_1 %315 + OpBranch %276 + %276 = OpLabel + %316 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %316 + OpBranch %213 + %213 = OpLabel + %318 = OpLoad %int %h OpStore %h %31 - OpStore %h %331 - %334 = OpLoad %int %j_1 - %336 = OpLoad %int %h + OpStore %h %318 + %321 = OpLoad %int %j_1 + %323 = OpLoad %int %h OpStore %h %31 - OpStore %h %336 - %339 = OpCompositeExtract %float %267 0 - %340 = OpCompositeExtract %float %284 2 - %341 = OpCompositeExtract %float %284 2 - %342 = OpCompositeConstruct %v3float %339 %340 %341 - %343 = OpAccessChain %_ptr_Private_int %obj %uint_0 %253 - %344 = OpLoad %int %343 - %345 = OpAccessChain %_ptr_Private_int %obj %uint_0 %253 - OpStore %345 %31 - %346 = OpAccessChain %_ptr_Private_int %obj %uint_0 %253 - OpStore %346 %344 - %347 = OpLoad %int %param + OpStore %h %323 + %326 = OpCompositeExtract %float %257 0 + %327 = OpCompositeExtract %float %273 2 + %328 = OpCompositeExtract %float %273 2 + %329 = OpCompositeConstruct %v3float %326 %327 %328 + %330 = OpAccessChain %_ptr_Private_int %obj %uint_0 %243 + %331 = OpLoad %int %330 + %332 = OpAccessChain %_ptr_Private_int %obj %uint_0 %243 + OpStore %332 %31 + %333 = OpAccessChain %_ptr_Private_int %obj %uint_0 %243 + OpStore %333 %331 + %334 = OpLoad %int %param OpStore %param %31 - OpStore %param %347 - %349 = OpIAdd %int %int_1 %334 - OpStore %j_1 %349 - %350 = OpLoad %int %param_1 + OpStore %param %334 + %336 = OpIAdd %int %int_1 %321 + OpStore %j_1 %336 + %337 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %350 - %351 = OpCompositeExtract %float %284 1 - %352 = OpCompositeExtract %float %284 2 - %353 = OpCompositeExtract %float %284 0 - %354 = OpCompositeConstruct %v3float %351 %352 %353 - %355 = OpAccessChain %_ptr_Private_int %obj %uint_0 %253 - %356 = OpLoad %int %355 - %357 = OpAccessChain %_ptr_Private_int %obj %uint_0 %253 - OpStore %357 %31 - %358 = OpAccessChain %_ptr_Private_int %obj %uint_0 %253 - OpStore %358 %356 - OpBranch %219 - %220 = OpLabel - %359 = OpLoad %int %i_1 - %360 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - %361 = OpLoad %int %360 - %362 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - OpStore %362 %31 - %363 = OpAccessChain %_ptr_Private_int %obj %uint_0 %176 - OpStore %363 %361 - %364 = OpCompositeExtract %float %191 0 - %365 = OpCompositeExtract %float %191 1 - %366 = OpCompositeConstruct %v2float %364 %365 - %367 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %367 - %369 = OpLoad %int %h + OpStore %param_1 %337 + %338 = OpCompositeExtract %float %273 1 + %339 = OpCompositeExtract %float %273 2 + %340 = OpCompositeExtract %float %273 0 + %341 = OpCompositeConstruct %v3float %338 %339 %340 + %342 = OpAccessChain %_ptr_Private_int %obj %uint_0 %243 + %343 = OpLoad %int %342 + %344 = OpAccessChain %_ptr_Private_int %obj %uint_0 %243 + OpStore %344 %31 + %345 = OpAccessChain %_ptr_Private_int %obj %uint_0 %243 + OpStore %345 %343 + OpBranch %211 + %212 = OpLabel + %346 = OpLoad %int %i_1 + %347 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + %348 = OpLoad %int %347 + %349 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + OpStore %349 %31 + %350 = OpAccessChain %_ptr_Private_int %obj %uint_0 %171 + OpStore %350 %348 + %351 = OpCompositeExtract %float %183 0 + %352 = OpCompositeExtract %float %183 1 + %353 = OpCompositeConstruct %v2float %351 %352 + %354 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %354 + %356 = OpLoad %int %h OpStore %h %31 - OpStore %h %369 - %372 = OpIAdd %int %int_1 %359 - OpStore %i_1 %372 - %373 = OpLoad %int %param_1 + OpStore %h %356 + %359 = OpIAdd %int %int_1 %346 + OpStore %i_1 %359 + %360 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %373 - %374 = OpLoad %int %i_1 - %375 = OpLoad %int %j_1 + OpStore %param_1 %360 + %361 = OpLoad %int %i_1 + %362 = OpLoad %int %j_1 OpStore %j_1 %31 - OpStore %j_1 %375 - %376 = OpCompositeExtract %float %191 0 - %377 = OpCompositeExtract %float %191 0 - %378 = OpCompositeConstruct %v2float %376 %377 - %379 = OpLoad %int %param_1 + OpStore %j_1 %362 + %363 = OpCompositeExtract %float %183 0 + %364 = OpCompositeExtract %float %183 0 + %365 = OpCompositeConstruct %v2float %363 %364 + %366 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %379 - OpStore %param_2 %374 - %380 = OpCompositeExtract %float %191 1 - %381 = OpCompositeExtract %float %216 0 - %382 = OpCompositeConstruct %v2float %380 %381 - %383 = OpLoad %int %pivot + OpStore %param_1 %366 + OpStore %param_2 %361 + %367 = OpCompositeExtract %float %183 1 + %368 = OpCompositeExtract %float %208 0 + %369 = OpCompositeConstruct %v2float %367 %368 + %370 = OpLoad %int %pivot OpStore %pivot %31 - OpStore %pivot %383 + OpStore %pivot %370 + %372 = OpLoad %int %h + %373 = OpCompositeExtract %float %365 0 + %374 = OpCompositeExtract %float %353 1 + %375 = OpCompositeConstruct %v2float %373 %374 + %377 = OpLoad %int %h + OpStore %h %31 + OpStore %h %377 + OpStore %param_3 %372 + %380 = OpLoad %int %i_1 + OpStore %i_1 %31 + OpStore %i_1 %380 + %381 = OpCompositeExtract %float %353 1 + %382 = OpCompositeExtract %float %375 0 + %383 = OpCompositeConstruct %v2float %381 %382 %385 = OpLoad %int %h - %386 = OpCompositeExtract %float %378 0 - %387 = OpCompositeExtract %float %366 1 - %388 = OpCompositeConstruct %v2float %386 %387 - %390 = OpLoad %int %h OpStore %h %31 - OpStore %h %390 - OpStore %param_3 %385 - %393 = OpLoad %int %i_1 - OpStore %i_1 %31 - OpStore %i_1 %393 - %394 = OpCompositeExtract %float %366 1 - %395 = OpCompositeExtract %float %388 0 - %396 = OpCompositeConstruct %v2float %394 %395 - %398 = OpLoad %int %h - OpStore %h %31 - OpStore %h %398 - %401 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3 - %405 = OpLoad %int %l + OpStore %h %385 + %388 = OpFunctionCall %void %swap_i1_i1_ %param_2 %param_3 + %392 = OpLoad %int %l OpStore %l %31 - OpStore %l %405 - %408 = OpCompositeExtract %float %216 2 - %409 = OpCompositeExtract %float %37 1 - %410 = OpCompositeConstruct %v2float %408 %409 - %411 = OpLoad %int %param_1 + OpStore %l %392 + %395 = OpCompositeExtract %float %208 2 + %396 = OpCompositeConstruct %v2float %395 %float_2 + %397 = OpLoad %int %param_1 OpStore %param_1 %31 - OpStore %param_1 %411 - %412 = OpLoad %int %i_1 - %413 = OpLoad %int %param + OpStore %param_1 %397 + %398 = OpLoad %int %i_1 + %399 = OpLoad %int %param OpStore %param %31 - OpStore %param %413 - %414 = OpCompositeExtract %float %191 1 - %415 = OpCompositeExtract %float %191 0 - %416 = OpCompositeConstruct %v2float %414 %415 - %417 = OpLoad %int %j_1 + OpStore %param %399 + %400 = OpCompositeExtract %float %183 1 + %401 = OpCompositeExtract %float %183 0 + %402 = OpCompositeConstruct %v2float %400 %401 + %403 = OpLoad %int %j_1 OpStore %j_1 %31 - OpStore %j_1 %417 - OpReturnValue %412 + OpStore %j_1 %403 + OpReturnValue %398 OpFunctionEnd - %quicksort_ = OpFunction %void None %418 - %420 = OpLabel + %quicksort_ = OpFunction %void None %404 + %406 = OpLabel %param_4 = OpVariable %_ptr_Function_int Function %31 %h_1 = OpVariable %_ptr_Function_int Function %31 %p = OpVariable %_ptr_Function_int Function %31 %l_1 = OpVariable %_ptr_Function_int Function %31 %top = OpVariable %_ptr_Function_int Function %31 - %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %101 + %stack = OpVariable %_ptr_Function__arr_int_uint_10 Function %96 %param_5 = OpVariable %_ptr_Function_int Function %31 OpStore %l_1 %31 - %429 = OpLoad %int %param_5 + %415 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %429 + OpStore %param_5 %415 OpStore %h_1 %int_9 - %431 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %431 - %432 = OpCompositeExtract %float %37 1 - %433 = OpCompositeExtract %float %37 1 - %434 = OpCompositeConstruct %v2float %432 %433 - %435 = OpLoad %int %param_5 + %417 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %417 + %419 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %435 + OpStore %param_5 %419 OpStore %top %int_n1 - %437 = OpLoad %int %p + %421 = OpLoad %int %p OpStore %p %31 - OpStore %p %437 - %438 = OpLoad %int %top - %439 = OpCompositeExtract %float %37 0 - %440 = OpCompositeExtract %float %37 0 - %441 = OpCompositeConstruct %v2float %439 %440 - %442 = OpLoad %int %p + OpStore %p %421 + %422 = OpLoad %int %top + %424 = OpLoad %int %p OpStore %p %31 - OpStore %p %442 - %443 = OpBitcast %int %uint_1 - %444 = OpIAdd %int %438 %443 - %445 = OpLoad %int %top + OpStore %p %424 + %425 = OpBitcast %int %uint_1 + %426 = OpIAdd %int %422 %425 + %427 = OpLoad %int %top OpStore %top %31 - OpStore %top %445 - %446 = OpCompositeExtract %float %434 1 - %447 = OpCompositeExtract %float %441 1 - %448 = OpCompositeConstruct %v2float %446 %447 - %449 = OpLoad %int %param_4 + OpStore %top %427 + %428 = OpCompositeExtract %float %418 1 + %429 = OpCompositeExtract %float %423 1 + %430 = OpCompositeConstruct %v2float %428 %429 + %431 = OpLoad %int %param_4 OpStore %param_4 %31 - OpStore %param_4 %449 - OpStore %top %444 - %450 = OpLoad %int %h_1 + OpStore %param_4 %431 + OpStore %top %426 + %432 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %450 - %451 = OpCompositeExtract %float %441 1 - %452 = OpCompositeExtract %float %441 0 - %453 = OpCompositeExtract %float %441 0 - %454 = OpCompositeConstruct %v3float %451 %452 %453 - %455 = OpLoad %int %param_4 + OpStore %h_1 %432 + %433 = OpCompositeExtract %float %423 1 + %434 = OpCompositeExtract %float %423 0 + %435 = OpCompositeExtract %float %423 0 + %436 = OpCompositeConstruct %v3float %433 %434 %435 + %437 = OpLoad %int %param_4 OpStore %param_4 %31 - OpStore %param_4 %455 - %456 = OpLoad %int %l_1 - %457 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %457 - %458 = OpCompositeExtract %float %454 1 - %459 = OpCompositeExtract %float %454 0 - %460 = OpCompositeExtract %float %441 0 - %461 = OpCompositeConstruct %v3float %458 %459 %460 - %462 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %462 - %463 = OpCompositeExtract %float %434 1 - %464 = OpCompositeExtract %float %434 1 - %465 = OpCompositeExtract %float %434 1 - %466 = OpCompositeConstruct %v3float %463 %464 %465 - %467 = OpLoad %int %l_1 + OpStore %param_4 %437 + %438 = OpLoad %int %l_1 + %439 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %439 + %440 = OpCompositeExtract %float %436 1 + %441 = OpCompositeExtract %float %436 0 + %442 = OpCompositeExtract %float %423 0 + %443 = OpCompositeConstruct %v3float %440 %441 %442 + %444 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %444 + %445 = OpCompositeExtract %float %418 1 + %446 = OpCompositeExtract %float %418 1 + %447 = OpCompositeExtract %float %418 1 + %448 = OpCompositeConstruct %v3float %445 %446 %447 + %449 = OpLoad %int %l_1 OpStore %l_1 %31 OpStore %l_1 %31 - %468 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %468 %456 - %469 = OpLoad %int %param_5 + %450 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %450 %438 + %451 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %469 - %470 = OpLoad %int %top + OpStore %param_5 %451 + %452 = OpLoad %int %top + %453 = OpLoad %int %param_4 + OpStore %param_4 %31 + OpStore %param_4 %453 + %454 = OpCompositeExtract %float %430 1 + %455 = OpCompositeConstruct %v3float %float_3 %454 %float_2 + %456 = OpAccessChain %_ptr_Function_int %stack %426 + %457 = OpLoad %int %456 + %458 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %458 %31 + %459 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %459 %457 + %460 = OpIAdd %int %452 %int_1 + %461 = OpAccessChain %_ptr_Function_int %stack %426 + %462 = OpLoad %int %461 + %463 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %463 %31 + %464 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %464 %462 + %465 = OpCompositeExtract %float %436 0 + %466 = OpCompositeExtract %float %436 2 + %467 = OpCompositeExtract %float %418 1 + %468 = OpCompositeConstruct %v3float %465 %466 %467 + OpStore %top %460 + %469 = OpLoad %int %param_4 + OpStore %param_4 %31 + OpStore %param_4 %469 + %470 = OpLoad %int %h_1 %471 = OpLoad %int %param_4 OpStore %param_4 %31 OpStore %param_4 %471 - %472 = OpCompositeExtract %float %37 2 - %473 = OpCompositeExtract %float %448 1 - %474 = OpCompositeExtract %float %37 1 + %472 = OpCompositeExtract %float %430 0 + %473 = OpCompositeExtract %float %448 0 + %474 = OpCompositeExtract %float %430 1 %475 = OpCompositeConstruct %v3float %472 %473 %474 - %476 = OpAccessChain %_ptr_Function_int %stack %444 - %477 = OpLoad %int %476 - %478 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %478 %31 - %479 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %479 %477 - %480 = OpIAdd %int %470 %int_1 - %481 = OpAccessChain %_ptr_Function_int %stack %444 - %482 = OpLoad %int %481 - %483 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %483 %31 - %484 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %484 %482 - %485 = OpCompositeExtract %float %454 0 - %486 = OpCompositeExtract %float %454 2 - %487 = OpCompositeExtract %float %434 1 - %488 = OpCompositeConstruct %v3float %485 %486 %487 - OpStore %top %480 - %489 = OpLoad %int %param_4 - OpStore %param_4 %31 - OpStore %param_4 %489 - %490 = OpLoad %int %h_1 - %491 = OpLoad %int %param_4 - OpStore %param_4 %31 - OpStore %param_4 %491 - %492 = OpCompositeExtract %float %448 0 - %493 = OpCompositeExtract %float %466 0 - %494 = OpCompositeExtract %float %448 1 - %495 = OpCompositeConstruct %v3float %492 %493 %494 - %496 = OpLoad %int %l_1 + %476 = OpLoad %int %l_1 OpStore %l_1 %31 - OpStore %l_1 %496 - %497 = OpLoad %int %param_5 + OpStore %l_1 %476 + %477 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %497 - %498 = OpCompositeExtract %float %495 2 - %499 = OpCompositeExtract %float %495 2 - %500 = OpCompositeConstruct %v2float %498 %499 - %501 = OpLoad %int %p + OpStore %param_5 %477 + %478 = OpCompositeExtract %float %475 2 + %479 = OpCompositeExtract %float %475 2 + %480 = OpCompositeConstruct %v2float %478 %479 + %481 = OpLoad %int %p OpStore %p %31 - OpStore %p %501 - %502 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %502 %490 - OpBranch %503 + OpStore %p %481 + %482 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %482 %470 + OpBranch %483 + %483 = OpLabel + OpLoopMerge %484 %485 None + OpBranch %486 + %486 = OpLabel + %487 = OpCompositeExtract %float %468 0 + %488 = OpCompositeExtract %float %468 0 + %489 = OpCompositeExtract %float %468 0 + %490 = OpCompositeConstruct %v3float %487 %488 %489 + %491 = OpLoad %int %h_1 + OpStore %h_1 %31 + OpStore %h_1 %491 + %492 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %492 + %493 = OpLoad %int %top + %494 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %494 + %495 = OpCompositeExtract %float %430 0 + %496 = OpCompositeExtract %float %475 2 + %497 = OpCompositeConstruct %v2float %495 %496 + %498 = OpLoad %int %param_4 + OpStore %param_4 %31 + OpStore %param_4 %498 + %499 = OpBitcast %int %500 + %501 = OpSGreaterThanEqual %bool %493 %499 + OpSelectionMerge %502 None + OpBranchConditional %501 %503 %504 %503 = OpLabel - OpLoopMerge %504 %505 None - OpBranch %506 - %506 = OpLabel - %507 = OpCompositeExtract %float %488 0 - %508 = OpCompositeExtract %float %488 0 - %509 = OpCompositeExtract %float %488 0 - %510 = OpCompositeConstruct %v3float %507 %508 %509 - %511 = OpLoad %int %h_1 - OpStore %h_1 %31 - OpStore %h_1 %511 - %512 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %512 - %513 = OpLoad %int %top - %514 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %514 - %515 = OpCompositeExtract %float %448 0 - %516 = OpCompositeExtract %float %495 2 - %517 = OpCompositeConstruct %v2float %515 %516 - %518 = OpLoad %int %param_4 + OpBranch %502 + %504 = OpLabel + OpBranch %484 + %502 = OpLabel + %505 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %505 + %506 = OpCompositeExtract %float %436 1 + %507 = OpCompositeExtract %float %436 0 + %508 = OpCompositeExtract %float %468 1 + %509 = OpCompositeConstruct %v3float %506 %507 %508 + %510 = OpLoad %int %param_4 OpStore %param_4 %31 - OpStore %param_4 %518 - %519 = OpBitcast %int %520 - %521 = OpSGreaterThanEqual %bool %513 %519 - OpSelectionMerge %522 None - OpBranchConditional %521 %523 %524 - %523 = OpLabel - OpBranch %522 - %524 = OpLabel - OpBranch %504 - %522 = OpLabel - %525 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %525 - %526 = OpCompositeExtract %float %454 1 - %527 = OpCompositeExtract %float %454 0 - %528 = OpCompositeExtract %float %488 1 - %529 = OpCompositeConstruct %v3float %526 %527 %528 - %530 = OpLoad %int %param_4 - OpStore %param_4 %31 - OpStore %param_4 %530 - %531 = OpLoad %int %top - %532 = OpCompositeExtract %float %500 0 - %533 = OpCompositeExtract %float %517 1 - %534 = OpCompositeExtract %float %500 0 - %535 = OpCompositeConstruct %v3float %532 %533 %534 - %536 = OpLoad %int %h_1 + OpStore %param_4 %510 + %511 = OpLoad %int %top + %512 = OpCompositeExtract %float %480 0 + %513 = OpCompositeExtract %float %497 1 + %514 = OpCompositeExtract %float %480 0 + %515 = OpCompositeConstruct %v3float %512 %513 %514 + %516 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %536 - %537 = OpCompositeExtract %float %434 0 - %538 = OpCompositeExtract %float %434 0 + OpStore %h_1 %516 + %517 = OpCompositeExtract %float %418 0 + %518 = OpCompositeExtract %float %418 0 + %519 = OpCompositeConstruct %v2float %517 %518 + %520 = OpLoad %int %p + OpStore %p %31 + OpStore %p %520 + %521 = OpBitcast %int %uint_1 + %522 = OpISub %int %511 %521 + OpStore %top %522 + %523 = OpLoad %int %p + OpStore %p %31 + OpStore %p %523 + %524 = OpAccessChain %_ptr_Function_int %stack %426 + %525 = OpLoad %int %524 + %526 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %526 %31 + %527 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %527 %525 + %528 = OpAccessChain %_ptr_Function_int %stack %511 + %529 = OpLoad %int %528 + %530 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %530 + %531 = OpCompositeExtract %float %436 1 + %532 = OpCompositeExtract %float %436 0 + %533 = OpCompositeExtract %float %475 1 + %534 = OpCompositeConstruct %v3float %531 %532 %533 + %535 = OpLoad %int %l_1 + OpStore %l_1 %31 + OpStore %l_1 %535 + OpStore %h_1 %529 + %536 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %536 + %537 = OpCompositeExtract %float %455 1 + %538 = OpCompositeExtract %float %448 1 %539 = OpCompositeConstruct %v2float %537 %538 %540 = OpLoad %int %p OpStore %p %31 OpStore %p %540 - %541 = OpBitcast %int %uint_1 - %542 = OpISub %int %531 %541 - OpStore %top %542 - %543 = OpLoad %int %p - OpStore %p %31 - OpStore %p %543 - %544 = OpAccessChain %_ptr_Function_int %stack %444 - %545 = OpLoad %int %544 - %546 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %546 %31 - %547 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %547 %545 - %548 = OpAccessChain %_ptr_Function_int %stack %531 - %549 = OpLoad %int %548 - %550 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %550 - %551 = OpCompositeExtract %float %454 1 - %552 = OpCompositeExtract %float %454 0 - %553 = OpCompositeExtract %float %495 1 - %554 = OpCompositeConstruct %v3float %551 %552 %553 - %555 = OpLoad %int %l_1 - OpStore %l_1 %31 - OpStore %l_1 %555 - OpStore %h_1 %549 - %556 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %556 - %557 = OpCompositeExtract %float %475 1 - %558 = OpCompositeExtract %float %466 1 - %559 = OpCompositeConstruct %v2float %557 %558 - %560 = OpLoad %int %p - OpStore %p %31 - OpStore %p %560 - %561 = OpLoad %int %top - %562 = OpLoad %int %param_4 + %541 = OpLoad %int %top + %542 = OpLoad %int %param_4 OpStore %param_4 %31 - OpStore %param_4 %562 - %563 = OpAccessChain %_ptr_Function_int %stack %480 - %564 = OpLoad %int %563 - %565 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %565 %31 - %566 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %566 %564 - %567 = OpCompositeExtract %float %37 1 - %568 = OpCompositeExtract %float %37 2 - %569 = OpCompositeConstruct %v2float %567 %568 - %570 = OpISub %int %561 %int_1 - OpStore %top %570 - %571 = OpLoad %int %param_5 + OpStore %param_4 %542 + %543 = OpAccessChain %_ptr_Function_int %stack %460 + %544 = OpLoad %int %543 + %545 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %545 %31 + %546 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %546 %544 + %547 = OpISub %int %541 %int_1 + OpStore %top %547 + %548 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %571 - %572 = OpCompositeExtract %float %539 1 - %573 = OpCompositeExtract %float %500 0 - %574 = OpCompositeExtract %float %539 1 - %575 = OpCompositeConstruct %v3float %572 %573 %574 - %576 = OpLoad %int %h_1 + OpStore %param_5 %548 + %549 = OpCompositeExtract %float %519 1 + %550 = OpCompositeExtract %float %480 0 + %551 = OpCompositeExtract %float %519 1 + %552 = OpCompositeConstruct %v3float %549 %550 %551 + %553 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %576 - %577 = OpCompositeExtract %float %495 1 - %578 = OpCompositeExtract %float %495 2 - %579 = OpCompositeConstruct %v2float %577 %578 - %580 = OpAccessChain %_ptr_Function_int %stack %480 - %581 = OpLoad %int %580 - %582 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %582 %31 - %583 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %583 %581 - %584 = OpAccessChain %_ptr_Function_int %stack %561 - %585 = OpLoad %int %584 - %586 = OpLoad %int %p + OpStore %h_1 %553 + %554 = OpCompositeExtract %float %475 1 + %555 = OpCompositeExtract %float %475 2 + %556 = OpCompositeConstruct %v2float %554 %555 + %557 = OpAccessChain %_ptr_Function_int %stack %460 + %558 = OpLoad %int %557 + %559 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %559 %31 + %560 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %560 %558 + %561 = OpAccessChain %_ptr_Function_int %stack %541 + %562 = OpLoad %int %561 + %563 = OpLoad %int %p OpStore %p %31 - OpStore %p %586 - %587 = OpCompositeExtract %float %569 1 - %588 = OpCompositeExtract %float %569 1 - %589 = OpCompositeExtract %float %500 0 - %590 = OpCompositeConstruct %v3float %587 %588 %589 + OpStore %p %563 + %564 = OpCompositeExtract %float %219 1 + %565 = OpCompositeExtract %float %219 1 + %566 = OpCompositeExtract %float %480 0 + %567 = OpCompositeConstruct %v3float %564 %565 %566 + %568 = OpLoad %int %param_5 + OpStore %param_5 %31 + OpStore %param_5 %568 + OpStore %l_1 %562 + %569 = OpLoad %int %top + OpStore %top %31 + OpStore %top %569 + %570 = OpLoad %int %l_1 + OpStore %param_4 %570 + %571 = OpAccessChain %_ptr_Function_int %stack %511 + %572 = OpLoad %int %571 + %573 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %573 %31 + %574 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %574 %572 + %575 = OpCompositeExtract %float %515 1 + %576 = OpCompositeExtract %float %515 2 + %577 = OpCompositeConstruct %v2float %575 %576 + %578 = OpLoad %int %h_1 + %579 = OpCompositeExtract %float %430 0 + %580 = OpCompositeConstruct %v2float %579 %float_2 + OpStore %param_5 %578 + %581 = OpAccessChain %_ptr_Function_int %stack %460 + %582 = OpLoad %int %581 + %583 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %583 %31 + %584 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %584 %582 + %585 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5 + %588 = OpCompositeExtract %float %497 0 + %589 = OpCompositeExtract %float %509 0 + %590 = OpCompositeConstruct %v2float %588 %589 %591 = OpLoad %int %param_5 OpStore %param_5 %31 OpStore %param_5 %591 - OpStore %l_1 %585 - %592 = OpLoad %int %top - OpStore %top %31 - OpStore %top %592 - %593 = OpLoad %int %l_1 - OpStore %param_4 %593 - %594 = OpAccessChain %_ptr_Function_int %stack %531 - %595 = OpLoad %int %594 - %596 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %596 %31 - %597 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %597 %595 - %598 = OpCompositeExtract %float %535 1 - %599 = OpCompositeExtract %float %535 2 - %600 = OpCompositeConstruct %v2float %598 %599 - %601 = OpLoad %int %h_1 - %602 = OpCompositeExtract %float %448 0 - %603 = OpCompositeExtract %float %37 1 - %604 = OpCompositeConstruct %v2float %602 %603 - OpStore %param_5 %601 - %605 = OpAccessChain %_ptr_Function_int %stack %480 - %606 = OpLoad %int %605 - %607 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %607 %31 - %608 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %608 %606 - %609 = OpFunctionCall %int %performPartition_i1_i1_ %param_4 %param_5 - %612 = OpCompositeExtract %float %517 0 - %613 = OpCompositeExtract %float %529 0 - %614 = OpCompositeConstruct %v2float %612 %613 - %615 = OpLoad %int %param_5 - OpStore %param_5 %31 - OpStore %param_5 %615 - OpStore %p %609 - %616 = OpLoad %int %param_4 + OpStore %p %585 + %592 = OpLoad %int %param_4 OpStore %param_4 %31 - OpStore %param_4 %616 - %617 = OpLoad %int %p - %618 = OpLoad %int %h_1 + OpStore %param_4 %592 + %593 = OpLoad %int %p + %594 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %618 - %619 = OpCompositeExtract %float %529 1 - %620 = OpCompositeExtract %float %529 1 - %621 = OpCompositeConstruct %v2float %619 %620 - %622 = OpLoad %int %l_1 + OpStore %h_1 %594 + %595 = OpCompositeExtract %float %509 1 + %596 = OpCompositeExtract %float %509 1 + %597 = OpCompositeConstruct %v2float %595 %596 + %598 = OpLoad %int %l_1 OpStore %l_1 %31 - OpStore %l_1 %622 - %623 = OpLoad %int %h_1 + OpStore %l_1 %598 + %599 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %623 - %624 = OpLoad %int %l_1 - %625 = OpAccessChain %_ptr_Function_int %stack %531 - %626 = OpLoad %int %625 - %627 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %627 %31 - %628 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %628 %626 - %629 = OpLoad %int %h_1 + OpStore %h_1 %599 + %600 = OpLoad %int %l_1 + %601 = OpAccessChain %_ptr_Function_int %stack %511 + %602 = OpLoad %int %601 + %603 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %603 %31 + %604 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %604 %602 + %605 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %629 - %630 = OpCompositeExtract %float %517 1 - %631 = OpCompositeExtract %float %569 0 - %632 = OpCompositeConstruct %v2float %630 %631 - %633 = OpAccessChain %_ptr_Function_int %stack %480 - %634 = OpLoad %int %633 - %635 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %635 %31 - %636 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %636 %634 - %637 = OpBitcast %int %uint_1 - %638 = OpISub %int %617 %637 - %639 = OpSGreaterThan %bool %638 %624 - OpSelectionMerge %640 None - OpBranchConditional %639 %641 %640 - %641 = OpLabel - %642 = OpLoad %int %param_4 + OpStore %h_1 %605 + %606 = OpCompositeExtract %float %497 1 + %607 = OpCompositeExtract %float %219 0 + %608 = OpCompositeConstruct %v2float %606 %607 + %609 = OpAccessChain %_ptr_Function_int %stack %460 + %610 = OpLoad %int %609 + %611 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %611 %31 + %612 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %612 %610 + %613 = OpBitcast %int %uint_1 + %614 = OpISub %int %593 %613 + %615 = OpSGreaterThan %bool %614 %600 + OpSelectionMerge %616 None + OpBranchConditional %615 %617 %616 + %617 = OpLabel + %618 = OpLoad %int %param_4 OpStore %param_4 %31 - OpStore %param_4 %642 - %643 = OpLoad %int %top - %644 = OpCompositeExtract %float %554 1 - %645 = OpCompositeExtract %float %434 1 - %646 = OpCompositeConstruct %v2float %644 %645 - %647 = OpAccessChain %_ptr_Function_int %stack %480 - %648 = OpLoad %int %647 - %649 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %649 %31 - %650 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %650 %648 - %651 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %651 - %652 = OpCompositeExtract %float %535 2 - %653 = OpCompositeExtract %float %535 1 - %654 = OpCompositeConstruct %v2float %652 %653 - %655 = OpCompositeExtract %float %621 1 - %656 = OpCompositeExtract %float %600 0 - %657 = OpCompositeExtract %float %600 0 - %658 = OpCompositeConstruct %v3float %655 %656 %657 - %659 = OpLoad %int %l_1 - %660 = OpAccessChain %_ptr_Function_int %stack %561 - %661 = OpLoad %int %660 - %662 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %662 %31 - %663 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %663 %661 - %664 = OpCompositeExtract %float %495 0 - %665 = OpCompositeExtract %float %658 0 - %666 = OpCompositeConstruct %v2float %664 %665 - %667 = OpLoad %int %param_5 + OpStore %param_4 %618 + %619 = OpLoad %int %top + %620 = OpCompositeExtract %float %534 1 + %621 = OpCompositeExtract %float %418 1 + %622 = OpCompositeConstruct %v2float %620 %621 + %623 = OpAccessChain %_ptr_Function_int %stack %460 + %624 = OpLoad %int %623 + %625 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %625 %31 + %626 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %626 %624 + %627 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %627 + %628 = OpCompositeExtract %float %515 2 + %629 = OpCompositeExtract %float %515 1 + %630 = OpCompositeConstruct %v2float %628 %629 + %631 = OpCompositeExtract %float %597 1 + %632 = OpCompositeExtract %float %577 0 + %633 = OpCompositeExtract %float %577 0 + %634 = OpCompositeConstruct %v3float %631 %632 %633 + %635 = OpLoad %int %l_1 + %636 = OpAccessChain %_ptr_Function_int %stack %541 + %637 = OpLoad %int %636 + %638 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %638 %31 + %639 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %639 %637 + %640 = OpCompositeExtract %float %475 0 + %641 = OpCompositeExtract %float %634 0 + %642 = OpCompositeConstruct %v2float %640 %641 + %643 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %667 - %668 = OpIAdd %int %int_1 %643 - %669 = OpAccessChain %_ptr_Function_int %stack %531 - %670 = OpLoad %int %669 - %671 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %671 %31 - %672 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %672 %670 - %673 = OpCompositeExtract %float %510 1 - %674 = OpCompositeExtract %float %510 1 - %675 = OpCompositeExtract %float %488 0 - %676 = OpCompositeConstruct %v3float %673 %674 %675 - %677 = OpLoad %int %param_5 + OpStore %param_5 %643 + %644 = OpIAdd %int %int_1 %619 + %645 = OpAccessChain %_ptr_Function_int %stack %511 + %646 = OpLoad %int %645 + %647 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %647 %31 + %648 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %648 %646 + %649 = OpCompositeExtract %float %490 1 + %650 = OpCompositeExtract %float %490 1 + %651 = OpCompositeExtract %float %468 0 + %652 = OpCompositeConstruct %v3float %649 %650 %651 + %653 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %677 - %678 = OpAccessChain %_ptr_Function_int %stack %668 - OpStore %678 %659 - %679 = OpLoad %int %top - %680 = OpAccessChain %_ptr_Function_int %stack %480 - %681 = OpLoad %int %680 - %682 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %682 %31 - %683 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %683 %681 - %684 = OpCompositeExtract %float %579 1 - %685 = OpCompositeExtract %float %579 0 - %686 = OpCompositeConstruct %v2float %684 %685 - %687 = OpAccessChain %_ptr_Function_int %stack %668 - %688 = OpLoad %int %687 - %689 = OpAccessChain %_ptr_Function_int %stack %668 - OpStore %689 %31 - %690 = OpAccessChain %_ptr_Function_int %stack %668 - OpStore %690 %688 - %692 = OpBitcast %uint %679 - %693 = OpIAdd %uint %uint_1 %692 - %691 = OpBitcast %int %693 - %694 = OpAccessChain %_ptr_Function_int %stack %480 - %695 = OpLoad %int %694 - %696 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %696 %31 - %697 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %697 %695 - %698 = OpCompositeExtract %float %590 2 - %699 = OpCompositeExtract %float %686 1 - %700 = OpCompositeExtract %float %590 2 - %701 = OpCompositeConstruct %v3float %698 %699 %700 - %702 = OpLoad %int %h_1 + OpStore %param_5 %653 + %654 = OpAccessChain %_ptr_Function_int %stack %644 + OpStore %654 %635 + %655 = OpLoad %int %top + %656 = OpAccessChain %_ptr_Function_int %stack %460 + %657 = OpLoad %int %656 + %658 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %658 %31 + %659 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %659 %657 + %660 = OpCompositeExtract %float %556 1 + %661 = OpCompositeExtract %float %556 0 + %662 = OpCompositeConstruct %v2float %660 %661 + %663 = OpAccessChain %_ptr_Function_int %stack %644 + %664 = OpLoad %int %663 + %665 = OpAccessChain %_ptr_Function_int %stack %644 + OpStore %665 %31 + %666 = OpAccessChain %_ptr_Function_int %stack %644 + OpStore %666 %664 + %668 = OpBitcast %uint %655 + %669 = OpIAdd %uint %uint_1 %668 + %667 = OpBitcast %int %669 + %670 = OpAccessChain %_ptr_Function_int %stack %460 + %671 = OpLoad %int %670 + %672 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %672 %31 + %673 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %673 %671 + %674 = OpCompositeExtract %float %567 2 + %675 = OpCompositeExtract %float %662 1 + %676 = OpCompositeExtract %float %567 2 + %677 = OpCompositeConstruct %v3float %674 %675 %676 + %678 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %702 - OpStore %top %691 - %703 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %703 - %704 = OpLoad %int %p - %705 = OpCompositeExtract %float %590 0 - %706 = OpCompositeExtract %float %569 1 - %707 = OpCompositeConstruct %v2float %705 %706 - %708 = OpAccessChain %_ptr_Function_int %stack %561 - %709 = OpLoad %int %708 - %710 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %710 %31 - %711 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %711 %709 - %712 = OpAccessChain %_ptr_Function_int %stack %561 - %713 = OpLoad %int %712 - %714 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %714 %31 - %715 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %715 %713 - %716 = OpAccessChain %_ptr_Function_int %stack %691 - %717 = OpBitcast %int %uint_1 - %718 = OpISub %int %704 %717 - OpStore %716 %718 - %719 = OpAccessChain %_ptr_Function_int %stack %444 - %720 = OpLoad %int %719 - %721 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %721 %31 - %722 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %722 %720 - %723 = OpCompositeExtract %float %535 2 - %724 = OpCompositeExtract %float %535 1 - %725 = OpCompositeConstruct %v2float %723 %724 - %726 = OpAccessChain %_ptr_Function_int %stack %691 + OpStore %h_1 %678 + OpStore %top %667 + %679 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %679 + %680 = OpLoad %int %p + %681 = OpCompositeExtract %float %567 0 + %682 = OpCompositeExtract %float %219 1 + %683 = OpCompositeConstruct %v2float %681 %682 + %684 = OpAccessChain %_ptr_Function_int %stack %541 + %685 = OpLoad %int %684 + %686 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %686 %31 + %687 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %687 %685 + %688 = OpAccessChain %_ptr_Function_int %stack %541 + %689 = OpLoad %int %688 + %690 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %690 %31 + %691 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %691 %689 + %692 = OpAccessChain %_ptr_Function_int %stack %667 + %693 = OpBitcast %int %uint_1 + %694 = OpISub %int %680 %693 + OpStore %692 %694 + %695 = OpAccessChain %_ptr_Function_int %stack %426 + %696 = OpLoad %int %695 + %697 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %697 %31 + %698 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %698 %696 + %699 = OpCompositeExtract %float %515 2 + %700 = OpCompositeExtract %float %515 1 + %701 = OpCompositeConstruct %v2float %699 %700 + %702 = OpAccessChain %_ptr_Function_int %stack %667 + %703 = OpLoad %int %702 + %704 = OpAccessChain %_ptr_Function_int %stack %667 + OpStore %704 %31 + %705 = OpAccessChain %_ptr_Function_int %stack %667 + OpStore %705 %703 + OpBranch %616 + %616 = OpLabel + %706 = OpAccessChain %_ptr_Function_int %stack %426 + %707 = OpLoad %int %706 + %708 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %708 %31 + %709 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %709 %707 + %711 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %711 + %712 = OpLoad %int %p + %713 = OpAccessChain %_ptr_Function_int %stack %541 + %714 = OpLoad %int %713 + %715 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %715 %31 + %716 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %716 %714 + %717 = OpCompositeExtract %float %534 2 + %718 = OpCompositeExtract %float %418 0 + %719 = OpCompositeExtract %float %418 1 + %720 = OpCompositeConstruct %v3float %717 %718 %719 + %721 = OpLoad %int %p + OpStore %p %31 + OpStore %p %721 + %722 = OpCompositeExtract %float %468 2 + %723 = OpCompositeExtract %float %468 0 + %724 = OpCompositeExtract %float %556 0 + %725 = OpCompositeConstruct %v3float %722 %723 %724 + %726 = OpAccessChain %_ptr_Function_int %stack %541 %727 = OpLoad %int %726 - %728 = OpAccessChain %_ptr_Function_int %stack %691 + %728 = OpAccessChain %_ptr_Function_int %stack %541 OpStore %728 %31 - %729 = OpAccessChain %_ptr_Function_int %stack %691 + %729 = OpAccessChain %_ptr_Function_int %stack %541 OpStore %729 %727 - OpBranch %640 - %640 = OpLabel - %730 = OpAccessChain %_ptr_Function_int %stack %444 - %731 = OpLoad %int %730 - %732 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %732 %31 - %733 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %733 %731 - %734 = OpCompositeExtract %float %37 0 - %735 = OpCompositeExtract %float %37 1 - %736 = OpCompositeConstruct %v2float %734 %735 - %737 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %737 - %738 = OpLoad %int %p - %739 = OpAccessChain %_ptr_Function_int %stack %561 - %740 = OpLoad %int %739 - %741 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %741 %31 - %742 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %742 %740 - %743 = OpCompositeExtract %float %554 2 - %744 = OpCompositeExtract %float %434 0 - %745 = OpCompositeExtract %float %434 1 - %746 = OpCompositeConstruct %v3float %743 %744 %745 - %747 = OpLoad %int %p - OpStore %p %31 - OpStore %p %747 - %748 = OpCompositeExtract %float %488 2 - %749 = OpCompositeExtract %float %488 0 - %750 = OpCompositeExtract %float %579 0 - %751 = OpCompositeConstruct %v3float %748 %749 %750 - %752 = OpAccessChain %_ptr_Function_int %stack %561 - %753 = OpLoad %int %752 - %754 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %754 %31 - %755 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %755 %753 - %756 = OpLoad %int %h_1 - %757 = OpLoad %int %top + %730 = OpLoad %int %h_1 + %731 = OpLoad %int %top OpStore %top %31 - OpStore %top %757 - %758 = OpCompositeExtract %float %461 2 - %759 = OpCompositeExtract %float %529 0 - %760 = OpCompositeExtract %float %461 0 - %761 = OpCompositeConstruct %v3float %758 %759 %760 - %762 = OpAccessChain %_ptr_Function_int %stack %480 - %763 = OpLoad %int %762 - %764 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %764 %31 - %765 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %765 %763 - %766 = OpLoad %int %p + OpStore %top %731 + %732 = OpCompositeExtract %float %443 2 + %733 = OpCompositeExtract %float %509 0 + %734 = OpCompositeExtract %float %443 0 + %735 = OpCompositeConstruct %v3float %732 %733 %734 + %736 = OpAccessChain %_ptr_Function_int %stack %460 + %737 = OpLoad %int %736 + %738 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %738 %31 + %739 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %739 %737 + %740 = OpLoad %int %p OpStore %p %31 - OpStore %p %766 - %768 = OpBitcast %uint %738 - %769 = OpIAdd %uint %uint_1 %768 - %767 = OpBitcast %int %769 - %770 = OpSLessThan %bool %767 %756 - OpSelectionMerge %771 None - OpBranchConditional %770 %772 %771 - %772 = OpLabel - %773 = OpAccessChain %_ptr_Function_int %stack %561 - %774 = OpLoad %int %773 - %775 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %775 %31 - %776 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %776 %774 - %777 = OpCompositeExtract %float %736 1 - %778 = OpCompositeExtract %float %632 0 - %779 = OpCompositeConstruct %v2float %777 %778 - %780 = OpLoad %int %l_1 + OpStore %p %740 + %742 = OpBitcast %uint %712 + %743 = OpIAdd %uint %uint_1 %742 + %741 = OpBitcast %int %743 + %744 = OpSLessThan %bool %741 %730 + OpSelectionMerge %745 None + OpBranchConditional %744 %746 %745 + %746 = OpLabel + %747 = OpAccessChain %_ptr_Function_int %stack %541 + %748 = OpLoad %int %747 + %749 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %749 %31 + %750 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %750 %748 + %751 = OpCompositeExtract %float %710 1 + %752 = OpCompositeExtract %float %608 0 + %753 = OpCompositeConstruct %v2float %751 %752 + %754 = OpLoad %int %l_1 OpStore %l_1 %31 - OpStore %l_1 %780 - %781 = OpLoad %int %top - %782 = OpAccessChain %_ptr_Function_int %stack %561 - %783 = OpLoad %int %782 - %784 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %784 %31 - %785 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %785 %783 - %786 = OpCompositeExtract %float %475 1 - %787 = OpCompositeExtract %float %461 1 - %788 = OpCompositeExtract %float %461 1 - %789 = OpCompositeConstruct %v3float %786 %787 %788 - %790 = OpIAdd %int %781 %int_1 - %791 = OpLoad %int %param_5 + OpStore %l_1 %754 + %755 = OpLoad %int %top + %756 = OpAccessChain %_ptr_Function_int %stack %541 + %757 = OpLoad %int %756 + %758 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %758 %31 + %759 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %759 %757 + %760 = OpCompositeExtract %float %455 1 + %761 = OpCompositeExtract %float %443 1 + %762 = OpCompositeExtract %float %443 1 + %763 = OpCompositeConstruct %v3float %760 %761 %762 + %764 = OpIAdd %int %755 %int_1 + %765 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %791 - OpStore %top %790 - %792 = OpAccessChain %_ptr_Function_int %stack %561 - %793 = OpLoad %int %792 - %794 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %794 %31 - %795 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %795 %793 - %796 = OpLoad %int %p - %797 = OpLoad %int %param_5 + OpStore %param_5 %765 + OpStore %top %764 + %766 = OpAccessChain %_ptr_Function_int %stack %541 + %767 = OpLoad %int %766 + %768 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %768 %31 + %769 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %769 %767 + %770 = OpLoad %int %p + %771 = OpLoad %int %param_5 OpStore %param_5 %31 - OpStore %param_5 %797 - %798 = OpCompositeExtract %float %461 2 - %799 = OpCompositeExtract %float %461 0 - %800 = OpCompositeExtract %float %529 0 - %801 = OpCompositeConstruct %v3float %798 %799 %800 - %802 = OpLoad %int %p + OpStore %param_5 %771 + %772 = OpCompositeExtract %float %443 2 + %773 = OpCompositeExtract %float %443 0 + %774 = OpCompositeExtract %float %509 0 + %775 = OpCompositeConstruct %v3float %772 %773 %774 + %776 = OpLoad %int %p OpStore %p %31 - OpStore %p %802 - %803 = OpCompositeExtract %float %434 0 - %804 = OpCompositeExtract %float %621 0 - %805 = OpCompositeExtract %float %621 0 - %806 = OpCompositeConstruct %v3float %803 %804 %805 - %807 = OpAccessChain %_ptr_Function_int %stack %480 - %808 = OpLoad %int %807 - %809 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %809 %31 - %810 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %810 %808 - %811 = OpAccessChain %_ptr_Function_int %stack %531 - %812 = OpLoad %int %811 - %813 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %813 %31 - %814 = OpAccessChain %_ptr_Function_int %stack %531 - OpStore %814 %812 - %815 = OpCompositeExtract %float %488 0 - %816 = OpCompositeExtract %float %488 1 - %817 = OpCompositeConstruct %v2float %815 %816 - %818 = OpAccessChain %_ptr_Function_int %stack %790 - %820 = OpBitcast %uint %796 - %821 = OpIAdd %uint %uint_1 %820 - %819 = OpBitcast %int %821 - OpStore %818 %819 - %822 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %822 - %823 = OpLoad %int %top - %824 = OpAccessChain %_ptr_Function_int %stack %561 - %825 = OpLoad %int %824 - %826 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %826 %31 - %827 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %827 %825 - %828 = OpCompositeExtract %float %500 1 - %829 = OpCompositeExtract %float %801 1 - %830 = OpCompositeConstruct %v2float %828 %829 - %831 = OpLoad %_arr_int_uint_10 %stack - OpStore %stack %101 - OpStore %stack %831 - %832 = OpBitcast %int %uint_1 - %833 = OpIAdd %int %823 %832 - %834 = OpAccessChain %_ptr_Function_int %stack %790 - %835 = OpLoad %int %834 - %836 = OpAccessChain %_ptr_Function_int %stack %790 - OpStore %836 %31 - %837 = OpAccessChain %_ptr_Function_int %stack %790 - OpStore %837 %835 - OpStore %top %833 - %838 = OpLoad %int %param_4 + OpStore %p %776 + %777 = OpCompositeExtract %float %418 0 + %778 = OpCompositeExtract %float %597 0 + %779 = OpCompositeExtract %float %597 0 + %780 = OpCompositeConstruct %v3float %777 %778 %779 + %781 = OpAccessChain %_ptr_Function_int %stack %460 + %782 = OpLoad %int %781 + %783 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %783 %31 + %784 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %784 %782 + %785 = OpAccessChain %_ptr_Function_int %stack %511 + %786 = OpLoad %int %785 + %787 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %787 %31 + %788 = OpAccessChain %_ptr_Function_int %stack %511 + OpStore %788 %786 + %789 = OpCompositeExtract %float %468 0 + %790 = OpCompositeExtract %float %468 1 + %791 = OpCompositeConstruct %v2float %789 %790 + %792 = OpAccessChain %_ptr_Function_int %stack %764 + %794 = OpBitcast %uint %770 + %795 = OpIAdd %uint %uint_1 %794 + %793 = OpBitcast %int %795 + OpStore %792 %793 + %796 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %796 + %797 = OpLoad %int %top + %798 = OpAccessChain %_ptr_Function_int %stack %541 + %799 = OpLoad %int %798 + %800 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %800 %31 + %801 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %801 %799 + %802 = OpCompositeExtract %float %480 1 + %803 = OpCompositeExtract %float %775 1 + %804 = OpCompositeConstruct %v2float %802 %803 + %805 = OpLoad %_arr_int_uint_10 %stack + OpStore %stack %96 + OpStore %stack %805 + %806 = OpBitcast %int %uint_1 + %807 = OpIAdd %int %797 %806 + %808 = OpAccessChain %_ptr_Function_int %stack %764 + %809 = OpLoad %int %808 + %810 = OpAccessChain %_ptr_Function_int %stack %764 + OpStore %810 %31 + %811 = OpAccessChain %_ptr_Function_int %stack %764 + OpStore %811 %809 + OpStore %top %807 + %812 = OpLoad %int %param_4 OpStore %param_4 %31 - OpStore %param_4 %838 - %839 = OpLoad %int %h_1 - %840 = OpAccessChain %_ptr_Function_int %stack %480 - %841 = OpLoad %int %840 - %842 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %842 %31 - %843 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %843 %841 - %844 = OpAccessChain %_ptr_Function_int %stack %444 - %845 = OpLoad %int %844 - %846 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %846 %31 - %847 = OpAccessChain %_ptr_Function_int %stack %444 - OpStore %847 %845 - %848 = OpAccessChain %_ptr_Function_int %stack %833 - OpStore %848 %839 - %849 = OpAccessChain %_ptr_Function_int %stack %561 - %850 = OpLoad %int %849 - %851 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %851 %31 - %852 = OpAccessChain %_ptr_Function_int %stack %561 - OpStore %852 %850 - %853 = OpCompositeExtract %float %529 1 - %854 = OpCompositeExtract %float %495 0 - %855 = OpCompositeExtract %float %495 0 - %856 = OpCompositeConstruct %v3float %853 %854 %855 - %857 = OpLoad %int %l_1 + OpStore %param_4 %812 + %813 = OpLoad %int %h_1 + %814 = OpAccessChain %_ptr_Function_int %stack %460 + %815 = OpLoad %int %814 + %816 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %816 %31 + %817 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %817 %815 + %818 = OpAccessChain %_ptr_Function_int %stack %426 + %819 = OpLoad %int %818 + %820 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %820 %31 + %821 = OpAccessChain %_ptr_Function_int %stack %426 + OpStore %821 %819 + %822 = OpAccessChain %_ptr_Function_int %stack %807 + OpStore %822 %813 + %823 = OpAccessChain %_ptr_Function_int %stack %541 + %824 = OpLoad %int %823 + %825 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %825 %31 + %826 = OpAccessChain %_ptr_Function_int %stack %541 + OpStore %826 %824 + %827 = OpCompositeExtract %float %509 1 + %828 = OpCompositeExtract %float %475 0 + %829 = OpCompositeExtract %float %475 0 + %830 = OpCompositeConstruct %v3float %827 %828 %829 + %831 = OpLoad %int %l_1 OpStore %l_1 %31 - OpStore %l_1 %857 - OpBranch %771 - %771 = OpLabel - %858 = OpAccessChain %_ptr_Function_int %stack %480 - %859 = OpLoad %int %858 - %860 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %860 %31 - %861 = OpAccessChain %_ptr_Function_int %stack %480 - OpStore %861 %859 - OpBranch %505 - %505 = OpLabel - %862 = OpLoad %int %l_1 + OpStore %l_1 %831 + OpBranch %745 + %745 = OpLabel + %832 = OpAccessChain %_ptr_Function_int %stack %460 + %833 = OpLoad %int %832 + %834 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %834 %31 + %835 = OpAccessChain %_ptr_Function_int %stack %460 + OpStore %835 %833 + OpBranch %485 + %485 = OpLabel + %836 = OpLoad %int %l_1 OpStore %l_1 %31 - OpStore %l_1 %862 - %863 = OpCompositeExtract %float %488 2 - %864 = OpCompositeExtract %float %495 0 - %865 = OpCompositeConstruct %v2float %863 %864 - %866 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %866 - OpBranch %503 - %504 = OpLabel - %867 = OpLoad %int %h_1 + OpStore %l_1 %836 + %837 = OpCompositeExtract %float %468 2 + %838 = OpCompositeExtract %float %475 0 + %839 = OpCompositeConstruct %v2float %837 %838 + %840 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %840 + OpBranch %483 + %484 = OpLabel + %841 = OpLoad %int %h_1 OpStore %h_1 %31 - OpStore %h_1 %867 + OpStore %h_1 %841 OpReturn OpFunctionEnd - %main_1 = OpFunction %void None %418 - %869 = OpLabel - %color = OpVariable %_ptr_Function_v3float Function %170 + %main_1 = OpFunction %void None %404 + %843 = OpLabel + %color = OpVariable %_ptr_Function_v3float Function %165 %i_2 = OpVariable %_ptr_Function_int Function %31 - %uv = OpVariable %_ptr_Function_v2float Function %167 - %873 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %873 + %uv = OpVariable %_ptr_Function_v2float Function %162 + %847 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %847 OpStore %i_2 %31 + %848 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %848 + OpSelectionMerge %850 None + OpBranchConditional %true %851 %850 + %851 = OpLabel + %852 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %852 + %853 = OpLoad %int %i_2 + %854 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %854 + %855 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %855 + %856 = OpCompositeExtract %float %423 1 + %857 = OpCompositeExtract %float %423 1 + %858 = OpCompositeConstruct %v2float %856 %857 + %859 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %859 + OpBranch %850 + %850 = OpLabel + %860 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %860 + %861 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %861 + %862 = OpFunctionCall %void %quicksort_ + %863 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %863 + %864 = OpLoad %v4float %gl_FragCoord + %865 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %865 + %866 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %866 + %867 = OpCompositeExtract %float %864 0 + %868 = OpCompositeExtract %float %864 1 + %869 = OpCompositeConstruct %v2float %867 %868 + %870 = OpCompositeExtract %float %869 1 + %871 = OpCompositeExtract %float %162 1 + %872 = OpCompositeExtract %float %162 1 + %873 = OpCompositeConstruct %v3float %870 %871 %872 %874 = OpLoad %QuicksortObject %obj - OpStore %obj %102 + OpStore %obj %97 OpStore %obj %874 - OpSelectionMerge %876 None - OpBranchConditional %true %877 %876 - %877 = OpLabel - %878 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %878 - %879 = OpCompositeExtract %float %37 0 - %880 = OpCompositeExtract %float %37 0 - %881 = OpCompositeConstruct %v2float %879 %880 - %882 = OpLoad %int %i_2 - %883 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %883 - %884 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %884 - %885 = OpCompositeExtract %float %881 1 - %886 = OpCompositeExtract %float %881 1 - %887 = OpCompositeConstruct %v2float %885 %886 - %888 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %888 - OpBranch %876 - %876 = OpLabel - %889 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %889 - %890 = OpCompositeExtract %float %167 0 - %891 = OpCompositeExtract %float %167 0 - %892 = OpCompositeConstruct %v2float %890 %891 - %893 = OpLoad %int %i_2 + %875 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %875 + %877 = OpAccessChain %_ptr_Uniform_v2float %x_188 %uint_0 + %878 = OpLoad %v2float %877 + %879 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %879 + %880 = OpCompositeExtract %float %864 1 + %881 = OpCompositeExtract %float %864 3 + %882 = OpCompositeConstruct %v3float %880 %float_3 %881 + %883 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %883 + %884 = OpFDiv %v2float %869 %878 + %885 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %885 + %886 = OpCompositeExtract %float %162 0 + %887 = OpCompositeExtract %float %869 1 + %888 = OpCompositeConstruct %v2float %886 %887 + %889 = OpLoad %v3float %color + OpStore %color %165 + %890 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %890 + OpStore %color %889 + OpStore %uv %884 + OpStore %color %891 + %892 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %892 + %893 = OpCompositeExtract %float %869 0 + %894 = OpCompositeExtract %float %869 1 + %895 = OpCompositeExtract %float %162 1 + %896 = OpCompositeConstruct %v3float %893 %894 %895 + %897 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %897 + %898 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %899 = OpLoad %int %898 + %900 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %900 %31 + %901 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %901 %899 + %902 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %903 = OpLoad %int %902 + %904 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %904 + %905 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %906 = OpLoad %int %905 + %907 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %907 %31 + %908 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %908 %906 + %909 = OpAccessChain %_ptr_Function_float %color %uint_0 + %910 = OpLoad %float %909 + %911 = OpAccessChain %_ptr_Function_float %color %uint_0 + %912 = OpLoad %float %911 + %913 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %913 %914 + %915 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %915 %912 + %917 = OpLoad %int %i_2 OpStore %i_2 %31 - OpStore %i_2 %893 - %894 = OpFunctionCall %void %quicksort_ - %895 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %895 - %896 = OpLoad %v4float %gl_FragCoord - %897 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %897 - %898 = OpCompositeExtract %float %167 1 - %899 = OpCompositeExtract %float %167 1 - %900 = OpCompositeConstruct %v2float %898 %899 - %901 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %901 - %902 = OpCompositeExtract %float %896 0 - %903 = OpCompositeExtract %float %896 1 - %904 = OpCompositeConstruct %v2float %902 %903 - %905 = OpCompositeExtract %float %904 1 - %906 = OpCompositeExtract %float %892 1 - %907 = OpCompositeExtract %float %892 1 - %908 = OpCompositeConstruct %v3float %905 %906 %907 - %909 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %909 - %910 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %910 - %912 = OpAccessChain %_ptr_Uniform_v2float %x_188 %uint_0 - %913 = OpLoad %v2float %912 - %914 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %914 - %915 = OpCompositeExtract %float %896 1 - %916 = OpCompositeExtract %float %37 2 - %917 = OpCompositeExtract %float %896 3 - %918 = OpCompositeConstruct %v3float %915 %916 %917 - %919 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %919 - %920 = OpFDiv %v2float %904 %913 - %921 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %921 - %922 = OpCompositeExtract %float %900 0 - %923 = OpCompositeExtract %float %904 1 - %924 = OpCompositeConstruct %v2float %922 %923 - %925 = OpLoad %v3float %color - OpStore %color %170 - %926 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %926 - OpStore %color %925 - OpStore %uv %920 - OpStore %color %37 - %927 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %927 - %928 = OpCompositeExtract %float %904 0 - %929 = OpCompositeExtract %float %904 1 - %930 = OpCompositeExtract %float %892 1 - %931 = OpCompositeConstruct %v3float %928 %929 %930 - %932 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %932 - %933 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %934 = OpLoad %int %933 - %935 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %935 %31 - %936 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %936 %934 - %937 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %938 = OpLoad %int %937 - %939 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %939 - %940 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %941 = OpLoad %int %940 - %942 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %942 %31 - %943 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %943 %941 - %944 = OpAccessChain %_ptr_Function_float %color %uint_0 - %945 = OpLoad %float %944 - %946 = OpAccessChain %_ptr_Function_float %color %uint_0 - %947 = OpLoad %float %946 - %948 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %948 %949 - %950 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %950 %947 - %951 = OpCompositeExtract %float %37 2 - %952 = OpCompositeExtract %float %37 1 - %953 = OpCompositeConstruct %v2float %951 %952 - %954 = OpLoad %int %i_2 + OpStore %i_2 %917 + %918 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %918 + %919 = OpCompositeExtract %float %896 0 + %920 = OpCompositeExtract %float %888 0 + %921 = OpCompositeExtract %float %888 1 + %922 = OpCompositeConstruct %v3float %919 %920 %921 + %923 = OpAccessChain %_ptr_Function_float %color %uint_0 + %924 = OpConvertSToF %float %903 + %925 = OpFAdd %float %910 %924 + OpStore %923 %925 + %926 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %926 + %927 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %927 + %928 = OpCompositeExtract %float %864 1 + %929 = OpCompositeExtract %float %864 1 + %930 = OpCompositeConstruct %v2float %928 %929 + %931 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %932 = OpLoad %float %931 + %933 = OpCompositeExtract %float %884 1 + %934 = OpCompositeExtract %float %884 0 + %935 = OpCompositeConstruct %v2float %933 %934 + %936 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %937 = OpLoad %float %936 + %938 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %938 %914 + %939 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %939 %937 + %940 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %940 + %942 = OpFOrdGreaterThan %bool %932 %float_0_25 + OpSelectionMerge %943 None + OpBranchConditional %942 %944 %943 + %944 = OpLabel + %945 = OpLoad %int %i_2 OpStore %i_2 %31 - OpStore %i_2 %954 - %955 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %955 - %956 = OpCompositeExtract %float %931 0 - %957 = OpCompositeExtract %float %924 0 - %958 = OpCompositeExtract %float %924 1 - %959 = OpCompositeConstruct %v3float %956 %957 %958 - %960 = OpAccessChain %_ptr_Function_float %color %uint_0 - %961 = OpConvertSToF %float %938 - %962 = OpFAdd %float %945 %961 - OpStore %960 %962 + OpStore %i_2 %945 + %946 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %947 = OpLoad %int %946 + %948 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %948 %31 + %949 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %949 %947 + %950 = OpCompositeExtract %float %873 1 + %951 = OpCompositeExtract %float %873 1 + %952 = OpCompositeConstruct %v3float %914 %950 %951 + %953 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %954 = OpLoad %float %953 + %955 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %955 %914 + %956 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %956 %954 + %957 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1 + %958 = OpLoad %int %957 + %959 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %959 + %960 = OpCompositeExtract %float %930 0 + %961 = OpCompositeExtract %float %930 0 + %962 = OpCompositeConstruct %v2float %960 %961 %963 = OpLoad %v2float %uv - OpStore %uv %167 + OpStore %uv %162 OpStore %uv %963 - %964 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %964 - %965 = OpCompositeExtract %float %896 1 - %966 = OpCompositeExtract %float %896 1 - %967 = OpCompositeConstruct %v2float %965 %966 - %968 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %969 = OpLoad %float %968 - %970 = OpCompositeExtract %float %920 1 - %971 = OpCompositeExtract %float %920 0 - %972 = OpCompositeConstruct %v2float %970 %971 - %973 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %974 = OpLoad %float %973 - %975 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %975 %949 - %976 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %976 %974 - %977 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %977 - %979 = OpFOrdGreaterThan %bool %969 %float_0_25 - OpSelectionMerge %980 None - OpBranchConditional %979 %981 %980 - %981 = OpLabel - %982 = OpLoad %int %i_2 + %964 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %964 + %966 = OpLoad %int %i_2 OpStore %i_2 %31 - OpStore %i_2 %982 - %983 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %984 = OpLoad %int %983 - %985 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %985 %31 - %986 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %986 %984 - %987 = OpCompositeExtract %float %167 1 - %988 = OpCompositeExtract %float %908 1 - %989 = OpCompositeExtract %float %908 1 - %990 = OpCompositeConstruct %v3float %987 %988 %989 - %991 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %992 = OpLoad %float %991 + OpStore %i_2 %966 + %967 = OpAccessChain %_ptr_Function_float %color %31 + %968 = OpLoad %float %967 + %969 = OpAccessChain %_ptr_Function_float %color %31 + %970 = OpLoad %float %969 + %971 = OpAccessChain %_ptr_Function_float %color %31 + OpStore %971 %914 + %972 = OpAccessChain %_ptr_Function_float %color %31 + OpStore %972 %970 + %973 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %973 + %974 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %974 + %975 = OpCompositeExtract %float %930 1 + %976 = OpCompositeExtract %float %930 1 + %977 = OpCompositeExtract %float %162 1 + %978 = OpCompositeConstruct %v3float %975 %976 %977 + %979 = OpAccessChain %_ptr_Function_float %color %31 + %980 = OpLoad %float %979 + %981 = OpAccessChain %_ptr_Function_float %color %31 + OpStore %981 %914 + %982 = OpAccessChain %_ptr_Function_float %color %31 + OpStore %982 %980 + %983 = OpAccessChain %_ptr_Function_float %color %uint_0 + %984 = OpConvertSToF %float %958 + %985 = OpFAdd %float %984 %968 + OpStore %983 %985 + %986 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %987 = OpLoad %int %986 + %988 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %988 %31 + %989 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %989 %987 + OpBranch %943 + %943 = OpLabel + %990 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %991 = OpLoad %float %990 + %992 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %992 %914 %993 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %993 %949 + OpStore %993 %991 %994 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %994 %992 - %995 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_1 - %996 = OpLoad %int %995 - %997 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %997 - %998 = OpCompositeExtract %float %967 0 - %999 = OpCompositeExtract %float %967 0 - %1000 = OpCompositeConstruct %v2float %998 %999 - %1001 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %1001 - %1002 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1002 - %1003 = OpCompositeExtract %float %37 2 - %1004 = OpCompositeExtract %float %167 1 - %1005 = OpCompositeConstruct %v2float %1003 %1004 - %1006 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1006 - %1007 = OpAccessChain %_ptr_Function_float %color %31 - %1008 = OpLoad %float %1007 - %1009 = OpAccessChain %_ptr_Function_float %color %31 + %995 = OpLoad %float %994 + %996 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %996 %914 + %997 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %997 %995 + %998 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %999 = OpLoad %float %998 + %1000 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1001 = OpLoad %float %1000 + %1002 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1002 %914 + %1003 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1003 %1001 + %1004 = OpCompositeExtract %float %922 2 + %1005 = OpCompositeExtract %float %922 1 + %1006 = OpCompositeExtract %float %922 1 + %1007 = OpCompositeConstruct %v3float %1004 %1005 %1006 + %1008 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %1008 + %1009 = OpAccessChain %_ptr_Function_float %uv %uint_0 %1010 = OpLoad %float %1009 - %1011 = OpAccessChain %_ptr_Function_float %color %31 - OpStore %1011 %949 - %1012 = OpAccessChain %_ptr_Function_float %color %31 + %1011 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1011 %914 + %1012 = OpAccessChain %_ptr_Function_float %uv %uint_0 OpStore %1012 %1010 - %1013 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1013 - %1014 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1014 - %1015 = OpCompositeExtract %float %967 1 - %1016 = OpCompositeExtract %float %967 1 - %1017 = OpCompositeExtract %float %900 1 - %1018 = OpCompositeConstruct %v3float %1015 %1016 %1017 - %1019 = OpAccessChain %_ptr_Function_float %color %31 - %1020 = OpLoad %float %1019 - %1021 = OpAccessChain %_ptr_Function_float %color %31 - OpStore %1021 %949 - %1022 = OpAccessChain %_ptr_Function_float %color %31 - OpStore %1022 %1020 - %1023 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1024 = OpConvertSToF %float %996 - %1025 = OpFAdd %float %1024 %1008 - OpStore %1023 %1025 - %1026 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %1027 = OpLoad %int %1026 - %1028 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1028 %31 - %1029 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1029 %1027 - OpBranch %980 - %980 = OpLabel - %1030 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1031 = OpLoad %float %1030 - %1032 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1032 %949 - %1033 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1033 %1031 - %1034 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1035 = OpLoad %float %1034 - %1036 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1036 %949 - %1037 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1037 %1035 - %1038 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1039 = OpLoad %float %1038 - %1040 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1013 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1014 = OpLoad %float %1013 + %1015 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1015 %914 + %1016 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1016 %1014 + %1018 = OpFOrdGreaterThan %bool %999 %float_0_5 + OpSelectionMerge %1019 None + OpBranchConditional %1018 %1020 %1019 + %1020 = OpLabel + %1021 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1022 = OpLoad %float %1021 + %1023 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1023 %914 + %1024 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1024 %1022 + %1025 = OpCompositeExtract %float %162 0 + %1026 = OpCompositeExtract %float %162 0 + %1027 = OpCompositeConstruct %v2float %1025 %1026 + %1028 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1029 = OpLoad %float %1028 + %1030 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1030 %914 + %1031 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1031 %1029 + %1032 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1033 = OpLoad %float %1032 + %1034 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1034 %914 + %1035 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1035 %1033 + %1036 = OpCompositeExtract %float %922 0 + %1037 = OpCompositeExtract %float %922 2 + %1038 = OpCompositeExtract %float %162 1 + %1039 = OpCompositeConstruct %v3float %1036 %1037 %1038 + %1040 = OpAccessChain %_ptr_Function_float %color %uint_0 %1041 = OpLoad %float %1040 - %1042 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1042 %949 - %1043 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1042 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1042 %914 + %1043 = OpAccessChain %_ptr_Function_float %color %uint_0 OpStore %1043 %1041 - %1044 = OpCompositeExtract %float %959 2 - %1045 = OpCompositeExtract %float %959 1 - %1046 = OpCompositeExtract %float %959 1 - %1047 = OpCompositeConstruct %v3float %1044 %1045 %1046 - %1048 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %1048 + %1045 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 + %1046 = OpLoad %int %1045 + %1047 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1048 = OpLoad %float %1047 %1049 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1050 = OpLoad %float %1049 - %1051 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1051 %949 - %1052 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1052 %1050 - %1053 = OpCompositeExtract %float %167 1 - %1054 = OpCompositeExtract %float %167 1 - %1055 = OpCompositeConstruct %v2float %1053 %1054 - %1056 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1057 = OpLoad %float %1056 - %1058 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1058 %949 - %1059 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1059 %1057 - %1061 = OpFOrdGreaterThan %bool %1039 %float_0_5 - OpSelectionMerge %1062 None - OpBranchConditional %1061 %1063 %1062 - %1063 = OpLabel - %1064 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1065 = OpLoad %float %1064 - %1066 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1066 %949 - %1067 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1067 %1065 - %1068 = OpCompositeExtract %float %892 0 - %1069 = OpCompositeExtract %float %892 0 - %1070 = OpCompositeConstruct %v2float %1068 %1069 - %1071 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1072 = OpLoad %float %1071 - %1073 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1073 %949 - %1074 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1074 %1072 + OpStore %1049 %914 + %1050 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1050 %1048 + %1051 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1052 = OpLoad %float %1051 + %1053 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1053 %914 + %1054 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1054 %1052 + %1055 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 + %1056 = OpLoad %int %1055 + %1057 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 + OpStore %1057 %31 + %1058 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 + OpStore %1058 %1056 + %1059 = OpCompositeExtract %float %888 1 + %1060 = OpCompositeExtract %float %878 0 + %1061 = OpCompositeConstruct %v2float %1059 %1060 + %1062 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1063 = OpLoad %float %1062 + %1064 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1064 %914 + %1065 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1065 %1063 + %1066 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1067 = OpLoad %float %1066 + %1068 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 + %1069 = OpLoad %int %1068 + %1070 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 + OpStore %1070 %31 + %1071 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 + OpStore %1071 %1069 + %1072 = OpCompositeExtract %float %1039 0 + %1073 = OpCompositeExtract %float %869 0 + %1074 = OpCompositeConstruct %v2float %1072 %1073 %1075 = OpAccessChain %_ptr_Function_float %color %uint_0 %1076 = OpLoad %float %1075 %1077 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1077 %949 + OpStore %1077 %914 %1078 = OpAccessChain %_ptr_Function_float %color %uint_0 OpStore %1078 %1076 - %1079 = OpCompositeExtract %float %959 0 - %1080 = OpCompositeExtract %float %959 2 - %1081 = OpCompositeExtract %float %1055 1 - %1082 = OpCompositeConstruct %v3float %1079 %1080 %1081 - %1083 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1084 = OpLoad %float %1083 - %1085 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1085 %949 - %1086 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1086 %1084 - %1088 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 - %1089 = OpLoad %int %1088 - %1090 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1091 = OpLoad %float %1090 - %1092 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1092 %949 - %1093 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1093 %1091 - %1094 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1079 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1079 + %1080 = OpCompositeExtract %float %935 1 + %1081 = OpCompositeConstruct %v2float %1080 %914 + %1082 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1082 + %1083 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1084 = OpConvertSToF %float %1046 + %1085 = OpFAdd %float %1084 %1067 + OpStore %1083 %1085 + %1086 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1087 = OpLoad %float %1086 + %1088 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1088 %914 + %1089 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1089 %1087 + OpBranch %1019 + %1019 = OpLabel + %1090 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1090 + %1091 = OpCompositeExtract %float %878 0 + %1092 = OpCompositeExtract %float %878 0 + %1093 = OpCompositeConstruct %v2float %1091 %1092 + %1094 = OpAccessChain %_ptr_Function_float %uv %uint_0 %1095 = OpLoad %float %1094 - %1096 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1096 %949 - %1097 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1096 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1096 %914 + %1097 = OpAccessChain %_ptr_Function_float %uv %uint_0 OpStore %1097 %1095 - %1098 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 - %1099 = OpLoad %int %1098 - %1100 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 - OpStore %1100 %31 - %1101 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 - OpStore %1101 %1099 - %1102 = OpCompositeExtract %float %924 1 - %1103 = OpCompositeExtract %float %913 0 - %1104 = OpCompositeConstruct %v2float %1102 %1103 - %1105 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1106 = OpLoad %float %1105 - %1107 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1107 %949 - %1108 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1108 %1106 - %1109 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1098 = OpAccessChain %_ptr_Function_float %uv %31 + %1099 = OpLoad %float %1098 + %1100 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1100 + %1101 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1102 = OpLoad %float %1101 + %1103 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1103 %914 + %1104 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1104 %1102 + %1106 = OpFOrdGreaterThan %bool %1099 %float_0_75 + OpSelectionMerge %1107 None + OpBranchConditional %1106 %1108 %1107 + %1108 = OpLabel + %1109 = OpAccessChain %_ptr_Function_float %color %uint_0 %1110 = OpLoad %float %1109 - %1111 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 - %1112 = OpLoad %int %1111 - %1113 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 - OpStore %1113 %31 - %1114 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_2 - OpStore %1114 %1112 - %1115 = OpCompositeExtract %float %1082 0 - %1116 = OpCompositeExtract %float %904 0 - %1117 = OpCompositeConstruct %v2float %1115 %1116 + %1111 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1111 %914 + %1112 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1112 %1110 + %1114 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3 + %1115 = OpLoad %int %1114 + %1116 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1117 = OpLoad %float %1116 %1118 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1119 = OpLoad %float %1118 - %1120 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1120 %949 - %1121 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1121 %1119 - %1122 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1122 - %1123 = OpCompositeExtract %float %972 1 - %1124 = OpCompositeExtract %float %167 1 - %1125 = OpCompositeConstruct %v2float %1123 %1124 - %1126 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1126 - %1127 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1128 = OpConvertSToF %float %1089 - %1129 = OpFAdd %float %1128 %1110 - OpStore %1127 %1129 - %1130 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1131 = OpLoad %float %1130 + OpStore %1118 %914 + %1119 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1119 %1117 + %1120 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1120 + %1121 = OpCompositeExtract %float %1093 0 + %1122 = OpCompositeExtract %float %1093 0 + %1123 = OpCompositeExtract %float %1093 0 + %1124 = OpCompositeConstruct %v3float %1121 %1122 %1123 + %1125 = OpAccessChain %_ptr_Function_float %uv %31 + %1126 = OpLoad %float %1125 + %1127 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1127 %914 + %1128 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1128 %1126 + %1129 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1130 = OpLoad %float %1129 + %1131 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1131 %914 %1132 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1132 %949 - %1133 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1133 %1131 - OpBranch %1062 - %1062 = OpLabel - %1134 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1134 - %1135 = OpCompositeExtract %float %913 0 - %1136 = OpCompositeExtract %float %913 0 - %1137 = OpCompositeConstruct %v2float %1135 %1136 - %1138 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1139 = OpLoad %float %1138 - %1140 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1140 %949 - %1141 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1141 %1139 - %1142 = OpAccessChain %_ptr_Function_float %uv %31 - %1143 = OpLoad %float %1142 - %1144 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1144 - %1145 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1146 = OpLoad %float %1145 - %1147 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1147 %949 - %1148 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1148 %1146 - %1150 = OpFOrdGreaterThan %bool %1143 %float_0_75 - OpSelectionMerge %1151 None - OpBranchConditional %1150 %1152 %1151 - %1152 = OpLabel - %1153 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1154 = OpLoad %float %1153 - %1155 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1155 %949 - %1156 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1156 %1154 - %1158 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_3 - %1159 = OpLoad %int %1158 - %1160 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1161 = OpLoad %float %1160 - %1162 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1162 %949 - %1163 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1163 %1161 - %1164 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1164 - %1165 = OpCompositeExtract %float %1137 0 - %1166 = OpCompositeExtract %float %1137 0 - %1167 = OpCompositeExtract %float %1137 0 - %1168 = OpCompositeConstruct %v3float %1165 %1166 %1167 - %1169 = OpAccessChain %_ptr_Function_float %uv %31 - %1170 = OpLoad %float %1169 - %1171 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1171 %949 + OpStore %1132 %1130 + %1133 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1134 = OpLoad %float %1133 + %1135 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1135 + %1136 = OpCompositeExtract %float %1093 0 + %1137 = OpCompositeExtract %float %878 1 + %1138 = OpCompositeExtract %float %1093 1 + %1139 = OpCompositeConstruct %v3float %1136 %1137 %1138 + %1140 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1141 = OpLoad %float %1140 + %1142 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1142 %914 + %1143 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1143 %1141 + %1144 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %1145 = OpLoad %int %1144 + %1146 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1146 %31 + %1147 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1147 %1145 + %1148 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1149 = OpLoad %float %1148 + %1150 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1150 %914 + %1151 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1151 %1149 + %1152 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1153 = OpConvertSToF %float %1115 + %1154 = OpFAdd %float %1134 %1153 + OpStore %1152 %1154 + %1155 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %1155 + %1156 = OpCompositeExtract %float %162 1 + %1157 = OpCompositeExtract %float %162 1 + %1158 = OpCompositeConstruct %v2float %1156 %1157 + OpBranch %1107 + %1107 = OpLabel + %1159 = OpAccessChain %_ptr_Function_float %uv %31 + %1160 = OpLoad %float %1159 + %1161 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1161 %914 + %1162 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1162 %1160 + %1163 = OpCompositeExtract %float %930 0 + %1164 = OpCompositeExtract %float %930 1 + %1165 = OpCompositeExtract %float %930 1 + %1166 = OpCompositeConstruct %v3float %1163 %1164 %1165 + %1168 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1169 = OpLoad %int %1168 + %1170 = OpAccessChain %_ptr_Function_float %uv %31 + %1171 = OpLoad %float %1170 %1172 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1172 %1170 - %1173 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1174 = OpLoad %float %1173 - %1175 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1175 %949 - %1176 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1176 %1174 - %1177 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1178 = OpLoad %float %1177 - %1179 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1179 - %1180 = OpCompositeExtract %float %1137 0 - %1181 = OpCompositeExtract %float %913 1 - %1182 = OpCompositeExtract %float %1137 1 - %1183 = OpCompositeConstruct %v3float %1180 %1181 %1182 - %1184 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1185 = OpLoad %float %1184 - %1186 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1186 %949 - %1187 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1187 %1185 - %1188 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %1189 = OpLoad %int %1188 - %1190 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1190 %31 - %1191 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1191 %1189 - %1192 = OpCompositeExtract %float %167 0 - %1193 = OpCompositeExtract %float %167 1 - %1194 = OpCompositeConstruct %v2float %1192 %1193 - %1195 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1196 = OpLoad %float %1195 - %1197 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1197 %949 - %1198 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1198 %1196 - %1199 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1200 = OpConvertSToF %float %1159 - %1201 = OpFAdd %float %1178 %1200 - OpStore %1199 %1201 - %1202 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %1202 - %1203 = OpCompositeExtract %float %1194 1 - %1204 = OpCompositeExtract %float %1194 1 - %1205 = OpCompositeConstruct %v2float %1203 %1204 - OpBranch %1151 - %1151 = OpLabel - %1206 = OpAccessChain %_ptr_Function_float %uv %31 - %1207 = OpLoad %float %1206 - %1208 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1208 %949 - %1209 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1209 %1207 - %1210 = OpCompositeExtract %float %967 0 - %1211 = OpCompositeExtract %float %967 1 - %1212 = OpCompositeExtract %float %967 1 - %1213 = OpCompositeConstruct %v3float %1210 %1211 %1212 - %1215 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - %1216 = OpLoad %int %1215 - %1217 = OpAccessChain %_ptr_Function_float %uv %31 - %1218 = OpLoad %float %1217 - %1219 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1219 %949 - %1220 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1220 %1218 - %1221 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1221 - %1222 = OpCompositeExtract %float %892 1 - %1223 = OpCompositeExtract %float %959 0 - %1224 = OpCompositeExtract %float %959 0 - %1225 = OpCompositeConstruct %v3float %1222 %1223 %1224 - %1226 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - %1227 = OpLoad %int %1226 - %1228 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1228 %31 - %1229 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1172 %914 + %1173 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1173 %1171 + %1174 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1174 + %1175 = OpCompositeExtract %float %162 1 + %1176 = OpCompositeExtract %float %922 0 + %1177 = OpCompositeExtract %float %922 0 + %1178 = OpCompositeConstruct %v3float %1175 %1176 %1177 + %1179 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1180 = OpLoad %int %1179 + %1181 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1181 %31 + %1182 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1182 %1180 + %1183 = OpCompositeExtract %float %878 0 + %1184 = OpCompositeExtract %float %864 2 + %1185 = OpCompositeConstruct %v2float %1183 %1184 + %1186 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1187 = OpLoad %float %1186 + %1188 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1188 %914 + %1189 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1189 %1187 + %1190 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1191 = OpLoad %float %1190 + %1192 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1193 = OpLoad %float %1192 + %1194 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1194 %914 + %1195 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1195 %1193 + %1196 = OpCompositeExtract %float %1093 0 + %1197 = OpCompositeExtract %float %888 0 + %1198 = OpCompositeConstruct %v2float %1196 %1197 + %1199 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1200 = OpLoad %float %1199 + %1201 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1201 %914 + %1202 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1202 %1200 + %1203 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1204 = OpLoad %float %1203 + %1205 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1205 %914 + %1206 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1206 %1204 + %1207 = OpCompositeExtract %float %896 2 + %1208 = OpCompositeExtract %float %1007 1 + %1209 = OpCompositeConstruct %v2float %1207 %1208 + %1210 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1211 = OpConvertSToF %float %1169 + %1212 = OpFAdd %float %1191 %1211 + OpStore %1210 %1212 + %1213 = OpCompositeExtract %float %1166 0 + %1214 = OpCompositeConstruct %v3float %914 %1213 %914 + %1215 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1216 = OpLoad %float %1215 + %1217 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1217 %914 + %1218 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1218 %1216 + %1219 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1220 = OpLoad %float %1219 + %1221 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1221 %914 + %1222 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1222 %1220 + %1223 = OpCompositeExtract %float %1166 0 + %1224 = OpCompositeExtract %float %1166 1 + %1225 = OpCompositeConstruct %v2float %1223 %1224 + %1226 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1227 = OpLoad %float %1226 + %1228 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1228 %914 + %1229 = OpAccessChain %_ptr_Function_float %uv %uint_1 OpStore %1229 %1227 - %1230 = OpCompositeExtract %float %913 0 - %1231 = OpCompositeExtract %float %896 2 - %1232 = OpCompositeConstruct %v2float %1230 %1231 - %1233 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1234 = OpLoad %float %1233 - %1235 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1235 %949 - %1236 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1236 %1234 - %1237 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1238 = OpLoad %float %1237 + %1230 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1231 = OpLoad %float %1230 + %1232 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1232 + %1233 = OpCompositeExtract %float %930 1 + %1234 = OpCompositeConstruct %v3float %914 %1233 %914 + %1235 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %1236 = OpLoad %int %1235 + %1237 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1237 %31 + %1238 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1238 %1236 %1239 = OpAccessChain %_ptr_Function_float %color %uint_1 %1240 = OpLoad %float %1239 %1241 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1241 %949 + OpStore %1241 %914 %1242 = OpAccessChain %_ptr_Function_float %color %uint_1 OpStore %1242 %1240 - %1243 = OpCompositeExtract %float %1137 0 - %1244 = OpCompositeExtract %float %924 0 - %1245 = OpCompositeConstruct %v2float %1243 %1244 + %1243 = OpCompositeExtract %float %162 0 + %1244 = OpCompositeExtract %float %162 0 + %1245 = OpCompositeConstruct %v3float %1243 %1244 %914 %1246 = OpAccessChain %_ptr_Function_float %uv %uint_0 %1247 = OpLoad %float %1246 %1248 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1248 %949 + OpStore %1248 %914 %1249 = OpAccessChain %_ptr_Function_float %uv %uint_0 OpStore %1249 %1247 - %1250 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1251 = OpLoad %float %1250 - %1252 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1252 %949 - %1253 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1253 %1251 - %1254 = OpCompositeExtract %float %931 2 - %1255 = OpCompositeExtract %float %1047 1 - %1256 = OpCompositeConstruct %v2float %1254 %1255 - %1257 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1258 = OpConvertSToF %float %1216 - %1259 = OpFAdd %float %1238 %1258 - OpStore %1257 %1259 - %1260 = OpCompositeExtract %float %167 0 - %1261 = OpCompositeExtract %float %1213 0 - %1262 = OpCompositeExtract %float %167 1 - %1263 = OpCompositeConstruct %v3float %1260 %1261 %1262 - %1264 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1265 = OpLoad %float %1264 - %1266 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1266 %949 - %1267 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1267 %1265 - %1268 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1250 = OpFOrdGreaterThan %bool %1231 %float_0_25 + OpSelectionMerge %1251 None + OpBranchConditional %1250 %1252 %1251 + %1252 = OpLabel + %1253 = OpCompositeExtract %float %162 0 + %1254 = OpCompositeExtract %float %1245 2 + %1255 = OpCompositeConstruct %v2float %1253 %1254 + %1256 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1256 + %1258 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_5 + %1259 = OpLoad %int %1258 + %1260 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1261 = OpLoad %float %1260 + %1262 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1262 %914 + %1263 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1263 %1261 + %1264 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1264 + %1265 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1265 + %1266 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1267 = OpLoad %float %1266 + %1268 = OpAccessChain %_ptr_Function_float %uv %31 %1269 = OpLoad %float %1268 - %1270 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1270 %949 - %1271 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1270 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1270 %914 + %1271 = OpAccessChain %_ptr_Function_float %uv %31 OpStore %1271 %1269 - %1272 = OpCompositeExtract %float %1213 0 - %1273 = OpCompositeExtract %float %1213 1 - %1274 = OpCompositeConstruct %v2float %1272 %1273 - %1275 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1276 = OpLoad %float %1275 + %1272 = OpCompositeExtract %float %935 0 + %1273 = OpCompositeExtract %float %1198 1 + %1274 = OpCompositeExtract %float %935 1 + %1275 = OpCompositeConstruct %v3float %1272 %1273 %1274 + %1276 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1276 %1277 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1277 %949 - %1278 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1278 %1276 + %1278 = OpLoad %float %1277 %1279 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1280 = OpLoad %float %1279 + OpStore %1279 %914 + %1280 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1280 %1278 %1281 = OpLoad %int %i_2 OpStore %i_2 %31 OpStore %i_2 %1281 - %1282 = OpCompositeExtract %float %167 1 - %1283 = OpCompositeExtract %float %967 1 - %1284 = OpCompositeExtract %float %167 0 + %1282 = OpCompositeExtract %float %864 3 + %1283 = OpCompositeExtract %float %864 3 + %1284 = OpCompositeExtract %float %884 0 %1285 = OpCompositeConstruct %v3float %1282 %1283 %1284 - %1286 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %1287 = OpLoad %int %1286 - %1288 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1288 %31 - %1289 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 + %1286 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1287 = OpLoad %float %1286 + %1288 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1288 %914 + %1289 = OpAccessChain %_ptr_Function_float %uv %uint_0 OpStore %1289 %1287 - %1290 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1291 = OpLoad %float %1290 - %1292 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1292 %949 - %1293 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1293 %1291 - %1294 = OpCompositeExtract %float %892 0 - %1295 = OpCompositeExtract %float %892 0 - %1296 = OpCompositeExtract %float %167 1 - %1297 = OpCompositeConstruct %v3float %1294 %1295 %1296 - %1298 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1299 = OpLoad %float %1298 + %1290 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1291 = OpConvertSToF %float %1259 + %1292 = OpFAdd %float %1291 %1267 + OpStore %1290 %1292 + %1293 = OpCompositeExtract %float %930 1 + %1294 = OpCompositeExtract %float %888 0 + %1295 = OpCompositeExtract %float %930 1 + %1296 = OpCompositeConstruct %v3float %1293 %1294 %1295 + %1297 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1298 = OpLoad %float %1297 + %1299 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1299 %914 %1300 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1300 %949 - %1301 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1301 %1299 - %1302 = OpFOrdGreaterThan %bool %1280 %float_0_25 - OpSelectionMerge %1303 None - OpBranchConditional %1302 %1304 %1303 - %1304 = OpLabel - %1305 = OpCompositeExtract %float %900 0 - %1306 = OpCompositeExtract %float %1297 2 - %1307 = OpCompositeConstruct %v2float %1305 %1306 - %1308 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1308 - %1310 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_5 - %1311 = OpLoad %int %1310 - %1312 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1313 = OpLoad %float %1312 - %1314 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1314 %949 - %1315 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1315 %1313 - %1316 = OpLoad %int %i_2 + OpStore %1300 %1298 + OpBranch %1251 + %1251 = OpLabel + %1301 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1302 = OpLoad %float %1301 + %1303 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1303 %914 + %1304 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1304 %1302 + %1305 = OpCompositeExtract %float %1093 0 + %1306 = OpCompositeExtract %float %888 1 + %1307 = OpCompositeExtract %float %888 0 + %1308 = OpCompositeConstruct %v3float %1305 %1306 %1307 + %1309 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1310 = OpLoad %float %1309 + %1311 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1311 %914 + %1312 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1312 %1310 + %1313 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1314 = OpLoad %int %1313 + %1315 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1315 %31 + %1316 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1316 %1314 + %1317 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1318 = OpLoad %float %1317 + %1319 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %1320 = OpLoad %int %1319 + %1321 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1321 %31 + %1322 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1322 %1320 + %1323 = OpFOrdGreaterThan %bool %1318 %float_0_5 + OpSelectionMerge %1324 None + OpBranchConditional %1323 %1325 %1324 + %1325 = OpLabel + %1326 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1327 = OpLoad %float %1326 + %1328 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1328 %914 + %1329 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1329 %1327 + %1330 = OpCompositeExtract %float %1245 1 + %1331 = OpCompositeExtract %float %935 1 + %1332 = OpCompositeConstruct %v2float %1330 %1331 + %1333 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1334 = OpLoad %float %1333 + %1335 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1335 %914 + %1336 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1336 %1334 + %1337 = OpCompositeExtract %float %882 2 + %1338 = OpCompositeExtract %float %882 1 + %1339 = OpCompositeConstruct %v2float %1337 %1338 + %1340 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1341 = OpLoad %float %1340 + %1342 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1342 %914 + %1343 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1343 %1341 + %1345 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 + %1346 = OpLoad %int %1345 + %1347 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1348 = OpLoad %float %1347 + %1349 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1349 %914 + %1350 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1350 %1348 + %1351 = OpLoad %int %i_2 OpStore %i_2 %31 - OpStore %i_2 %1316 - %1317 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1317 - %1318 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1319 = OpLoad %float %1318 - %1320 = OpAccessChain %_ptr_Function_float %uv %31 - %1321 = OpLoad %float %1320 - %1322 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1322 %949 - %1323 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1323 %1321 - %1324 = OpCompositeExtract %float %972 0 - %1325 = OpCompositeExtract %float %1245 1 - %1326 = OpCompositeExtract %float %972 1 - %1327 = OpCompositeConstruct %v3float %1324 %1325 %1326 - %1328 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1328 - %1329 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1330 = OpLoad %float %1329 - %1331 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1331 %949 - %1332 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1332 %1330 - %1333 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1333 - %1334 = OpCompositeExtract %float %896 3 - %1335 = OpCompositeExtract %float %896 3 - %1336 = OpCompositeExtract %float %920 0 - %1337 = OpCompositeConstruct %v3float %1334 %1335 %1336 - %1338 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1339 = OpLoad %float %1338 - %1340 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1340 %949 - %1341 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1341 %1339 - %1342 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1343 = OpConvertSToF %float %1311 - %1344 = OpFAdd %float %1343 %1319 - OpStore %1342 %1344 - %1345 = OpCompositeExtract %float %967 1 - %1346 = OpCompositeExtract %float %924 0 - %1347 = OpCompositeExtract %float %967 1 - %1348 = OpCompositeConstruct %v3float %1345 %1346 %1347 - %1349 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1350 = OpLoad %float %1349 - %1351 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1351 %949 - %1352 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1352 %1350 - OpBranch %1303 - %1303 = OpLabel - %1353 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1354 = OpLoad %float %1353 - %1355 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1355 %949 - %1356 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1356 %1354 - %1357 = OpCompositeExtract %float %1137 0 - %1358 = OpCompositeExtract %float %924 1 - %1359 = OpCompositeExtract %float %924 0 - %1360 = OpCompositeConstruct %v3float %1357 %1358 %1359 - %1361 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1362 = OpLoad %float %1361 - %1363 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1363 %949 - %1364 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1364 %1362 - %1365 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - %1366 = OpLoad %int %1365 - %1367 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1367 %31 - %1368 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1368 %1366 - %1369 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1370 = OpLoad %float %1369 - %1371 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %1372 = OpLoad %int %1371 - %1373 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1373 %31 - %1374 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1374 %1372 - %1375 = OpFOrdGreaterThan %bool %1370 %float_0_5 - OpSelectionMerge %1376 None - OpBranchConditional %1375 %1377 %1376 - %1377 = OpLabel - %1378 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1379 = OpLoad %float %1378 - %1380 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1380 %949 - %1381 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1381 %1379 - %1382 = OpCompositeExtract %float %1297 1 - %1383 = OpCompositeExtract %float %972 1 - %1384 = OpCompositeConstruct %v2float %1382 %1383 - %1385 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1386 = OpLoad %float %1385 - %1387 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1387 %949 - %1388 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1388 %1386 - %1389 = OpCompositeExtract %float %918 2 - %1390 = OpCompositeExtract %float %918 1 - %1391 = OpCompositeConstruct %v2float %1389 %1390 - %1392 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1393 = OpLoad %float %1392 - %1394 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1394 %949 - %1395 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1395 %1393 - %1397 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 - %1398 = OpLoad %int %1397 - %1399 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1400 = OpLoad %float %1399 + OpStore %i_2 %1351 + %1352 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1353 = OpLoad %int %1352 + %1354 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1354 %31 + %1355 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1355 %1353 + %1356 = OpCompositeExtract %float %1178 2 + %1357 = OpCompositeExtract %float %1178 1 + %1358 = OpCompositeConstruct %v2float %1356 %1357 + %1359 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1360 = OpLoad %float %1359 + %1361 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %1361 + %1362 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1363 = OpLoad %float %1362 + %1364 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1364 %914 + %1365 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1365 %1363 + %1366 = OpCompositeExtract %float %1198 1 + %1367 = OpCompositeExtract %float %1198 0 + %1368 = OpCompositeConstruct %v2float %1366 %1367 + %1369 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 + %1370 = OpLoad %int %1369 + %1371 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 + OpStore %1371 %31 + %1372 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 + OpStore %1372 %1370 + %1373 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 + %1374 = OpLoad %int %1373 + %1375 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 + OpStore %1375 %31 + %1376 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 + OpStore %1376 %1374 + %1377 = OpCompositeExtract %float %1245 2 + %1378 = OpCompositeExtract %float %1245 2 + %1379 = OpCompositeConstruct %v2float %1377 %1378 + %1380 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1380 + %1381 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1382 = OpConvertSToF %float %1346 + %1383 = OpFAdd %float %1382 %1360 + OpStore %1381 %1383 + %1384 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1385 = OpLoad %float %1384 + %1386 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1386 %914 + %1387 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1387 %1385 + %1388 = OpCompositeExtract %float %930 0 + %1389 = OpCompositeConstruct %v2float %float_2 %1388 + %1390 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1391 = OpLoad %float %1390 + %1392 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1392 %914 + %1393 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1393 %1391 + OpBranch %1324 + %1324 = OpLabel + %1394 = OpCompositeExtract %float %935 1 + %1395 = OpCompositeExtract %float %935 1 + %1396 = OpCompositeConstruct %v2float %1394 %1395 + %1397 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1398 = OpLoad %float %1397 + %1399 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1399 %914 + %1400 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1400 %1398 %1401 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1401 %949 - %1402 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1402 %1400 - %1403 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1403 - %1404 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - %1405 = OpLoad %int %1404 - %1406 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1406 %31 - %1407 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1407 %1405 - %1408 = OpCompositeExtract %float %1225 2 - %1409 = OpCompositeExtract %float %1225 1 - %1410 = OpCompositeConstruct %v2float %1408 %1409 + %1402 = OpLoad %float %1401 + %1403 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1403 + %1404 = OpCompositeExtract %float %1198 0 + %1405 = OpCompositeExtract %float %1198 1 + %1406 = OpCompositeConstruct %v2float %1404 %1405 + %1407 = OpAccessChain %_ptr_Function_float %uv %31 + %1408 = OpLoad %float %1407 + %1409 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1409 %914 + %1410 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1410 %1408 %1411 = OpAccessChain %_ptr_Function_float %color %uint_1 %1412 = OpLoad %float %1411 - %1413 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %1413 - %1414 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1415 = OpLoad %float %1414 - %1416 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1416 %949 - %1417 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1417 %1415 - %1418 = OpCompositeExtract %float %1245 1 - %1419 = OpCompositeExtract %float %1245 0 - %1420 = OpCompositeConstruct %v2float %1418 %1419 - %1421 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 - %1422 = OpLoad %int %1421 - %1423 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 - OpStore %1423 %31 - %1424 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 - OpStore %1424 %1422 - %1425 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 - %1426 = OpLoad %int %1425 - %1427 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 - OpStore %1427 %31 - %1428 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_6 - OpStore %1428 %1426 - %1429 = OpCompositeExtract %float %1297 2 - %1430 = OpCompositeExtract %float %1297 2 - %1431 = OpCompositeConstruct %v2float %1429 %1430 - %1432 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1432 - %1433 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1434 = OpConvertSToF %float %1398 - %1435 = OpFAdd %float %1434 %1412 - OpStore %1433 %1435 - %1436 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1437 = OpLoad %float %1436 - %1438 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1438 %949 - %1439 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1439 %1437 - %1440 = OpCompositeExtract %float %37 1 - %1441 = OpCompositeExtract %float %967 0 - %1442 = OpCompositeConstruct %v2float %1440 %1441 - %1443 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1444 = OpLoad %float %1443 - %1445 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1445 %949 - %1446 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1446 %1444 - OpBranch %1376 - %1376 = OpLabel - %1447 = OpCompositeExtract %float %972 1 - %1448 = OpCompositeExtract %float %972 1 - %1449 = OpCompositeConstruct %v2float %1447 %1448 - %1450 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1451 = OpLoad %float %1450 - %1452 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1452 %949 - %1453 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1453 %1451 - %1454 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1455 = OpLoad %float %1454 - %1456 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1456 - %1457 = OpCompositeExtract %float %1245 0 - %1458 = OpCompositeExtract %float %1245 1 - %1459 = OpCompositeConstruct %v2float %1457 %1458 - %1460 = OpAccessChain %_ptr_Function_float %uv %31 - %1461 = OpLoad %float %1460 - %1462 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1462 %949 - %1463 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1463 %1461 - %1464 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1465 = OpLoad %float %1464 - %1466 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1466 %949 - %1467 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1467 %1465 - %1468 = OpCompositeExtract %float %913 0 - %1469 = OpCompositeExtract %float %913 1 - %1470 = OpCompositeExtract %float %913 1 - %1471 = OpCompositeConstruct %v3float %1468 %1469 %1470 - %1472 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - %1473 = OpLoad %int %1472 - %1474 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1474 %31 - %1475 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1413 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1413 %914 + %1414 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1414 %1412 + %1415 = OpCompositeExtract %float %878 0 + %1416 = OpCompositeExtract %float %878 1 + %1417 = OpCompositeExtract %float %878 1 + %1418 = OpCompositeConstruct %v3float %1415 %1416 %1417 + %1419 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1420 = OpLoad %int %1419 + %1421 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1421 %31 + %1422 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1422 %1420 + %1423 = OpFOrdGreaterThan %bool %1402 %float_0_75 + OpSelectionMerge %1424 None + OpBranchConditional %1423 %1425 %1424 + %1425 = OpLabel + %1426 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1426 + %1427 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1428 = OpLoad %float %1427 + %1429 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1429 %914 + %1430 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1430 %1428 + %1431 = OpCompositeExtract %float %884 1 + %1432 = OpCompositeExtract %float %884 0 + %1433 = OpCompositeExtract %float %884 1 + %1434 = OpCompositeConstruct %v3float %1431 %1432 %1433 + %1435 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1435 + %1437 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7 + %1438 = OpLoad %int %1437 + %1439 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1440 = OpLoad %float %1439 + %1441 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1441 %914 + %1442 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1442 %1440 + %1443 = OpCompositeExtract %float %1198 0 + %1444 = OpCompositeExtract %float %1093 1 + %1445 = OpCompositeExtract %float %1093 0 + %1446 = OpCompositeConstruct %v3float %1443 %1444 %1445 + %1447 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1448 = OpLoad %float %1447 + %1449 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1449 %914 + %1450 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1450 %1448 + %1451 = OpCompositeExtract %float %1214 0 + %1452 = OpCompositeExtract %float %162 1 + %1453 = OpCompositeConstruct %v2float %1451 %1452 + %1454 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + %1455 = OpLoad %int %1454 + %1456 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1456 %31 + %1457 = OpAccessChain %_ptr_Private_int %obj %uint_0 %500 + OpStore %1457 %1455 + %1458 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1459 = OpLoad %float %1458 + %1460 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1460 %914 + %1461 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1461 %1459 + %1462 = OpCompositeExtract %float %1225 0 + %1463 = OpCompositeExtract %float %1225 1 + %1464 = OpCompositeExtract %float %1225 0 + %1465 = OpCompositeConstruct %v3float %1462 %1463 %1464 + %1466 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1467 = OpLoad %float %1466 + %1468 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1468 %914 + %1469 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1469 %1467 + %1470 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1471 = OpLoad %float %1470 + %1472 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1473 = OpLoad %float %1472 + %1474 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1474 %914 + %1475 = OpAccessChain %_ptr_Function_float %uv %uint_1 OpStore %1475 %1473 - %1476 = OpFOrdGreaterThan %bool %1455 %float_0_75 - OpSelectionMerge %1477 None - OpBranchConditional %1476 %1478 %1477 - %1478 = OpLabel - %1479 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1479 - %1480 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1481 = OpLoad %float %1480 - %1482 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1482 %949 - %1483 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1483 %1481 - %1484 = OpCompositeExtract %float %920 1 - %1485 = OpCompositeExtract %float %920 0 - %1486 = OpCompositeExtract %float %920 1 - %1487 = OpCompositeConstruct %v3float %1484 %1485 %1486 - %1488 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1488 - %1490 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_7 - %1491 = OpLoad %int %1490 - %1492 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1493 = OpLoad %float %1492 - %1494 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1494 %949 - %1495 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1495 %1493 - %1496 = OpCompositeExtract %float %1245 0 - %1497 = OpCompositeExtract %float %1137 1 - %1498 = OpCompositeExtract %float %1137 0 - %1499 = OpCompositeConstruct %v3float %1496 %1497 %1498 - %1500 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1501 = OpLoad %float %1500 + %1476 = OpCompositeExtract %float %864 0 + %1477 = OpCompositeExtract %float %864 1 + %1478 = OpCompositeConstruct %v2float %1476 %1477 + %1479 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1480 = OpLoad %float %1479 + %1481 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1481 %914 + %1482 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1482 %1480 + %1483 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1484 = OpLoad %float %1483 + %1485 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1485 %914 + %1486 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1486 %1484 + %1487 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1488 = OpLoad %float %1487 + %1489 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1489 %914 + %1490 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1490 %1488 + %1491 = OpCompositeExtract %float %1478 1 + %1492 = OpCompositeExtract %float %1478 1 + %1493 = OpCompositeExtract %float %1418 2 + %1494 = OpCompositeConstruct %v3float %1491 %1492 %1493 + %1495 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1496 = OpLoad %float %1495 + %1497 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1497 %914 + %1498 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1498 %1496 + %1499 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1500 = OpConvertSToF %float %1438 + %1501 = OpFAdd %float %1500 %1471 + OpStore %1499 %1501 %1502 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1502 %949 - %1503 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1503 %1501 - %1504 = OpCompositeExtract %float %1263 0 - %1505 = OpCompositeExtract %float %1055 1 - %1506 = OpCompositeConstruct %v2float %1504 %1505 - %1507 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - %1508 = OpLoad %int %1507 - %1509 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1509 %31 - %1510 = OpAccessChain %_ptr_Private_int %obj %uint_0 %520 - OpStore %1510 %1508 - %1511 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1512 = OpLoad %float %1511 - %1513 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1513 %949 - %1514 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1514 %1512 - %1515 = OpCompositeExtract %float %1274 0 - %1516 = OpCompositeExtract %float %1274 1 - %1517 = OpCompositeExtract %float %1274 0 - %1518 = OpCompositeConstruct %v3float %1515 %1516 %1517 - %1519 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1520 = OpLoad %float %1519 - %1521 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1521 %949 - %1522 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1522 %1520 - %1523 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1524 = OpLoad %float %1523 - %1525 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1526 = OpLoad %float %1525 - %1527 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1527 %949 - %1528 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1503 = OpLoad %float %1502 + %1504 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1504 %914 + %1505 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1505 %1503 + %1506 = OpCompositeExtract %float %922 0 + %1507 = OpCompositeExtract %float %922 2 + %1508 = OpCompositeConstruct %v2float %1506 %1507 + %1509 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1510 = OpLoad %float %1509 + %1511 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1511 %914 + %1512 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1512 %1510 + OpBranch %1424 + %1424 = OpLabel + %1513 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1513 + %1514 = OpCompositeExtract %float %896 1 + %1515 = OpCompositeExtract %float %884 1 + %1516 = OpCompositeConstruct %v2float %1514 %1515 + %1517 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %1517 + %1519 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 + %1520 = OpLoad %int %1519 + %1521 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1521 + %1522 = OpCompositeExtract %float %869 0 + %1523 = OpCompositeExtract %float %896 2 + %1524 = OpCompositeConstruct %v2float %1522 %1523 + %1525 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 + %1526 = OpLoad %int %1525 + %1527 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 + OpStore %1527 %31 + %1528 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 OpStore %1528 %1526 - %1529 = OpCompositeExtract %float %896 0 - %1530 = OpCompositeExtract %float %896 1 - %1531 = OpCompositeConstruct %v2float %1529 %1530 - %1532 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1533 = OpLoad %float %1532 - %1534 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1534 %949 - %1535 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1535 %1533 - %1536 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1537 = OpLoad %float %1536 - %1538 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1538 %949 - %1539 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1539 %1537 - %1540 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1541 = OpLoad %float %1540 - %1542 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1542 %949 - %1543 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1543 %1541 - %1544 = OpCompositeExtract %float %1531 1 - %1545 = OpCompositeExtract %float %1531 1 - %1546 = OpCompositeExtract %float %1471 2 - %1547 = OpCompositeConstruct %v3float %1544 %1545 %1546 - %1548 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1549 = OpLoad %float %1548 - %1550 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1550 %949 - %1551 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1551 %1549 - %1552 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1553 = OpConvertSToF %float %1491 - %1554 = OpFAdd %float %1553 %1524 - OpStore %1552 %1554 - %1555 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1556 = OpLoad %float %1555 - %1557 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1557 %949 - %1558 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1558 %1556 - %1559 = OpCompositeExtract %float %959 0 - %1560 = OpCompositeExtract %float %959 2 - %1561 = OpCompositeConstruct %v2float %1559 %1560 - %1562 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1563 = OpLoad %float %1562 - %1564 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1564 %949 - %1565 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1565 %1563 - OpBranch %1477 - %1477 = OpLabel - %1566 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1566 - %1567 = OpCompositeExtract %float %931 1 - %1568 = OpCompositeExtract %float %920 1 - %1569 = OpCompositeConstruct %v2float %1567 %1568 - %1570 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %1570 - %1572 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 - %1573 = OpLoad %int %1572 - %1574 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1574 - %1575 = OpCompositeExtract %float %904 0 - %1576 = OpCompositeExtract %float %931 2 - %1577 = OpCompositeConstruct %v2float %1575 %1576 - %1578 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 - %1579 = OpLoad %int %1578 - %1580 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 - OpStore %1580 %31 - %1581 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 - OpStore %1581 %1579 - %1582 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1583 = OpLoad %float %1582 - %1584 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1584 %949 - %1585 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1585 %1583 - %1586 = OpCompositeExtract %float %959 1 - %1587 = OpCompositeExtract %float %167 0 - %1588 = OpCompositeConstruct %v2float %1586 %1587 - %1589 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1529 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1530 = OpLoad %float %1529 + %1531 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1531 %914 + %1532 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1532 %1530 + %1533 = OpCompositeExtract %float %922 1 + %1534 = OpCompositeConstruct %v2float %1533 %914 + %1535 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1536 = OpLoad %float %1535 + %1537 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1537 %914 + %1538 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1538 %1536 + %1539 = OpCompositeExtract %float %1534 0 + %1540 = OpCompositeExtract %float %1534 1 + %1541 = OpCompositeExtract %float %1534 0 + %1542 = OpCompositeConstruct %v3float %1539 %1540 %1541 + %1543 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1544 = OpLoad %float %1543 + %1545 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1545 %914 + %1546 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1546 %1544 + %1547 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1548 = OpLoad %float %1547 + %1549 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1550 = OpLoad %float %1549 + %1551 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1551 %914 + %1552 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1552 %1550 + %1553 = OpCompositeExtract %float %1406 0 + %1554 = OpCompositeExtract %float %1396 0 + %1555 = OpCompositeConstruct %v2float %1553 %1554 + %1556 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1557 = OpLoad %int %1556 + %1558 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1558 %31 + %1559 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1559 %1557 + %1560 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1561 = OpLoad %float %1560 + %1562 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1562 %914 + %1563 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1563 %1561 + %1564 = OpCompositeExtract %float %162 0 + %1565 = OpCompositeExtract %float %162 0 + %1566 = OpCompositeConstruct %v2float %1564 %1565 + %1567 = OpAccessChain %_ptr_Function_float %color %uint_1 + %1568 = OpLoad %float %1567 + %1569 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1569 %914 + %1570 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1570 %1568 + %1571 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1572 = OpConvertSToF %float %1520 + %1573 = OpFAdd %float %1548 %1572 + OpStore %1571 %1573 + %1574 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %1574 + %1575 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1576 = OpLoad %float %1575 + %1577 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1577 %914 + %1578 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1578 %1576 + %1579 = OpCompositeExtract %float %162 1 + %1580 = OpCompositeExtract %float %162 0 + %1581 = OpCompositeExtract %float %1555 1 + %1582 = OpCompositeConstruct %v3float %1579 %1580 %1581 + %1583 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1584 = OpLoad %float %1583 + %1585 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1585 %914 + %1586 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1586 %1584 + %1587 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1588 = OpLoad %float %1587 + %1589 = OpAccessChain %_ptr_Function_float %color %uint_1 %1590 = OpLoad %float %1589 - %1591 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1591 %949 - %1592 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1591 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1591 %914 + %1592 = OpAccessChain %_ptr_Function_float %color %uint_1 OpStore %1592 %1590 - %1593 = OpCompositeExtract %float %1588 0 - %1594 = OpCompositeExtract %float %1588 1 - %1595 = OpCompositeExtract %float %1588 0 + %1593 = OpCompositeExtract %float %1524 1 + %1594 = OpCompositeExtract %float %1524 0 + %1595 = OpCompositeExtract %float %873 2 %1596 = OpCompositeConstruct %v3float %1593 %1594 %1595 - %1597 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1597 = OpAccessChain %_ptr_Function_float %uv %uint_1 %1598 = OpLoad %float %1597 - %1599 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1599 %949 - %1600 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1599 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1599 %914 + %1600 = OpAccessChain %_ptr_Function_float %uv %uint_1 OpStore %1600 %1598 - %1601 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1601 = OpAccessChain %_ptr_Function_float %uv %uint_1 %1602 = OpLoad %float %1601 - %1603 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1603 = OpAccessChain %_ptr_Function_float %uv %uint_1 %1604 = OpLoad %float %1603 - %1605 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1605 %949 - %1606 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1605 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1605 %914 + %1606 = OpAccessChain %_ptr_Function_float %uv %uint_1 OpStore %1606 %1604 - %1607 = OpCompositeExtract %float %1459 0 - %1608 = OpCompositeExtract %float %1449 0 - %1609 = OpCompositeConstruct %v2float %1607 %1608 - %1610 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - %1611 = OpLoad %int %1610 - %1612 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1612 %31 - %1613 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1613 %1611 - %1614 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1607 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1608 = OpLoad %float %1607 + %1609 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1609 %914 + %1610 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1610 %1608 + %1611 = OpCompositeExtract %float %1308 1 + %1612 = OpCompositeExtract %float %1308 2 + %1613 = OpCompositeConstruct %v3float %float_2 %1611 %1612 + %1614 = OpAccessChain %_ptr_Function_float %color %uint_2 %1615 = OpLoad %float %1614 - %1616 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1616 %949 - %1617 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1616 = OpAccessChain %_ptr_Function_float %color %uint_2 + OpStore %1616 %914 + %1617 = OpAccessChain %_ptr_Function_float %color %uint_2 OpStore %1617 %1615 - %1618 = OpCompositeExtract %float %1055 0 - %1619 = OpCompositeExtract %float %900 0 - %1620 = OpCompositeConstruct %v2float %1618 %1619 - %1621 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1622 = OpLoad %float %1621 - %1623 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1623 %949 - %1624 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1624 %1622 - %1625 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1626 = OpConvertSToF %float %1573 - %1627 = OpFAdd %float %1602 %1626 - OpStore %1625 %1627 - %1628 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %1628 - %1629 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1630 = OpLoad %float %1629 - %1631 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1631 %949 - %1632 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1632 %1630 - %1633 = OpCompositeExtract %float %1055 1 - %1634 = OpCompositeExtract %float %1055 0 - %1635 = OpCompositeExtract %float %1609 1 - %1636 = OpCompositeConstruct %v3float %1633 %1634 %1635 - %1637 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1638 = OpLoad %float %1637 - %1639 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1639 %949 - %1640 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1640 %1638 + %1618 = OpLoad %int %i_2 + OpStore %i_2 %31 + OpStore %i_2 %1618 + %1619 = OpCompositeExtract %float %1308 2 + %1620 = OpCompositeExtract %float %1308 1 + %1621 = OpCompositeConstruct %v2float %1619 %1620 + %1622 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1622 + %1623 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1624 = OpLoad %float %1623 + %1625 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1625 %914 + %1626 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1626 %1624 + %1627 = OpCompositeExtract %float %935 1 + %1628 = OpCompositeExtract %float %935 1 + %1629 = OpCompositeExtract %float %935 1 + %1630 = OpCompositeConstruct %v3float %1627 %1628 %1629 + %1631 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + %1632 = OpLoad %int %1631 + %1633 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1633 %31 + %1634 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 + OpStore %1634 %1632 + %1637 = OpFSub %float %1588 %1602 + %1635 = OpExtInst %float %1636 FAbs %1637 + %1638 = OpFOrdLessThan %bool %1635 %float_0_25 + OpSelectionMerge %1639 None + OpBranchConditional %1638 %1640 %1639 + %1640 = OpLabel %1641 = OpAccessChain %_ptr_Function_float %uv %uint_0 %1642 = OpLoad %float %1641 - %1643 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1644 = OpLoad %float %1643 - %1645 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1645 %949 - %1646 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1646 %1644 - %1647 = OpCompositeExtract %float %1577 1 - %1648 = OpCompositeExtract %float %1577 0 - %1649 = OpCompositeExtract %float %908 2 - %1650 = OpCompositeConstruct %v3float %1647 %1648 %1649 - %1651 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1652 = OpLoad %float %1651 - %1653 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1653 %949 - %1654 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1654 %1652 - %1655 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1656 = OpLoad %float %1655 - %1657 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1658 = OpLoad %float %1657 - %1659 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1659 %949 - %1660 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1660 %1658 - %1661 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1643 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1643 %914 + %1644 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1644 %1642 + %1645 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1645 + %1646 = OpCompositeExtract %float %1542 2 + %1647 = OpCompositeExtract %float %1542 0 + %1648 = OpCompositeExtract %float %873 0 + %1649 = OpCompositeConstruct %v3float %1646 %1647 %1648 + %1650 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 + %1651 = OpLoad %int %1650 + %1652 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 + OpStore %1652 %31 + %1653 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 + OpStore %1653 %1651 + %1655 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_9 + %1656 = OpLoad %int %1655 + %1657 = OpCompositeExtract %float %1185 1 + %1658 = OpCompositeExtract %float %1185 1 + %1659 = OpCompositeExtract %float %1185 1 + %1660 = OpCompositeConstruct %v3float %1657 %1658 %1659 + %1661 = OpAccessChain %_ptr_Function_float %uv %uint_1 %1662 = OpLoad %float %1661 - %1663 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1663 %949 - %1664 = OpAccessChain %_ptr_Function_float %color %uint_2 + %1663 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1663 %914 + %1664 = OpAccessChain %_ptr_Function_float %uv %uint_1 OpStore %1664 %1662 - %1665 = OpCompositeExtract %float %37 1 - %1666 = OpCompositeExtract %float %1360 1 - %1667 = OpCompositeExtract %float %1360 2 - %1668 = OpCompositeConstruct %v3float %1665 %1666 %1667 - %1669 = OpAccessChain %_ptr_Function_float %color %uint_2 - %1670 = OpLoad %float %1669 - %1671 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1671 %949 - %1672 = OpAccessChain %_ptr_Function_float %color %uint_2 - OpStore %1672 %1670 - %1673 = OpLoad %int %i_2 - OpStore %i_2 %31 - OpStore %i_2 %1673 - %1674 = OpCompositeExtract %float %1360 2 - %1675 = OpCompositeExtract %float %1360 1 - %1676 = OpCompositeConstruct %v2float %1674 %1675 - %1677 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1677 - %1678 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1679 = OpLoad %float %1678 - %1680 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1680 %949 - %1681 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1681 %1679 - %1682 = OpCompositeExtract %float %972 1 - %1683 = OpCompositeExtract %float %972 1 - %1684 = OpCompositeExtract %float %972 1 - %1685 = OpCompositeConstruct %v3float %1682 %1683 %1684 - %1686 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - %1687 = OpLoad %int %1686 - %1688 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1688 %31 - %1689 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_4 - OpStore %1689 %1687 - %1692 = OpFSub %float %1642 %1656 - %1690 = OpExtInst %float %1691 FAbs %1692 - %1693 = OpFOrdLessThan %bool %1690 %float_0_25 - OpSelectionMerge %1694 None - OpBranchConditional %1693 %1695 %1694 - %1695 = OpLabel - %1696 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1697 = OpLoad %float %1696 - %1698 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1698 %949 - %1699 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1699 %1697 - %1700 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1700 - %1701 = OpCompositeExtract %float %1596 2 - %1702 = OpCompositeExtract %float %1596 0 - %1703 = OpCompositeExtract %float %908 0 - %1704 = OpCompositeConstruct %v3float %1701 %1702 %1703 - %1705 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 - %1706 = OpLoad %int %1705 - %1707 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 - OpStore %1707 %31 - %1708 = OpAccessChain %_ptr_Private_int %obj %uint_0 %int_8 - OpStore %1708 %1706 - %1710 = OpAccessChain %_ptr_Private_int %obj %uint_0 %uint_9 - %1711 = OpLoad %int %1710 - %1712 = OpCompositeExtract %float %1232 1 - %1713 = OpCompositeExtract %float %1232 1 - %1714 = OpCompositeExtract %float %1232 1 - %1715 = OpCompositeConstruct %v3float %1712 %1713 %1714 - %1716 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1665 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1666 = OpLoad %float %1665 + %1667 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1668 = OpLoad %float %1667 + %1669 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1669 %914 + %1670 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1670 %1668 + %1671 = OpCompositeExtract %float %1516 0 + %1672 = OpCompositeExtract %float %1516 1 + %1673 = OpCompositeConstruct %v2float %1671 %1672 + %1674 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1675 = OpLoad %float %1674 + %1676 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1676 %914 + %1677 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1677 %1675 + %1678 = OpLoad %v3float %color + OpStore %color %165 + OpStore %color %1678 + %1679 = OpCompositeExtract %float %916 0 + %1680 = OpCompositeExtract %float %916 0 + %1681 = OpCompositeConstruct %v2float %1679 %1680 + %1682 = OpLoad %v2float %uv + OpStore %uv %162 + OpStore %uv %1682 + %1683 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1684 = OpLoad %float %1683 + %1685 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1685 %914 + %1686 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1686 %1684 + %1687 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1688 = OpConvertSToF %float %1656 + %1689 = OpFAdd %float %1688 %1666 + OpStore %1687 %1689 + %1690 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1691 = OpLoad %float %1690 + %1692 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1692 %914 + %1693 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1693 %1691 + %1694 = OpCompositeExtract %float %1245 1 + %1695 = OpCompositeExtract %float %1582 0 + %1696 = OpCompositeExtract %float %1245 0 + %1697 = OpCompositeConstruct %v3float %1694 %1695 %1696 + %1698 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1699 = OpLoad %float %1698 + %1700 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1700 %914 + %1701 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1701 %1699 + OpBranch %1639 + %1639 = OpLabel + %1702 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1703 = OpLoad %float %1702 + %1704 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1704 %914 + %1705 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1705 %1703 + %1706 = OpLoad %v3float %color + %1707 = OpAccessChain %_ptr_Function_float %uv %31 + %1708 = OpLoad %float %1707 + %1709 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1709 %914 + %1710 = OpAccessChain %_ptr_Function_float %uv %31 + OpStore %1710 %1708 + %1711 = OpCompositeExtract %float %162 0 + %1712 = OpCompositeExtract %float %162 0 + %1713 = OpCompositeExtract %float %162 1 + %1714 = OpCompositeConstruct %v3float %1711 %1712 %1713 + %1715 = OpExtInst %v3float %1636 Normalize %1706 + %1716 = OpAccessChain %_ptr_Function_float %uv %uint_0 %1717 = OpLoad %float %1716 - %1718 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1718 %949 - %1719 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1718 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1718 %914 + %1719 = OpAccessChain %_ptr_Function_float %uv %uint_0 OpStore %1719 %1717 - %1720 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1721 = OpLoad %float %1720 - %1722 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1720 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1720 + %1721 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1721 + %1722 = OpAccessChain %_ptr_Function_float %color %uint_1 %1723 = OpLoad %float %1722 - %1724 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1724 %949 - %1725 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1724 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1724 %914 + %1725 = OpAccessChain %_ptr_Function_float %color %uint_1 OpStore %1725 %1723 - %1726 = OpCompositeExtract %float %1569 0 - %1727 = OpCompositeExtract %float %1569 1 + %1726 = OpCompositeExtract %float %1555 1 + %1727 = OpCompositeExtract %float %1714 1 %1728 = OpCompositeConstruct %v2float %1726 %1727 - %1729 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1729 = OpAccessChain %_ptr_Function_float %color %uint_1 %1730 = OpLoad %float %1729 - %1731 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1731 %949 - %1732 = OpAccessChain %_ptr_Function_float %color %uint_0 + %1731 = OpAccessChain %_ptr_Function_float %color %uint_1 + OpStore %1731 %914 + %1732 = OpAccessChain %_ptr_Function_float %color %uint_1 OpStore %1732 %1730 - %1733 = OpLoad %v3float %color - OpStore %color %170 - OpStore %color %1733 - %1734 = OpCompositeExtract %float %953 0 - %1735 = OpCompositeExtract %float %953 0 - %1736 = OpCompositeConstruct %v2float %1734 %1735 - %1737 = OpLoad %v2float %uv - OpStore %uv %167 - OpStore %uv %1737 - %1738 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1739 = OpLoad %float %1738 - %1740 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1740 %949 - %1741 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1741 %1739 - %1742 = OpCompositeExtract %float %167 0 - %1743 = OpCompositeExtract %float %167 0 - %1744 = OpCompositeExtract %float %167 1 - %1745 = OpCompositeConstruct %v3float %1742 %1743 %1744 - %1746 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1747 = OpConvertSToF %float %1711 - %1748 = OpFAdd %float %1747 %1721 - OpStore %1746 %1748 - %1749 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1750 = OpLoad %float %1749 - %1751 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1751 %949 + %1733 = OpCompositeExtract %float %1715 0 + %1734 = OpCompositeExtract %float %1715 1 + %1735 = OpCompositeExtract %float %1715 2 + %1736 = OpCompositeConstruct %v4float %1733 %1734 %1735 %float_1 + %1737 = OpAccessChain %_ptr_Function_float %uv %uint_1 + %1738 = OpLoad %float %1737 + %1739 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1739 %914 + %1740 = OpAccessChain %_ptr_Function_float %uv %uint_1 + OpStore %1740 %1738 + %1741 = OpCompositeExtract %float %1728 1 + %1742 = OpCompositeConstruct %v3float %float_2 %float_2 %1741 + %1743 = OpAccessChain %_ptr_Function_float %uv %uint_0 + %1744 = OpLoad %float %1743 + %1745 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1745 %914 + %1746 = OpAccessChain %_ptr_Function_float %uv %uint_0 + OpStore %1746 %1744 + OpStore %x_GLF_color %1736 + %1747 = OpLoad %QuicksortObject %obj + OpStore %obj %97 + OpStore %obj %1747 + %1748 = OpCompositeExtract %float %1736 3 + %1749 = OpCompositeExtract %float %1736 1 + %1750 = OpCompositeExtract %float %1406 0 + %1751 = OpCompositeConstruct %v3float %1748 %1749 %1750 %1752 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1752 %1750 - %1753 = OpCompositeExtract %float %1297 1 - %1754 = OpCompositeExtract %float %1636 0 - %1755 = OpCompositeExtract %float %1297 0 - %1756 = OpCompositeConstruct %v3float %1753 %1754 %1755 - %1757 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1758 = OpLoad %float %1757 - %1759 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1759 %949 - %1760 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1760 %1758 - OpBranch %1694 - %1694 = OpLabel - %1761 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1762 = OpLoad %float %1761 - %1763 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1763 %949 - %1764 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1764 %1762 - %1765 = OpLoad %v3float %color - %1766 = OpAccessChain %_ptr_Function_float %uv %31 - %1767 = OpLoad %float %1766 - %1768 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1768 %949 - %1769 = OpAccessChain %_ptr_Function_float %uv %31 - OpStore %1769 %1767 - %1770 = OpCompositeExtract %float %900 0 - %1771 = OpCompositeExtract %float %892 0 - %1772 = OpCompositeExtract %float %892 1 - %1773 = OpCompositeConstruct %v3float %1770 %1771 %1772 - %1774 = OpExtInst %v3float %1691 Normalize %1765 - %1775 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1776 = OpLoad %float %1775 - %1777 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1777 %949 - %1778 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1778 %1776 - %1779 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1779 - %1780 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1780 - %1781 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1782 = OpLoad %float %1781 - %1783 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1783 %949 - %1784 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1784 %1782 - %1785 = OpCompositeExtract %float %1609 1 - %1786 = OpCompositeExtract %float %1773 1 - %1787 = OpCompositeConstruct %v2float %1785 %1786 - %1788 = OpAccessChain %_ptr_Function_float %color %uint_1 - %1789 = OpLoad %float %1788 - %1790 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1790 %949 - %1791 = OpAccessChain %_ptr_Function_float %color %uint_1 - OpStore %1791 %1789 - %1792 = OpCompositeExtract %float %1774 0 - %1793 = OpCompositeExtract %float %1774 1 - %1794 = OpCompositeExtract %float %1774 2 - %1795 = OpCompositeConstruct %v4float %1792 %1793 %1794 %float_1 - %1796 = OpAccessChain %_ptr_Function_float %uv %uint_1 - %1797 = OpLoad %float %1796 - %1798 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1798 %949 - %1799 = OpAccessChain %_ptr_Function_float %uv %uint_1 - OpStore %1799 %1797 - %1800 = OpCompositeExtract %float %37 1 - %1801 = OpCompositeExtract %float %37 1 - %1802 = OpCompositeExtract %float %1787 1 - %1803 = OpCompositeConstruct %v3float %1800 %1801 %1802 - %1804 = OpAccessChain %_ptr_Function_float %uv %uint_0 - %1805 = OpLoad %float %1804 - %1806 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1806 %949 - %1807 = OpAccessChain %_ptr_Function_float %uv %uint_0 - OpStore %1807 %1805 - OpStore %x_GLF_color %1795 - %1808 = OpLoad %QuicksortObject %obj - OpStore %obj %102 - OpStore %obj %1808 - %1809 = OpCompositeExtract %float %1795 3 - %1810 = OpCompositeExtract %float %1795 1 - %1811 = OpCompositeExtract %float %1459 0 - %1812 = OpCompositeConstruct %v3float %1809 %1810 %1811 - %1813 = OpAccessChain %_ptr_Function_float %color %uint_0 - %1814 = OpLoad %float %1813 - %1815 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1815 %949 - %1816 = OpAccessChain %_ptr_Function_float %color %uint_0 - OpStore %1816 %1814 + %1753 = OpLoad %float %1752 + %1754 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1754 %914 + %1755 = OpAccessChain %_ptr_Function_float %color %uint_0 + OpStore %1755 %1753 OpReturn OpFunctionEnd - %main_inner = OpFunction %main_out None %1817 + %main_inner = OpFunction %main_out None %1756 %gl_FragCoord_param = OpFunctionParameter %v4float - %1821 = OpLabel + %1760 = OpLabel OpStore %gl_FragCoord %gl_FragCoord_param - %1822 = OpFunctionCall %void %main_1 - %1823 = OpLoad %v4float %x_GLF_color - %1824 = OpCompositeConstruct %main_out %1823 - OpReturnValue %1824 + %1761 = OpFunctionCall %void %main_1 + %1762 = OpLoad %v4float %x_GLF_color + %1763 = OpCompositeConstruct %main_out %1762 + OpReturnValue %1763 OpFunctionEnd - %main = OpFunction %void None %418 - %1826 = OpLabel - %1828 = OpLoad %v4float %gl_FragCoord_param_1 - %1827 = OpFunctionCall %main_out %main_inner %1828 - %1829 = OpCompositeExtract %v4float %1827 0 - OpStore %x_GLF_color_1_1 %1829 + %main = OpFunction %void None %404 + %1765 = OpLabel + %1767 = OpLoad %v4float %gl_FragCoord_param_1 + %1766 = OpFunctionCall %main_out %main_inner %1767 + %1768 = OpCompositeExtract %v4float %1766 0 + OpStore %x_GLF_color_1_1 %1768 OpReturn OpFunctionEnd diff --git a/test/tint/bug/tint/948.wgsl.expected.glsl b/test/tint/bug/tint/948.wgsl.expected.glsl index c4742f4697..bdeba4be67 100644 --- a/test/tint/bug/tint/948.wgsl.expected.glsl +++ b/test/tint/bug/tint/948.wgsl.expected.glsl @@ -67,7 +67,7 @@ mat4 getFrameData_f1_(inout float frameID) { vec4 x_40 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.0f), 0.0f); vec4 x_47 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.25f), 0.0f); vec4 x_54 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.5f), 0.0f); - return mat4(vec4(x_40.x, x_40.y, x_40.z, x_40.w), vec4(x_47.x, x_47.y, x_47.z, x_47.w), vec4(x_54.x, x_54.y, x_54.z, x_54.w), vec4(vec4(0.0f).x, vec4(0.0f).y, vec4(0.0f).z, vec4(0.0f).w)); + return mat4(vec4(x_40.x, x_40.y, x_40.z, x_40.w), vec4(x_47.x, x_47.y, x_47.z, x_47.w), vec4(x_54.x, x_54.y, x_54.z, x_54.w), vec4(0.0f)); } uniform highp sampler2D tileMapsTexture1_tileMapsSampler; diff --git a/test/tint/bug/tint/948.wgsl.expected.hlsl b/test/tint/bug/tint/948.wgsl.expected.hlsl index 02a6716dee..1864ff118b 100644 --- a/test/tint/bug/tint/948.wgsl.expected.hlsl +++ b/test/tint/bug/tint/948.wgsl.expected.hlsl @@ -39,7 +39,7 @@ float4x4 getFrameData_f1_(inout float frameID) { const float4 x_40 = frameMapTexture.SampleBias(frameMapSampler, float2(fX, 0.0f), 0.0f); const float4 x_47 = frameMapTexture.SampleBias(frameMapSampler, float2(fX, 0.25f), 0.0f); const float4 x_54 = frameMapTexture.SampleBias(frameMapSampler, float2(fX, 0.5f), 0.0f); - return float4x4(float4(x_40.x, x_40.y, x_40.z, x_40.w), float4(x_47.x, x_47.y, x_47.z, x_47.w), float4(x_54.x, x_54.y, x_54.z, x_54.w), float4((0.0f).xxxx.x, (0.0f).xxxx.y, (0.0f).xxxx.z, (0.0f).xxxx.w)); + return float4x4(float4(x_40.x, x_40.y, x_40.z, x_40.w), float4(x_47.x, x_47.y, x_47.z, x_47.w), float4(x_54.x, x_54.y, x_54.z, x_54.w), (0.0f).xxxx); } void main_1() { diff --git a/test/tint/bug/tint/948.wgsl.expected.msl b/test/tint/bug/tint/948.wgsl.expected.msl index b36650f538..ad556254fa 100644 --- a/test/tint/bug/tint/948.wgsl.expected.msl +++ b/test/tint/bug/tint/948.wgsl.expected.msl @@ -61,7 +61,7 @@ float4x4 getFrameData_f1_(thread float* const frameID, const constant LeftOver* float4 const x_47 = tint_symbol_6.sample(tint_symbol_7, float2(x_44, 0.25f), bias(0.0f)); float const x_51 = fX; float4 const x_54 = tint_symbol_6.sample(tint_symbol_7, float2(x_51, 0.5f), bias(0.0f)); - return float4x4(float4(x_40[0], x_40[1], x_40[2], x_40[3]), float4(x_47[0], x_47[1], x_47[2], x_47[3]), float4(x_54[0], x_54[1], x_54[2], x_54[3]), float4(float4(0.0f)[0], float4(0.0f)[1], float4(0.0f)[2], float4(0.0f)[3])); + return float4x4(float4(x_40[0], x_40[1], x_40[2], x_40[3]), float4(x_47[0], x_47[1], x_47[2], x_47[3]), float4(x_54[0], x_54[1], x_54[2], x_54[3]), float4(0.0f)); } void main_1(thread float2* const tint_symbol_8, const constant LeftOver* const tint_symbol_9, texture2d tint_symbol_10, sampler tint_symbol_11, texture2d tint_symbol_12, texture2d tint_symbol_13, sampler tint_symbol_14, texture2d tint_symbol_16, sampler tint_symbol_17, texture2d tint_symbol_18, sampler tint_symbol_19, thread float4* const tint_symbol_20) { diff --git a/test/tint/bug/tint/948.wgsl.expected.spvasm b/test/tint/bug/tint/948.wgsl.expected.spvasm index a3e66de216..91c81d8998 100644 --- a/test/tint/bug/tint/948.wgsl.expected.spvasm +++ b/test/tint/bug/tint/948.wgsl.expected.spvasm @@ -13,10 +13,10 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 383 +; Bound: 378 ; Schema: 0 OpCapability Shader - %136 = OpExtInstImport "GLSL.std.450" + %131 = OpExtInstImport "GLSL.std.450" OpMemoryModel Logical GLSL450 OpEntryPoint Fragment %main "main" %tUV_param_1 %tileID_1_param_1 %levelUnits_param_1 %stageUnits_1_param_1 %vPosition_param_1 %vUV_param_1 %glFragColor_1_1 OpExecutionMode %main OriginUpperLeft @@ -184,24 +184,24 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m %float_0_25 = OpConstant %float 0.25 %float_0_5 = OpConstant %float 0.5 %void = OpTypeVoid - %104 = OpTypeFunction %void + %99 = OpTypeFunction %void %_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v2float = OpTypePointer Function %v2float %int = OpTypeInt 32 1 %_ptr_Function_int = OpTypePointer Function %int - %119 = OpConstantNull %int + %114 = OpConstantNull %int %_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float - %125 = OpConstantNull %mat4v4float + %120 = OpConstantNull %mat4v4float %_ptr_Function_v3float = OpTypePointer Function %v3float %uint_1 = OpConstant %uint 1 %float_1 = OpConstant %float 1 %uint_5 = OpConstant %uint 5 %_ptr_Uniform_v2float = OpTypePointer Uniform %v2float - %149 = OpConstantComposite %v2float %float_1 %float_1 + %144 = OpConstantComposite %v2float %float_1 %float_1 %uint_4 = OpConstant %uint 4 %int_2 = OpConstant %int 2 %bool = OpTypeBool - %181 = OpConstantComposite %v2float %float_0_5 %float_0_5 + %176 = OpConstantComposite %v2float %float_0_5 %float_0_5 %uint_0 = OpConstant %uint 0 %uint_2 = OpConstant %uint 2 %float_8 = OpConstant %float 8 @@ -211,7 +211,7 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m %uint_8 = OpConstant %uint 8 %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float %main_out = OpTypeStruct %v4float - %360 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float + %355 = OpTypeFunction %main_out %v2float %v2float %v2float %v2float %v3float %v2float %getFrameData_f1_ = OpFunction %mat4v4float None %49 %frameID = OpFunctionParameter %_ptr_Function_float %53 = OpLabel @@ -254,27 +254,22 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m %95 = OpCompositeExtract %float %77 2 %96 = OpCompositeExtract %float %77 3 %97 = OpCompositeConstruct %v4float %93 %94 %95 %96 - %98 = OpCompositeExtract %float %15 0 - %99 = OpCompositeExtract %float %15 1 - %100 = OpCompositeExtract %float %15 2 - %101 = OpCompositeExtract %float %15 3 - %102 = OpCompositeConstruct %v4float %98 %99 %100 %101 - %103 = OpCompositeConstruct %mat4v4float %87 %92 %97 %102 - OpReturnValue %103 + %98 = OpCompositeConstruct %mat4v4float %87 %92 %97 %15 + OpReturnValue %98 OpFunctionEnd - %main_1 = OpFunction %void None %104 - %107 = OpLabel + %main_1 = OpFunction %void None %99 + %102 = OpLabel %color = OpVariable %_ptr_Function_v4float Function %15 %tileUV = OpVariable %_ptr_Function_v2float Function %29 %tileID = OpVariable %_ptr_Function_v2float Function %29 %sheetUnits = OpVariable %_ptr_Function_v2float Function %29 %spriteUnits = OpVariable %_ptr_Function_float Function %37 %stageUnits = OpVariable %_ptr_Function_v2float Function %29 - %i = OpVariable %_ptr_Function_int Function %119 + %i = OpVariable %_ptr_Function_int Function %114 %frameID_1 = OpVariable %_ptr_Function_float Function %37 %animationData = OpVariable %_ptr_Function_v4float Function %15 %f = OpVariable %_ptr_Function_float Function %37 - %frameData = OpVariable %_ptr_Function_mat4v4float Function %125 + %frameData = OpVariable %_ptr_Function_mat4v4float Function %120 %param = OpVariable %_ptr_Function_float Function %37 %frameSize = OpVariable %_ptr_Function_v2float Function %29 %offset_1 = OpVariable %_ptr_Function_v2float Function %29 @@ -283,309 +278,309 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m %alpha = OpVariable %_ptr_Function_float Function %37 %mixed = OpVariable %_ptr_Function_v3float Function %47 OpStore %color %15 - %134 = OpLoad %v2float %tUV - %135 = OpExtInst %v2float %136 Fract %134 - OpStore %tileUV %135 - %138 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 - %139 = OpLoad %float %138 - %140 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 - %142 = OpFSub %float %float_1 %139 - OpStore %140 %142 - %143 = OpLoad %v2float %tUV - %144 = OpExtInst %v2float %136 Floor %143 - OpStore %tileID %144 - %147 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 - %148 = OpLoad %v2float %147 - %150 = OpFDiv %v2float %149 %148 - OpStore %sheetUnits %150 - %151 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 - %152 = OpLoad %float %151 - %153 = OpFDiv %float %float_1 %152 - OpStore %spriteUnits %153 - %155 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 - %156 = OpLoad %v2float %155 - %157 = OpFDiv %v2float %149 %156 - OpStore %stageUnits %157 - OpStore %i %119 - OpBranch %158 - %158 = OpLabel - OpLoopMerge %159 %160 None + %129 = OpLoad %v2float %tUV + %130 = OpExtInst %v2float %131 Fract %129 + OpStore %tileUV %130 + %133 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 + %134 = OpLoad %float %133 + %135 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 + %137 = OpFSub %float %float_1 %134 + OpStore %135 %137 + %138 = OpLoad %v2float %tUV + %139 = OpExtInst %v2float %131 Floor %138 + OpStore %tileID %139 + %142 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 + %143 = OpLoad %v2float %142 + %145 = OpFDiv %v2float %144 %143 + OpStore %sheetUnits %145 + %146 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 + %147 = OpLoad %float %146 + %148 = OpFDiv %float %float_1 %147 + OpStore %spriteUnits %148 + %150 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 + %151 = OpLoad %v2float %150 + %152 = OpFDiv %v2float %144 %151 + OpStore %stageUnits %152 + OpStore %i %114 + OpBranch %153 + %153 = OpLabel + OpLoopMerge %154 %155 None + OpBranch %156 + %156 = OpLabel + %157 = OpLoad %int %i + %159 = OpSLessThan %bool %157 %int_2 + OpSelectionMerge %161 None + OpBranchConditional %159 %162 %163 + %162 = OpLabel OpBranch %161 + %163 = OpLabel + OpBranch %154 %161 = OpLabel - %162 = OpLoad %int %i - %164 = OpSLessThan %bool %162 %int_2 - OpSelectionMerge %166 None - OpBranchConditional %164 %167 %168 + %164 = OpLoad %int %i + OpSelectionMerge %165 None + OpSwitch %164 %166 1 %167 0 %168 %167 = OpLabel - OpBranch %166 + %169 = OpLoad %v2float %tileID + %170 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 + %171 = OpLoad %v2float %170 + %173 = OpLoad %26 %tileMapsSampler + %174 = OpLoad %23 %tileMapsTexture1 + %175 = OpSampledImage %66 %174 %173 + %177 = OpFAdd %v2float %169 %176 + %178 = OpFDiv %v2float %177 %171 + %172 = OpImageSampleImplicitLod %v4float %175 %178 Bias %37 + %179 = OpCompositeExtract %float %172 0 + OpStore %frameID_1 %179 + OpBranch %165 %168 = OpLabel - OpBranch %159 + %180 = OpLoad %v2float %tileID + %181 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 + %182 = OpLoad %v2float %181 + %184 = OpLoad %26 %tileMapsSampler + %185 = OpLoad %23 %tileMapsTexture0 + %186 = OpSampledImage %66 %185 %184 + %187 = OpFAdd %v2float %180 %176 + %188 = OpFDiv %v2float %187 %182 + %183 = OpImageSampleImplicitLod %v4float %186 %188 Bias %37 + %189 = OpCompositeExtract %float %183 0 + OpStore %frameID_1 %189 + OpBranch %165 %166 = OpLabel - %169 = OpLoad %int %i - OpSelectionMerge %170 None - OpSwitch %169 %171 1 %172 0 %173 - %172 = OpLabel - %174 = OpLoad %v2float %tileID - %175 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 - %176 = OpLoad %v2float %175 - %178 = OpLoad %26 %tileMapsSampler - %179 = OpLoad %23 %tileMapsTexture1 - %180 = OpSampledImage %66 %179 %178 - %182 = OpFAdd %v2float %174 %181 - %183 = OpFDiv %v2float %182 %176 - %177 = OpImageSampleImplicitLod %v4float %180 %183 Bias %37 - %184 = OpCompositeExtract %float %177 0 - OpStore %frameID_1 %184 - OpBranch %170 - %173 = OpLabel - %185 = OpLoad %v2float %tileID - %186 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 - %187 = OpLoad %v2float %186 - %189 = OpLoad %26 %tileMapsSampler - %190 = OpLoad %23 %tileMapsTexture0 - %191 = OpSampledImage %66 %190 %189 - %192 = OpFAdd %v2float %185 %181 - %193 = OpFDiv %v2float %192 %187 - %188 = OpImageSampleImplicitLod %v4float %191 %193 Bias %37 - %194 = OpCompositeExtract %float %188 0 - OpStore %frameID_1 %194 - OpBranch %170 - %171 = OpLabel - OpBranch %170 - %170 = OpLabel - %195 = OpLoad %float %frameID_1 - %196 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 - %197 = OpLoad %float %196 - %199 = OpLoad %26 %animationMapSampler - %200 = OpLoad %23 %animationMapTexture - %201 = OpSampledImage %66 %200 %199 - %202 = OpFAdd %float %195 %float_0_5 - %203 = OpFDiv %float %202 %197 - %204 = OpCompositeConstruct %v2float %203 %37 - %198 = OpImageSampleImplicitLod %v4float %201 %204 Bias %37 - OpStore %animationData %198 - %205 = OpAccessChain %_ptr_Function_float %animationData %uint_1 - %206 = OpLoad %float %205 - %207 = OpFOrdGreaterThan %bool %206 %37 - OpSelectionMerge %208 None - OpBranchConditional %207 %209 %208 - %209 = OpLabel - %211 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0 - %212 = OpLoad %float %211 - %214 = OpAccessChain %_ptr_Function_float %animationData %uint_2 - %215 = OpLoad %float %214 - %216 = OpFMul %float %212 %215 - %217 = OpFRem %float %216 %float_1 - OpStore %mt %217 + OpBranch %165 + %165 = OpLabel + %190 = OpLoad %float %frameID_1 + %191 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 + %192 = OpLoad %float %191 + %194 = OpLoad %26 %animationMapSampler + %195 = OpLoad %23 %animationMapTexture + %196 = OpSampledImage %66 %195 %194 + %197 = OpFAdd %float %190 %float_0_5 + %198 = OpFDiv %float %197 %192 + %199 = OpCompositeConstruct %v2float %198 %37 + %193 = OpImageSampleImplicitLod %v4float %196 %199 Bias %37 + OpStore %animationData %193 + %200 = OpAccessChain %_ptr_Function_float %animationData %uint_1 + %201 = OpLoad %float %200 + %202 = OpFOrdGreaterThan %bool %201 %37 + OpSelectionMerge %203 None + OpBranchConditional %202 %204 %203 + %204 = OpLabel + %206 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0 + %207 = OpLoad %float %206 + %209 = OpAccessChain %_ptr_Function_float %animationData %uint_2 + %210 = OpLoad %float %209 + %211 = OpFMul %float %207 %210 + %212 = OpFRem %float %211 %float_1 + OpStore %mt %212 OpStore %f %37 - OpBranch %218 - %218 = OpLabel - OpLoopMerge %219 %220 None - OpBranch %221 + OpBranch %213 + %213 = OpLabel + OpLoopMerge %214 %215 None + OpBranch %216 + %216 = OpLabel + %217 = OpLoad %float %f + %219 = OpFOrdLessThan %bool %217 %float_8 + OpSelectionMerge %220 None + OpBranchConditional %219 %221 %222 %221 = OpLabel - %222 = OpLoad %float %f - %224 = OpFOrdLessThan %bool %222 %float_8 - OpSelectionMerge %225 None - OpBranchConditional %224 %226 %227 - %226 = OpLabel - OpBranch %225 - %227 = OpLabel - OpBranch %219 - %225 = OpLabel - %228 = OpAccessChain %_ptr_Function_float %animationData %uint_1 - %229 = OpLoad %float %228 - %230 = OpLoad %float %mt - %231 = OpFOrdGreaterThan %bool %229 %230 - OpSelectionMerge %232 None - OpBranchConditional %231 %233 %232 - %233 = OpLabel - %234 = OpAccessChain %_ptr_Function_float %animationData %uint_0 - %235 = OpLoad %float %234 - OpStore %frameID_1 %235 - OpBranch %219 - %232 = OpLabel - %236 = OpLoad %float %frameID_1 - %237 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 - %238 = OpLoad %float %237 - %239 = OpLoad %float %f - %241 = OpLoad %26 %animationMapSampler - %242 = OpLoad %23 %animationMapTexture - %243 = OpSampledImage %66 %242 %241 - %244 = OpFAdd %float %236 %float_0_5 - %245 = OpFDiv %float %244 %238 - %247 = OpFMul %float %float_0_125 %239 - %248 = OpCompositeConstruct %v2float %245 %247 - %240 = OpImageSampleImplicitLod %v4float %243 %248 Bias %37 - OpStore %animationData %240 OpBranch %220 + %222 = OpLabel + OpBranch %214 %220 = OpLabel - %249 = OpLoad %float %f - %250 = OpFAdd %float %249 %float_1 - OpStore %f %250 - OpBranch %218 - %219 = OpLabel - OpBranch %208 - %208 = OpLabel - %251 = OpLoad %float %frameID_1 - %252 = OpFAdd %float %251 %float_0_5 - OpStore %param %252 - %253 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param - OpStore %frameData %253 - %255 = OpAccessChain %_ptr_Function_v4float %frameData %119 - %256 = OpLoad %v4float %255 - %257 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 - %258 = OpLoad %v2float %257 - %259 = OpCompositeExtract %float %256 3 - %260 = OpCompositeExtract %float %256 2 - %261 = OpCompositeConstruct %v2float %259 %260 - %262 = OpFDiv %v2float %261 %258 - OpStore %frameSize %262 - %263 = OpAccessChain %_ptr_Function_v4float %frameData %119 - %264 = OpLoad %v4float %263 - %265 = OpLoad %v2float %sheetUnits - %266 = OpCompositeExtract %float %264 0 - %267 = OpCompositeExtract %float %264 1 - %268 = OpCompositeConstruct %v2float %266 %267 - %269 = OpFMul %v2float %268 %265 - OpStore %offset_1 %269 - %270 = OpAccessChain %_ptr_Function_v4float %frameData %int_2 - %271 = OpLoad %v4float %270 - %272 = OpAccessChain %_ptr_Function_v4float %frameData %119 - %273 = OpLoad %v4float %272 - %274 = OpCompositeExtract %float %271 0 - %275 = OpCompositeExtract %float %271 1 - %276 = OpCompositeConstruct %v2float %274 %275 - %277 = OpCompositeExtract %float %273 3 - %278 = OpCompositeExtract %float %273 2 - %279 = OpCompositeConstruct %v2float %277 %278 - %280 = OpFDiv %v2float %276 %279 - OpStore %ratio %280 - %281 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2 - %282 = OpLoad %float %281 - %283 = OpFOrdEqual %bool %282 %float_1 - OpSelectionMerge %284 None - OpBranchConditional %283 %285 %284 - %285 = OpLabel - %286 = OpLoad %v2float %tileUV - %287 = OpCompositeExtract %float %286 1 - %288 = OpCompositeExtract %float %286 0 - %289 = OpCompositeConstruct %v2float %287 %288 - OpStore %tileUV %289 - OpBranch %284 - %284 = OpLabel - %290 = OpLoad %int %i - %291 = OpIEqual %bool %290 %119 - OpSelectionMerge %292 None - OpBranchConditional %291 %293 %294 - %293 = OpLabel - %295 = OpLoad %v2float %tileUV - %296 = OpLoad %v2float %frameSize - %297 = OpLoad %v2float %offset_1 - %299 = OpLoad %26 %spriteSheetSampler - %300 = OpLoad %23 %spriteSheetTexture - %301 = OpSampledImage %66 %300 %299 - %302 = OpFMul %v2float %295 %296 - %303 = OpFAdd %v2float %302 %297 - %298 = OpImageSampleImplicitLod %v4float %301 %303 - OpStore %color %298 - OpBranch %292 - %294 = OpLabel - %304 = OpLoad %v2float %tileUV - %305 = OpLoad %v2float %frameSize - %306 = OpLoad %v2float %offset_1 - %308 = OpLoad %26 %spriteSheetSampler - %309 = OpLoad %23 %spriteSheetTexture - %310 = OpSampledImage %66 %309 %308 - %311 = OpFMul %v2float %304 %305 - %312 = OpFAdd %v2float %311 %306 - %307 = OpImageSampleImplicitLod %v4float %310 %312 - OpStore %nc %307 - %314 = OpAccessChain %_ptr_Function_float %color %uint_3 - %315 = OpLoad %float %314 - %316 = OpAccessChain %_ptr_Function_float %nc %uint_3 - %317 = OpLoad %float %316 - %319 = OpFAdd %float %315 %317 - %318 = OpExtInst %float %136 NMin %319 %float_1 - OpStore %alpha %318 - %320 = OpLoad %v4float %color - %321 = OpLoad %v4float %nc - %322 = OpAccessChain %_ptr_Function_float %nc %uint_3 - %323 = OpLoad %float %322 - %325 = OpCompositeExtract %float %320 0 - %326 = OpCompositeExtract %float %320 1 - %327 = OpCompositeExtract %float %320 2 - %328 = OpCompositeConstruct %v3float %325 %326 %327 - %329 = OpCompositeExtract %float %321 0 - %330 = OpCompositeExtract %float %321 1 - %331 = OpCompositeExtract %float %321 2 - %332 = OpCompositeConstruct %v3float %329 %330 %331 - %333 = OpCompositeConstruct %v3float %323 %323 %323 - %324 = OpExtInst %v3float %136 FMix %328 %332 %333 - OpStore %mixed %324 - %334 = OpLoad %v3float %mixed - %335 = OpLoad %float %alpha - %336 = OpCompositeExtract %float %334 0 - %337 = OpCompositeExtract %float %334 1 - %338 = OpCompositeExtract %float %334 2 - %339 = OpCompositeConstruct %v4float %336 %337 %338 %335 - OpStore %color %339 - OpBranch %292 - %292 = OpLabel - OpBranch %160 - %160 = OpLabel - %340 = OpLoad %int %i - %342 = OpIAdd %int %340 %int_1 - OpStore %i %342 - OpBranch %158 - %159 = OpLabel - %345 = OpAccessChain %_ptr_Uniform_v3float %x_20 %uint_8 - %346 = OpLoad %v3float %345 - %347 = OpLoad %v4float %color - %348 = OpCompositeExtract %float %347 0 - %349 = OpCompositeExtract %float %347 1 - %350 = OpCompositeExtract %float %347 2 - %351 = OpCompositeConstruct %v3float %348 %349 %350 - %352 = OpFMul %v3float %351 %346 - %353 = OpLoad %v4float %color - %354 = OpCompositeExtract %float %352 0 - %355 = OpCompositeExtract %float %352 1 - %356 = OpCompositeExtract %float %352 2 - %357 = OpCompositeExtract %float %353 3 - %358 = OpCompositeConstruct %v4float %354 %355 %356 %357 - OpStore %color %358 - %359 = OpLoad %v4float %color - OpStore %glFragColor %359 + %223 = OpAccessChain %_ptr_Function_float %animationData %uint_1 + %224 = OpLoad %float %223 + %225 = OpLoad %float %mt + %226 = OpFOrdGreaterThan %bool %224 %225 + OpSelectionMerge %227 None + OpBranchConditional %226 %228 %227 + %228 = OpLabel + %229 = OpAccessChain %_ptr_Function_float %animationData %uint_0 + %230 = OpLoad %float %229 + OpStore %frameID_1 %230 + OpBranch %214 + %227 = OpLabel + %231 = OpLoad %float %frameID_1 + %232 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 + %233 = OpLoad %float %232 + %234 = OpLoad %float %f + %236 = OpLoad %26 %animationMapSampler + %237 = OpLoad %23 %animationMapTexture + %238 = OpSampledImage %66 %237 %236 + %239 = OpFAdd %float %231 %float_0_5 + %240 = OpFDiv %float %239 %233 + %242 = OpFMul %float %float_0_125 %234 + %243 = OpCompositeConstruct %v2float %240 %242 + %235 = OpImageSampleImplicitLod %v4float %238 %243 Bias %37 + OpStore %animationData %235 + OpBranch %215 + %215 = OpLabel + %244 = OpLoad %float %f + %245 = OpFAdd %float %244 %float_1 + OpStore %f %245 + OpBranch %213 + %214 = OpLabel + OpBranch %203 + %203 = OpLabel + %246 = OpLoad %float %frameID_1 + %247 = OpFAdd %float %246 %float_0_5 + OpStore %param %247 + %248 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param + OpStore %frameData %248 + %250 = OpAccessChain %_ptr_Function_v4float %frameData %114 + %251 = OpLoad %v4float %250 + %252 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 + %253 = OpLoad %v2float %252 + %254 = OpCompositeExtract %float %251 3 + %255 = OpCompositeExtract %float %251 2 + %256 = OpCompositeConstruct %v2float %254 %255 + %257 = OpFDiv %v2float %256 %253 + OpStore %frameSize %257 + %258 = OpAccessChain %_ptr_Function_v4float %frameData %114 + %259 = OpLoad %v4float %258 + %260 = OpLoad %v2float %sheetUnits + %261 = OpCompositeExtract %float %259 0 + %262 = OpCompositeExtract %float %259 1 + %263 = OpCompositeConstruct %v2float %261 %262 + %264 = OpFMul %v2float %263 %260 + OpStore %offset_1 %264 + %265 = OpAccessChain %_ptr_Function_v4float %frameData %int_2 + %266 = OpLoad %v4float %265 + %267 = OpAccessChain %_ptr_Function_v4float %frameData %114 + %268 = OpLoad %v4float %267 + %269 = OpCompositeExtract %float %266 0 + %270 = OpCompositeExtract %float %266 1 + %271 = OpCompositeConstruct %v2float %269 %270 + %272 = OpCompositeExtract %float %268 3 + %273 = OpCompositeExtract %float %268 2 + %274 = OpCompositeConstruct %v2float %272 %273 + %275 = OpFDiv %v2float %271 %274 + OpStore %ratio %275 + %276 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2 + %277 = OpLoad %float %276 + %278 = OpFOrdEqual %bool %277 %float_1 + OpSelectionMerge %279 None + OpBranchConditional %278 %280 %279 + %280 = OpLabel + %281 = OpLoad %v2float %tileUV + %282 = OpCompositeExtract %float %281 1 + %283 = OpCompositeExtract %float %281 0 + %284 = OpCompositeConstruct %v2float %282 %283 + OpStore %tileUV %284 + OpBranch %279 + %279 = OpLabel + %285 = OpLoad %int %i + %286 = OpIEqual %bool %285 %114 + OpSelectionMerge %287 None + OpBranchConditional %286 %288 %289 + %288 = OpLabel + %290 = OpLoad %v2float %tileUV + %291 = OpLoad %v2float %frameSize + %292 = OpLoad %v2float %offset_1 + %294 = OpLoad %26 %spriteSheetSampler + %295 = OpLoad %23 %spriteSheetTexture + %296 = OpSampledImage %66 %295 %294 + %297 = OpFMul %v2float %290 %291 + %298 = OpFAdd %v2float %297 %292 + %293 = OpImageSampleImplicitLod %v4float %296 %298 + OpStore %color %293 + OpBranch %287 + %289 = OpLabel + %299 = OpLoad %v2float %tileUV + %300 = OpLoad %v2float %frameSize + %301 = OpLoad %v2float %offset_1 + %303 = OpLoad %26 %spriteSheetSampler + %304 = OpLoad %23 %spriteSheetTexture + %305 = OpSampledImage %66 %304 %303 + %306 = OpFMul %v2float %299 %300 + %307 = OpFAdd %v2float %306 %301 + %302 = OpImageSampleImplicitLod %v4float %305 %307 + OpStore %nc %302 + %309 = OpAccessChain %_ptr_Function_float %color %uint_3 + %310 = OpLoad %float %309 + %311 = OpAccessChain %_ptr_Function_float %nc %uint_3 + %312 = OpLoad %float %311 + %314 = OpFAdd %float %310 %312 + %313 = OpExtInst %float %131 NMin %314 %float_1 + OpStore %alpha %313 + %315 = OpLoad %v4float %color + %316 = OpLoad %v4float %nc + %317 = OpAccessChain %_ptr_Function_float %nc %uint_3 + %318 = OpLoad %float %317 + %320 = OpCompositeExtract %float %315 0 + %321 = OpCompositeExtract %float %315 1 + %322 = OpCompositeExtract %float %315 2 + %323 = OpCompositeConstruct %v3float %320 %321 %322 + %324 = OpCompositeExtract %float %316 0 + %325 = OpCompositeExtract %float %316 1 + %326 = OpCompositeExtract %float %316 2 + %327 = OpCompositeConstruct %v3float %324 %325 %326 + %328 = OpCompositeConstruct %v3float %318 %318 %318 + %319 = OpExtInst %v3float %131 FMix %323 %327 %328 + OpStore %mixed %319 + %329 = OpLoad %v3float %mixed + %330 = OpLoad %float %alpha + %331 = OpCompositeExtract %float %329 0 + %332 = OpCompositeExtract %float %329 1 + %333 = OpCompositeExtract %float %329 2 + %334 = OpCompositeConstruct %v4float %331 %332 %333 %330 + OpStore %color %334 + OpBranch %287 + %287 = OpLabel + OpBranch %155 + %155 = OpLabel + %335 = OpLoad %int %i + %337 = OpIAdd %int %335 %int_1 + OpStore %i %337 + OpBranch %153 + %154 = OpLabel + %340 = OpAccessChain %_ptr_Uniform_v3float %x_20 %uint_8 + %341 = OpLoad %v3float %340 + %342 = OpLoad %v4float %color + %343 = OpCompositeExtract %float %342 0 + %344 = OpCompositeExtract %float %342 1 + %345 = OpCompositeExtract %float %342 2 + %346 = OpCompositeConstruct %v3float %343 %344 %345 + %347 = OpFMul %v3float %346 %341 + %348 = OpLoad %v4float %color + %349 = OpCompositeExtract %float %347 0 + %350 = OpCompositeExtract %float %347 1 + %351 = OpCompositeExtract %float %347 2 + %352 = OpCompositeExtract %float %348 3 + %353 = OpCompositeConstruct %v4float %349 %350 %351 %352 + OpStore %color %353 + %354 = OpLoad %v4float %color + OpStore %glFragColor %354 OpReturn OpFunctionEnd - %main_inner = OpFunction %main_out None %360 + %main_inner = OpFunction %main_out None %355 %tUV_param = OpFunctionParameter %v2float %tileID_1_param = OpFunctionParameter %v2float %levelUnits_param = OpFunctionParameter %v2float %stageUnits_1_param = OpFunctionParameter %v2float %vPosition_param = OpFunctionParameter %v3float %vUV_param = OpFunctionParameter %v2float - %369 = OpLabel + %364 = OpLabel OpStore %tUV %tUV_param OpStore %tileID_1 %tileID_1_param OpStore %levelUnits %levelUnits_param OpStore %stageUnits_1 %stageUnits_1_param OpStore %vPosition %vPosition_param OpStore %vUV %vUV_param - %370 = OpFunctionCall %void %main_1 - %371 = OpLoad %v4float %glFragColor - %372 = OpCompositeConstruct %main_out %371 - OpReturnValue %372 + %365 = OpFunctionCall %void %main_1 + %366 = OpLoad %v4float %glFragColor + %367 = OpCompositeConstruct %main_out %366 + OpReturnValue %367 OpFunctionEnd - %main = OpFunction %void None %104 - %374 = OpLabel - %376 = OpLoad %v2float %tUV_param_1 - %377 = OpLoad %v2float %tileID_1_param_1 - %378 = OpLoad %v2float %levelUnits_param_1 - %379 = OpLoad %v2float %stageUnits_1_param_1 - %380 = OpLoad %v3float %vPosition_param_1 - %381 = OpLoad %v2float %vUV_param_1 - %375 = OpFunctionCall %main_out %main_inner %376 %377 %378 %379 %380 %381 - %382 = OpCompositeExtract %v4float %375 0 - OpStore %glFragColor_1_1 %382 + %main = OpFunction %void None %99 + %369 = OpLabel + %371 = OpLoad %v2float %tUV_param_1 + %372 = OpLoad %v2float %tileID_1_param_1 + %373 = OpLoad %v2float %levelUnits_param_1 + %374 = OpLoad %v2float %stageUnits_1_param_1 + %375 = OpLoad %v3float %vPosition_param_1 + %376 = OpLoad %v2float %vUV_param_1 + %370 = OpFunctionCall %main_out %main_inner %371 %372 %373 %374 %375 %376 + %377 = OpCompositeExtract %v4float %370 0 + OpStore %glFragColor_1_1 %377 OpReturn OpFunctionEnd diff --git a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.glsl b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.glsl index 34933541da..b00eb0983a 100644 --- a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.glsl +++ b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.glsl @@ -5,8 +5,8 @@ void unused_entry_point() { return; } void f() { - float a = vec2(1.0f).y; - float b = vec3(1.0f).z; - float c = vec4(1.0f).w; + float a = 1.0f; + float b = 1.0f; + float c = 1.0f; } diff --git a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.hlsl b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.hlsl index 3803af8d62..bc8913a3c0 100644 --- a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.hlsl +++ b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.hlsl @@ -4,7 +4,7 @@ void unused_entry_point() { } void f() { - float a = (1.0f).xx.y; - float b = (1.0f).xxx.z; - float c = (1.0f).xxxx.w; + float a = 1.0f; + float b = 1.0f; + float c = 1.0f; } diff --git a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.msl b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.msl index 2f9ac2a2d4..d7d4949b47 100644 --- a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.msl +++ b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.msl @@ -2,8 +2,8 @@ using namespace metal; void f() { - float a = float2(1.0f)[1]; - float b = float3(1.0f)[2]; - float c = float4(1.0f)[3]; + float a = 1.0f; + float b = 1.0f; + float c = 1.0f; } diff --git a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.spvasm b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.spvasm index fe1995c1aa..1fa9baf1e2 100644 --- a/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.spvasm +++ b/test/tint/expressions/splat/with_swizzle/f32.wgsl.expected.spvasm @@ -1,7 +1,7 @@ ; SPIR-V ; Version: 1.3 ; Generator: Google Tint Compiler; 0 -; Bound: 23 +; Bound: 14 ; Schema: 0 OpCapability Shader OpMemoryModel Logical GLSL450 @@ -15,29 +15,20 @@ %void = OpTypeVoid %1 = OpTypeFunction %void %float = OpTypeFloat 32 - %v2float = OpTypeVector %float 2 %float_1 = OpConstant %float 1 - %10 = OpConstantComposite %v2float %float_1 %float_1 %_ptr_Function_float = OpTypePointer Function %float - %14 = OpConstantNull %float - %v3float = OpTypeVector %float 3 - %16 = OpConstantComposite %v3float %float_1 %float_1 %float_1 - %v4float = OpTypeVector %float 4 - %20 = OpConstantComposite %v4float %float_1 %float_1 %float_1 %float_1 + %11 = OpConstantNull %float %unused_entry_point = OpFunction %void None %1 %4 = OpLabel OpReturn OpFunctionEnd %f = OpFunction %void None %1 %6 = OpLabel - %a = OpVariable %_ptr_Function_float Function %14 - %b = OpVariable %_ptr_Function_float Function %14 - %c = OpVariable %_ptr_Function_float Function %14 - %11 = OpCompositeExtract %float %10 1 - OpStore %a %11 - %17 = OpCompositeExtract %float %16 2 - OpStore %b %17 - %21 = OpCompositeExtract %float %20 3 - OpStore %c %21 + %a = OpVariable %_ptr_Function_float Function %11 + %b = OpVariable %_ptr_Function_float Function %11 + %c = OpVariable %_ptr_Function_float Function %11 + OpStore %a %float_1 + OpStore %b %float_1 + OpStore %c %float_1 OpReturn OpFunctionEnd