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 <dsinclair@chromium.org>
Commit-Queue: Ben Clayton <bclayton@google.com>
This commit is contained in:
Ben Clayton 2022-07-07 17:49:02 +00:00 committed by Dawn LUCI CQ
parent d5f53ab580
commit 63e6f820d8
35 changed files with 2822 additions and 2780 deletions

View File

@ -1976,7 +1976,8 @@ sem::Expression* Resolver::MemberAccessor(const ast::MemberAccessorExpression* e
ret = builder_->create<sem::Reference>(ret, ref->StorageClass(), ref->Access()); ret = builder_->create<sem::Reference>(ret, ref->StorageClass(), ref->Access());
} }
return builder_->create<sem::StructMemberAccess>(expr, ret, current_statement_, object, sem::Constant* val = nullptr; // TODO(crbug.com/tint/1611): Add structure support.
return builder_->create<sem::StructMemberAccess>(expr, ret, current_statement_, val, object,
member, has_side_effects, source_var); member, has_side_effects, source_var);
} }
@ -2043,7 +2044,8 @@ sem::Expression* Resolver::MemberAccessor(const ast::MemberAccessorExpression* e
// the swizzle. // the swizzle.
ret = builder_->create<sem::Vector>(vec->type(), static_cast<uint32_t>(size)); ret = builder_->create<sem::Vector>(vec->type(), static_cast<uint32_t>(size));
} }
return builder_->create<sem::Swizzle>(expr, ret, current_statement_, object, auto* val = EvaluateSwizzleValue(object, ret, swizzle);
return builder_->create<sem::Swizzle>(expr, ret, current_statement_, val, object,
std::move(swizzle), has_side_effects, source_var); std::move(swizzle), has_side_effects, source_var);
} }

View File

@ -218,6 +218,9 @@ class Resolver {
const sem::Type* ty); // Note: ty is not an array or structure 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* EvaluateIndexValue(const sem::Expression* obj, const sem::Expression* idx);
const sem::Constant* EvaluateLiteralValue(const ast::LiteralExpression*, const sem::Type*); 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<uint32_t>& indices);
const sem::Constant* EvaluateUnaryValue(const sem::Expression*, const sem::Constant* EvaluateUnaryValue(const sem::Expression*,
const IntrinsicTable::UnaryOperator&); const IntrinsicTable::UnaryOperator&);

View File

@ -19,6 +19,7 @@
#include "src/tint/sem/abstract_float.h" #include "src/tint/sem/abstract_float.h"
#include "src/tint/sem/abstract_int.h" #include "src/tint/sem/abstract_int.h"
#include "src/tint/sem/constant.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/sem/type_constructor.h"
#include "src/tint/utils/compiler_macros.h" #include "src/tint/utils/compiler_macros.h"
#include "src/tint/utils/transform.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<size_t>(idx)); return obj_val->Index(static_cast<size_t>(idx));
} }
const sem::Constant* Resolver::EvaluateSwizzleValue(const sem::Expression* vec_expr,
const sem::Type* type,
const std::vector<uint32_t>& indices) {
auto* vec_val = vec_expr->ConstantValue();
if (!vec_val) {
return nullptr;
}
if (indices.size() == 1) {
return static_cast<const Constant*>(vec_val->Index(indices[0]));
} else {
auto values = utils::Transform(
indices, [&](uint32_t i) { return static_cast<const Constant*>(vec_val->Index(i)); });
return CreateComposite(*builder_, type, std::move(values));
}
}
const sem::Constant* Resolver::EvaluateBitcastValue(const sem::Expression*, const sem::Type*) { const sem::Constant* Resolver::EvaluateBitcastValue(const sem::Expression*, const sem::Type*) {
// TODO(crbug.com/tint/1581): Implement @const intrinsics // TODO(crbug.com/tint/1581): Implement @const intrinsics
return nullptr; return nullptr;

View File

@ -20,6 +20,7 @@
#include "src/tint/resolver/resolver_test_helper.h" #include "src/tint/resolver/resolver_test_helper.h"
#include "src/tint/sem/expression.h" #include "src/tint/sem/expression.h"
#include "src/tint/sem/index_accessor_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" #include "src/tint/sem/test_helper.h"
using namespace tint::number_suffixes; // NOLINT using namespace tint::number_suffixes; // NOLINT
@ -1869,6 +1870,63 @@ TEST_F(ResolverConstantsTest, Vec3_Index_OOB_Low) {
EXPECT_EQ(sem->ConstantValue()->As<i32>(), 1_i); EXPECT_EQ(sem->ConstantValue()->As<i32>(), 1_i);
} }
TEST_F(ResolverConstantsTest, Vec3_Swizzle_Scalar) {
auto* expr = MemberAccessor(vec3<i32>(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<sem::I32>());
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<i32>(), 2_i);
}
TEST_F(ResolverConstantsTest, Vec3_Swizzle_Vector) {
auto* expr = MemberAccessor(vec3<i32>(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<sem::Vector>();
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<f32>(), 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<f32>(), 1._a);
}
TEST_F(ResolverConstantsTest, Vec3_Swizzle_Chain) {
auto* expr = // (1, 2, 3) -> (2, 3, 1) -> (3, 2) -> 2
MemberAccessor(MemberAccessor(MemberAccessor(vec3<i32>(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<sem::I32>());
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<i32>(), 2_i);
}
TEST_F(ResolverConstantsTest, Mat3x2_Index) { TEST_F(ResolverConstantsTest, Mat3x2_Index) {
auto* expr = IndexAccessor( auto* expr = IndexAccessor(
mat3x2<f32>(vec2<f32>(1._a, 2._a), vec2<f32>(3._a, 4._a), vec2<f32>(5._a, 6._a)), 2_i); mat3x2<f32>(vec2<f32>(1._a, 2._a), vec2<f32>(3._a, 4._a), vec2<f32>(5._a, 6._a)), 2_i);

View File

@ -35,7 +35,7 @@ class Expression : public Castable<Expression, Node> {
/// @param declaration the AST node /// @param declaration the AST node
/// @param type the resolved type of the expression /// @param type the resolved type of the expression
/// @param statement the statement that owns this 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 has_side_effects true if this expression may have side-effects
/// @param source_var the (optional) source variable for this expression /// @param source_var the (optional) source variable for this expression
Expression(const ast::Expression* declaration, Expression(const ast::Expression* declaration,

View File

@ -35,7 +35,7 @@ class IndexAccessorExpression final : public Castable<IndexAccessorExpression, E
/// @param object the object expression that is being indexed /// @param object the object expression that is being indexed
/// @param index the index expression /// @param index the index expression
/// @param statement the statement that owns this 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 whether this expression may have side effects /// @param has_side_effects whether this expression may have side effects
/// @param source_var the (optional) source variable for this expression /// @param source_var the (optional) source variable for this expression
IndexAccessorExpression(const ast::IndexAccessorExpression* declaration, IndexAccessorExpression(const ast::IndexAccessorExpression* declaration,

View File

@ -26,32 +26,36 @@ namespace tint::sem {
MemberAccessorExpression::MemberAccessorExpression(const ast::MemberAccessorExpression* declaration, MemberAccessorExpression::MemberAccessorExpression(const ast::MemberAccessorExpression* declaration,
const sem::Type* type, const sem::Type* type,
const Statement* statement, const Statement* statement,
const Constant* constant,
const Expression* object, const Expression* object,
bool has_side_effects, bool has_side_effects,
const Variable* source_var /* = nullptr */) const Variable* source_var /* = nullptr */)
: Base(declaration, type, statement, nullptr, has_side_effects, source_var), object_(object) {} : Base(declaration, type, statement, constant, has_side_effects, source_var), object_(object) {}
MemberAccessorExpression::~MemberAccessorExpression() = default; MemberAccessorExpression::~MemberAccessorExpression() = default;
StructMemberAccess::StructMemberAccess(const ast::MemberAccessorExpression* declaration, StructMemberAccess::StructMemberAccess(const ast::MemberAccessorExpression* declaration,
const sem::Type* type, const sem::Type* type,
const Statement* statement, const Statement* statement,
const Constant* constant,
const Expression* object, const Expression* object,
const StructMember* member, const StructMember* member,
bool has_side_effects, bool has_side_effects,
const Variable* source_var /* = nullptr */) const Variable* source_var /* = nullptr */)
: Base(declaration, type, statement, object, has_side_effects, source_var), member_(member) {} : Base(declaration, type, statement, constant, object, has_side_effects, source_var),
member_(member) {}
StructMemberAccess::~StructMemberAccess() = default; StructMemberAccess::~StructMemberAccess() = default;
Swizzle::Swizzle(const ast::MemberAccessorExpression* declaration, Swizzle::Swizzle(const ast::MemberAccessorExpression* declaration,
const sem::Type* type, const sem::Type* type,
const Statement* statement, const Statement* statement,
const Constant* constant,
const Expression* object, const Expression* object,
std::vector<uint32_t> indices, std::vector<uint32_t> indices,
bool has_side_effects, bool has_side_effects,
const Variable* source_var /* = nullptr */) 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)) {} indices_(std::move(indices)) {}
Swizzle::~Swizzle() = default; Swizzle::~Swizzle() = default;

View File

@ -38,12 +38,14 @@ class MemberAccessorExpression : public Castable<MemberAccessorExpression, Expre
/// @param declaration the AST node /// @param declaration the AST node
/// @param type the resolved type of the expression /// @param type the resolved type of the expression
/// @param statement the statement that owns this 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 object the object that holds the member being accessed
/// @param has_side_effects whether this expression may have side effects /// @param has_side_effects whether this expression may have side effects
/// @param source_var the (optional) source variable for this expression /// @param source_var the (optional) source variable for this expression
MemberAccessorExpression(const ast::MemberAccessorExpression* declaration, MemberAccessorExpression(const ast::MemberAccessorExpression* declaration,
const sem::Type* type, const sem::Type* type,
const Statement* statement, const Statement* statement,
const Constant* constant,
const Expression* object, const Expression* object,
bool has_side_effects, bool has_side_effects,
const Variable* source_var = nullptr); const Variable* source_var = nullptr);
@ -67,6 +69,7 @@ class StructMemberAccess final : public Castable<StructMemberAccess, MemberAcces
/// @param declaration the AST node /// @param declaration the AST node
/// @param type the resolved type of the expression /// @param type the resolved type of the expression
/// @param statement the statement that owns this 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 object the object that holds the member being accessed
/// @param member the structure member /// @param member the structure member
/// @param has_side_effects whether this expression may have side effects /// @param has_side_effects whether this expression may have side effects
@ -74,6 +77,7 @@ class StructMemberAccess final : public Castable<StructMemberAccess, MemberAcces
StructMemberAccess(const ast::MemberAccessorExpression* declaration, StructMemberAccess(const ast::MemberAccessorExpression* declaration,
const sem::Type* type, const sem::Type* type,
const Statement* statement, const Statement* statement,
const Constant* constant,
const Expression* object, const Expression* object,
const StructMember* member, const StructMember* member,
bool has_side_effects, bool has_side_effects,
@ -97,6 +101,7 @@ class Swizzle final : public Castable<Swizzle, MemberAccessorExpression> {
/// @param declaration the AST node /// @param declaration the AST node
/// @param type the resolved type of the expression /// @param type the resolved type of the expression
/// @param statement the statement that owns this 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 object the object that holds the member being accessed
/// @param indices the swizzle indices /// @param indices the swizzle indices
/// @param has_side_effects whether this expression may have side effects /// @param has_side_effects whether this expression may have side effects
@ -104,6 +109,7 @@ class Swizzle final : public Castable<Swizzle, MemberAccessorExpression> {
Swizzle(const ast::MemberAccessorExpression* declaration, Swizzle(const ast::MemberAccessorExpression* declaration,
const sem::Type* type, const sem::Type* type,
const Statement* statement, const Statement* statement,
const Constant* constant,
const Expression* object, const Expression* object,
std::vector<uint32_t> indices, std::vector<uint32_t> indices,
bool has_side_effects, bool has_side_effects,

View File

@ -47,7 +47,7 @@ class Variable : public Castable<Variable, Node> {
/// @param type the variable type /// @param type the variable type
/// @param storage_class the variable storage class /// @param storage_class the variable storage class
/// @param access the variable access control type /// @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, Variable(const ast::Variable* declaration,
const sem::Type* type, const sem::Type* type,
ast::StorageClass storage_class, ast::StorageClass storage_class,
@ -105,7 +105,7 @@ class LocalVariable final : public Castable<LocalVariable, Variable> {
/// @param storage_class the variable storage class /// @param storage_class the variable storage class
/// @param access the variable access control type /// @param access the variable access control type
/// @param statement the statement that declared this local variable /// @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, LocalVariable(const ast::Variable* declaration,
const sem::Type* type, const sem::Type* type,
ast::StorageClass storage_class, ast::StorageClass storage_class,
@ -139,7 +139,7 @@ class GlobalVariable final : public Castable<GlobalVariable, Variable> {
/// @param type the variable type /// @param type the variable type
/// @param storage_class the variable storage class /// @param storage_class the variable storage class
/// @param access the variable access control type /// @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 /// @param binding_point the optional resource binding point of the variable
GlobalVariable(const ast::Variable* declaration, GlobalVariable(const ast::Variable* declaration,
const sem::Type* type, const sem::Type* type,

View File

@ -1,7 +1,7 @@
#version 310 es #version 310 es
void main_1() { void main_1() {
float x_24 = vec3(4.0f, 5.0f, 6.0f).y; float x_24 = 5.0f;
return; return;
} }

View File

@ -1,5 +1,5 @@
void main_1() { void main_1() {
const float x_24 = float3(4.0f, 5.0f, 6.0f).y; const float x_24 = 5.0f;
return; return;
} }

View File

@ -2,7 +2,7 @@
using namespace metal; using namespace metal;
void main_1() { void main_1() {
float const x_24 = float3(4.0f, 5.0f, 6.0f)[1]; float const x_24 = 5.0f;
return; return;
} }

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 28 ; Bound: 10
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -12,31 +12,13 @@
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%float = OpTypeFloat 32 %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_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 %main_1 = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
%23 = OpCompositeExtract %v3float %20 1
%24 = OpCompositeExtract %float %23 1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %1 %main = OpFunction %void None %1
%26 = OpLabel %8 = OpLabel
%27 = OpFunctionCall %void %main_1 %9 = OpFunctionCall %void %main_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -1,9 +1,9 @@
#version 310 es #version 310 es
void main_1() { void main_1() {
float x_11 = vec3(1.0f, 2.0f, 3.0f).y; float x_11 = 2.0f;
vec2 x_13 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).z); vec2 x_13 = vec2(1.0f, 3.0f);
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); vec3 x_14 = vec3(1.0f, 3.0f, 2.0f);
return; return;
} }

View File

@ -1,7 +1,7 @@
void main_1() { void main_1() {
const float x_11 = float3(1.0f, 2.0f, 3.0f).y; const float x_11 = 2.0f;
const float2 x_13 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z); const float2 x_13 = float2(1.0f, 3.0f);
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 float3 x_14 = float3(1.0f, 3.0f, 2.0f);
return; return;
} }

View File

@ -2,9 +2,9 @@
using namespace metal; using namespace metal;
void main_1() { void main_1() {
float const x_11 = float3(1.0f, 2.0f, 3.0f)[1]; float const x_11 = 2.0f;
float2 const x_13 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2]); float2 const x_13 = float2(1.0f, 3.0f);
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]); float3 const x_14 = float3(1.0f, 3.0f, 2.0f);
return; return;
} }

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 23 ; Bound: 16
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -12,26 +12,19 @@
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%float = OpTypeFloat 32 %float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2 %float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%10 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%v2float = OpTypeVector %float 2 %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 %main_1 = OpFunction %void None %1
%4 = OpLabel %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 OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %1 %main = OpFunction %void None %1
%21 = OpLabel %14 = OpLabel
%22 = OpFunctionCall %void %main_1 %15 = OpFunctionCall %void %main_1
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -0,0 +1,4 @@
@compute @workgroup_size(1)
fn main() {
_ = mix(1.0, vec2(1.0).y, 1.0);
}

View File

@ -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;
}

View File

@ -0,0 +1,5 @@
[numthreads(1, 1, 1)]
void main() {
lerp(1.0f, 1.0f, 1.0f);
return;
}

View File

@ -0,0 +1,8 @@
#include <metal_stdlib>
using namespace metal;
kernel void tint_symbol() {
mix(1.0f, 1.0f, 1.0f);
return;
}

View File

@ -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

View File

@ -0,0 +1,4 @@
@compute @workgroup_size(1)
fn main() {
_ = mix(1.0, vec2(1.0).y, 1.0);
}

View File

@ -22,7 +22,7 @@ void swap_i1_i1_(inout int i, inout int j) {
int x_932 = temp; int x_932 = temp;
temp = 0; temp = 0;
temp = x_932; 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; int x_933 = i;
i = 0; i = 0;
i = x_933; i = x_933;
@ -46,7 +46,7 @@ void swap_i1_i1_(inout int i, inout int j) {
int x_938 = j; int x_938 = j;
j = 0; j = 0;
j = x_938; 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; int x_939 = i;
i = 0; i = 0;
i = x_939; i = x_939;
@ -136,7 +136,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_955 = param_3; int x_955 = param_3;
param_3 = 0; param_3 = 0;
param_3 = x_955; 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; int x_956 = param_1;
param_1 = 0; param_1 = 0;
param_1 = x_956; param_1 = x_956;
@ -172,7 +172,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_963 = pivot; int x_963 = pivot;
pivot = 0; pivot = 0;
pivot = x_963; 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; QuicksortObject x_964 = obj;
int tint_symbol_11[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 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); 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 = tint_symbol_14;
obj = x_972; obj = x_972;
int x_63 = pivot; 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; int x_973 = i_1;
i_1 = 0; i_1 = 0;
i_1 = x_973; i_1 = x_973;
@ -246,7 +246,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_980 = l; int x_980 = l;
l = 0; l = 0;
l = x_980; 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; int x_70 = i_1;
vec2 x_545 = vec2(x_537.y, x_538.x); vec2 x_545 = vec2(x_537.y, x_538.x);
int x_981 = param; int x_981 = param;
@ -346,7 +346,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_1003 = l; int x_1003 = l;
l = 0; l = 0;
l = x_1003; 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; int x_1004 = param_1;
param_1 = 0; param_1 = 0;
param_1 = x_1004; 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); int tint_symbol_19[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
stack = tint_symbol_19; stack = tint_symbol_19;
stack = x_1008; 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; int x_1009 = param_5;
param_5 = 0; param_5 = 0;
param_5 = x_1009; param_5 = x_1009;
@ -387,7 +387,7 @@ void quicksort_() {
p = 0; p = 0;
p = x_1010; p = x_1010;
int x_93 = top; 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; int x_1011 = p;
p = 0; p = 0;
p = x_1011; p = x_1011;
@ -431,7 +431,7 @@ void quicksort_() {
int x_1020 = param_4; int x_1020 = param_4;
param_4 = 0; param_4 = 0;
param_4 = x_1020; 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]; int x_1021 = stack[x_96_save];
stack[x_96_save] = 0; stack[x_96_save] = 0;
stack[x_96_save] = x_1021; stack[x_96_save] = x_1021;
@ -534,7 +534,7 @@ void quicksort_() {
int x_1043 = stack[x_100_save]; int x_1043 = stack[x_100_save];
stack[x_100_save] = 0; stack[x_100_save] = 0;
stack[x_100_save] = x_1043; 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); top = (x_112 - 1);
int x_1044 = param_5; int x_1044 = param_5;
param_5 = 0; param_5 = 0;
@ -566,7 +566,7 @@ void quicksort_() {
stack[x_110_save] = x_1050; stack[x_110_save] = x_1050;
vec2 x_577 = vec2(x_569.y, x_569.z); vec2 x_577 = vec2(x_569.y, x_569.z);
int x_120 = h_1; 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; param_5 = x_120;
int x_1051 = stack[x_100_save]; int x_1051 = stack[x_100_save];
stack[x_100_save] = 0; stack[x_100_save] = 0;
@ -676,7 +676,7 @@ void quicksort_() {
int x_1076 = stack[x_96_save]; int x_1076 = stack[x_96_save];
stack[x_96_save] = 0; stack[x_96_save] = 0;
stack[x_96_save] = x_1076; 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; QuicksortObject x_1077 = obj;
int tint_symbol_31[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0); 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); QuicksortObject tint_symbol_32 = QuicksortObject(tint_symbol_31);
@ -821,7 +821,7 @@ void main_1() {
QuicksortObject tint_symbol_40 = QuicksortObject(tint_symbol_39); QuicksortObject tint_symbol_40 = QuicksortObject(tint_symbol_39);
obj = tint_symbol_40; obj = tint_symbol_40;
obj = x_722; 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; int x_158 = i_2;
vec2 x_723 = uv; vec2 x_723 = uv;
uv = vec2(0.0f); uv = vec2(0.0f);
@ -841,7 +841,7 @@ void main_1() {
QuicksortObject tint_symbol_44 = QuicksortObject(tint_symbol_43); QuicksortObject tint_symbol_44 = QuicksortObject(tint_symbol_43);
obj = tint_symbol_44; obj = tint_symbol_44;
obj = x_756; 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; int x_757 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_757; i_2 = x_757;
@ -855,7 +855,7 @@ void main_1() {
vec2 x_759 = uv; vec2 x_759 = uv;
uv = vec2(0.0f); uv = vec2(0.0f);
uv = x_759; 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; vec2 x_760 = uv;
uv = vec2(0.0f); uv = vec2(0.0f);
uv = x_760; uv = x_760;
@ -875,7 +875,7 @@ void main_1() {
QuicksortObject tint_symbol_50 = QuicksortObject(tint_symbol_49); QuicksortObject tint_symbol_50 = QuicksortObject(tint_symbol_49);
obj = tint_symbol_50; obj = tint_symbol_50;
obj = x_763; 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; vec3 x_764 = color;
color = vec3(0.0f); color = vec3(0.0f);
color = x_764; color = x_764;
@ -919,7 +919,7 @@ void main_1() {
float x_773 = color.x; float x_773 = color.x;
color.x = 0.0f; color.x = 0.0f;
color.x = x_773; 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; int x_774 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_774; i_2 = x_774;
@ -954,7 +954,7 @@ void main_1() {
int x_781 = obj.numbers[0u]; int x_781 = obj.numbers[0u];
obj.numbers[0u] = 0; obj.numbers[0u] = 0;
obj.numbers[0u] = x_781; 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; float x_782 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_782; uv.x = x_782;
@ -973,7 +973,7 @@ void main_1() {
QuicksortObject tint_symbol_64 = QuicksortObject(tint_symbol_63); QuicksortObject tint_symbol_64 = QuicksortObject(tint_symbol_63);
obj = tint_symbol_64; obj = tint_symbol_64;
obj = x_785; 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; int x_786 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_786; i_2 = x_786;
@ -1013,7 +1013,7 @@ void main_1() {
float x_796 = uv.x; float x_796 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_796; 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; float x_797 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_797; uv.x = x_797;
@ -1057,7 +1057,7 @@ void main_1() {
int x_808 = i_2; int x_808 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_808; 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; int x_809 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_809; i_2 = x_809;
@ -1111,7 +1111,7 @@ void main_1() {
int x_822 = obj.numbers[0u]; int x_822 = obj.numbers[0u];
obj.numbers[0u] = 0; obj.numbers[0u] = 0;
obj.numbers[0u] = x_822; 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; float x_823 = color.z;
color.z = 0.0f; color.z = 0.0f;
color.z = x_823; color.z = x_823;
@ -1153,7 +1153,7 @@ void main_1() {
color.x = x_832; color.x = x_832;
vec2 x_476 = vec2(x_451.z, x_460.y); vec2 x_476 = vec2(x_451.z, x_460.y);
color.y = (x_257 + float(x_254)); 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; float x_833 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_833; uv.x = x_833;
@ -1168,14 +1168,14 @@ void main_1() {
int x_836 = i_2; int x_836 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_836; 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]; int x_837 = obj.numbers[0u];
obj.numbers[0u] = 0; obj.numbers[0u] = 0;
obj.numbers[0u] = x_837; obj.numbers[0u] = x_837;
float x_838 = color.y; float x_838 = color.y;
color.y = 0.0f; color.y = 0.0f;
color.y = x_838; 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; float x_839 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_839; uv.x = x_839;
@ -1281,7 +1281,7 @@ void main_1() {
float x_865 = color.x; float x_865 = color.x;
color.x = 0.0f; color.x = 0.0f;
color.x = x_865; 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; float x_866 = color.y;
color.y = 0.0f; color.y = 0.0f;
color.y = x_866; color.y = x_866;
@ -1382,7 +1382,7 @@ void main_1() {
float x_891 = color.y; float x_891 = color.y;
color.y = 0.0f; color.y = 0.0f;
color.y = x_891; 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; float x_892 = color.x;
color.x = 0.0f; color.x = 0.0f;
color.x = x_892; color.x = x_892;
@ -1431,7 +1431,7 @@ void main_1() {
float x_904 = color.z; float x_904 = color.z;
color.z = 0.0f; color.z = 0.0f;
color.z = x_904; 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; float x_905 = color.z;
color.z = 0.0f; color.z = 0.0f;
color.z = x_905; color.z = x_905;
@ -1485,7 +1485,7 @@ void main_1() {
float x_918 = uv.x; float x_918 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_918; 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); color.x = (float(x_317) + x_320);
float x_919 = color.x; float x_919 = color.x;
color.x = 0.0f; color.x = 0.0f;
@ -1528,7 +1528,7 @@ void main_1() {
float x_928 = uv.y; float x_928 = uv.y;
uv.y = 0.0f; uv.y = 0.0f;
uv.y = x_928; 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; float x_929 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_929; uv.x = x_929;

View File

@ -14,7 +14,7 @@ void swap_i1_i1_(inout int i, inout int j) {
const int x_932 = temp; const int x_932 = temp;
temp = 0; temp = 0;
temp = x_932; 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; const int x_933 = i;
i = 0; i = 0;
i = x_933; i = x_933;
@ -46,7 +46,7 @@ void swap_i1_i1_(inout int i, inout int j) {
const int x_938 = j; const int x_938 = j;
j = 0; j = 0;
j = x_938; 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; const int x_939 = i;
i = 0; i = 0;
i = x_939; i = x_939;
@ -192,7 +192,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_955 = param_3; const int x_955 = param_3;
param_3 = 0; param_3 = 0;
param_3 = x_955; 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; const int x_956 = param_1;
param_1 = 0; param_1 = 0;
param_1 = x_956; param_1 = x_956;
@ -228,7 +228,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_963 = pivot; const int x_963 = pivot;
pivot = 0; pivot = 0;
pivot = x_963; 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 QuicksortObject x_964 = obj;
const int tint_symbol_60[10] = (int[10])0; const int tint_symbol_60[10] = (int[10])0;
const QuicksortObject tint_symbol_61 = {tint_symbol_60}; 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 = tint_symbol_63;
obj = x_972; obj = x_972;
const int x_63 = pivot; 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; const int x_973 = i_1;
i_1 = 0; i_1 = 0;
i_1 = x_973; i_1 = x_973;
@ -310,7 +310,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_980 = l; const int x_980 = l;
l = 0; l = 0;
l = x_980; 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 int x_70 = i_1;
const float2 x_545 = float2(x_537.y, x_538.x); const float2 x_545 = float2(x_537.y, x_538.x);
const int x_981 = param; const int x_981 = param;
@ -434,7 +434,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_1003 = l; const int x_1003 = l;
l = 0; l = 0;
l = x_1003; 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; const int x_1004 = param_1;
param_1 = 0; param_1 = 0;
param_1 = x_1004; param_1 = x_1004;
@ -466,7 +466,7 @@ void quicksort_() {
const int tint_symbol_68[10] = (int[10])0; const int tint_symbol_68[10] = (int[10])0;
stack = tint_symbol_68; stack = tint_symbol_68;
stack = x_1008; 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; const int x_1009 = param_5;
param_5 = 0; param_5 = 0;
param_5 = x_1009; param_5 = x_1009;
@ -475,7 +475,7 @@ void quicksort_() {
p = 0; p = 0;
p = x_1010; p = x_1010;
const int x_93 = top; 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; const int x_1011 = p;
p = 0; p = 0;
p = x_1011; p = x_1011;
@ -519,7 +519,7 @@ void quicksort_() {
const int x_1020 = param_4; const int x_1020 = param_4;
param_4 = 0; param_4 = 0;
param_4 = x_1020; 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]; const int x_1021 = stack[x_96_save];
stack[x_96_save] = 0; stack[x_96_save] = 0;
stack[x_96_save] = x_1021; stack[x_96_save] = x_1021;
@ -622,7 +622,7 @@ void quicksort_() {
const int x_1043 = stack[x_100_save]; const int x_1043 = stack[x_100_save];
stack[x_100_save] = 0; stack[x_100_save] = 0;
stack[x_100_save] = x_1043; 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); top = (x_112 - 1);
const int x_1044 = param_5; const int x_1044 = param_5;
param_5 = 0; param_5 = 0;
@ -654,7 +654,7 @@ void quicksort_() {
stack[x_110_save] = x_1050; stack[x_110_save] = x_1050;
const float2 x_577 = float2(x_569.y, x_569.z); const float2 x_577 = float2(x_569.y, x_569.z);
const int x_120 = h_1; 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; param_5 = x_120;
const int x_1051 = stack[x_100_save]; const int x_1051 = stack[x_100_save];
stack[x_100_save] = 0; stack[x_100_save] = 0;
@ -764,7 +764,7 @@ void quicksort_() {
const int x_1076 = stack[x_96_save]; const int x_1076 = stack[x_96_save];
stack[x_96_save] = 0; stack[x_96_save] = 0;
stack[x_96_save] = x_1076; 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 QuicksortObject x_1077 = obj;
const int tint_symbol_80[10] = (int[10])0; const int tint_symbol_80[10] = (int[10])0;
const QuicksortObject tint_symbol_81 = {tint_symbol_80}; const QuicksortObject tint_symbol_81 = {tint_symbol_80};
@ -909,7 +909,7 @@ void main_1() {
const QuicksortObject tint_symbol_89 = {tint_symbol_88}; const QuicksortObject tint_symbol_89 = {tint_symbol_88};
obj = tint_symbol_89; obj = tint_symbol_89;
obj = x_722; 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 int x_158 = i_2;
const float2 x_723 = uv; const float2 x_723 = uv;
uv = (0.0f).xx; uv = (0.0f).xx;
@ -929,7 +929,7 @@ void main_1() {
const QuicksortObject tint_symbol_93 = {tint_symbol_92}; const QuicksortObject tint_symbol_93 = {tint_symbol_92};
obj = tint_symbol_93; obj = tint_symbol_93;
obj = x_756; 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; const int x_757 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_757; i_2 = x_757;
@ -943,7 +943,7 @@ void main_1() {
const float2 x_759 = uv; const float2 x_759 = uv;
uv = (0.0f).xx; uv = (0.0f).xx;
uv = x_759; 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; const float2 x_760 = uv;
uv = (0.0f).xx; uv = (0.0f).xx;
uv = x_760; uv = x_760;
@ -963,7 +963,7 @@ void main_1() {
const QuicksortObject tint_symbol_99 = {tint_symbol_98}; const QuicksortObject tint_symbol_99 = {tint_symbol_98};
obj = tint_symbol_99; obj = tint_symbol_99;
obj = x_763; 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; const float3 x_764 = color;
color = (0.0f).xxx; color = (0.0f).xxx;
color = x_764; color = x_764;
@ -1007,7 +1007,7 @@ void main_1() {
const float x_773 = color.x; const float x_773 = color.x;
color.x = 0.0f; color.x = 0.0f;
color.x = x_773; 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; const int x_774 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_774; i_2 = x_774;
@ -1042,7 +1042,7 @@ void main_1() {
const int x_781 = obj.numbers[0u]; const int x_781 = obj.numbers[0u];
obj.numbers[0u] = 0; obj.numbers[0u] = 0;
obj.numbers[0u] = x_781; 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; const float x_782 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_782; uv.x = x_782;
@ -1061,7 +1061,7 @@ void main_1() {
const QuicksortObject tint_symbol_113 = {tint_symbol_112}; const QuicksortObject tint_symbol_113 = {tint_symbol_112};
obj = tint_symbol_113; obj = tint_symbol_113;
obj = x_785; 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; const int x_786 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_786; i_2 = x_786;
@ -1101,7 +1101,7 @@ void main_1() {
const float x_796 = uv.x; const float x_796 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_796; 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; const float x_797 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_797; uv.x = x_797;
@ -1145,7 +1145,7 @@ void main_1() {
const int x_808 = i_2; const int x_808 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_808; 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; const int x_809 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_809; i_2 = x_809;
@ -1199,7 +1199,7 @@ void main_1() {
const int x_822 = obj.numbers[0u]; const int x_822 = obj.numbers[0u];
obj.numbers[0u] = 0; obj.numbers[0u] = 0;
obj.numbers[0u] = x_822; 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; const float x_823 = color.z;
color.z = 0.0f; color.z = 0.0f;
color.z = x_823; color.z = x_823;
@ -1241,7 +1241,7 @@ void main_1() {
color.x = x_832; color.x = x_832;
const float2 x_476 = float2(x_451.z, x_460.y); const float2 x_476 = float2(x_451.z, x_460.y);
color.y = (x_257 + float(x_254)); 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; const float x_833 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_833; uv.x = x_833;
@ -1256,14 +1256,14 @@ void main_1() {
const int x_836 = i_2; const int x_836 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_836; 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]; const int x_837 = obj.numbers[0u];
obj.numbers[0u] = 0; obj.numbers[0u] = 0;
obj.numbers[0u] = x_837; obj.numbers[0u] = x_837;
const float x_838 = color.y; const float x_838 = color.y;
color.y = 0.0f; color.y = 0.0f;
color.y = x_838; 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; const float x_839 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_839; uv.x = x_839;
@ -1369,7 +1369,7 @@ void main_1() {
const float x_865 = color.x; const float x_865 = color.x;
color.x = 0.0f; color.x = 0.0f;
color.x = x_865; 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; const float x_866 = color.y;
color.y = 0.0f; color.y = 0.0f;
color.y = x_866; color.y = x_866;
@ -1470,7 +1470,7 @@ void main_1() {
const float x_891 = color.y; const float x_891 = color.y;
color.y = 0.0f; color.y = 0.0f;
color.y = x_891; 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; const float x_892 = color.x;
color.x = 0.0f; color.x = 0.0f;
color.x = x_892; color.x = x_892;
@ -1519,7 +1519,7 @@ void main_1() {
const float x_904 = color.z; const float x_904 = color.z;
color.z = 0.0f; color.z = 0.0f;
color.z = x_904; 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; const float x_905 = color.z;
color.z = 0.0f; color.z = 0.0f;
color.z = x_905; color.z = x_905;
@ -1573,7 +1573,7 @@ void main_1() {
const float x_918 = uv.x; const float x_918 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_918; 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); color.x = (float(x_317) + x_320);
const float x_919 = color.x; const float x_919 = color.x;
color.x = 0.0f; color.x = 0.0f;
@ -1616,7 +1616,7 @@ void main_1() {
const float x_928 = uv.y; const float x_928 = uv.y;
uv.y = 0.0f; uv.y = 0.0f;
uv.y = x_928; 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; const float x_929 = uv.x;
uv.x = 0.0f; uv.x = 0.0f;
uv.x = x_929; uv.x = x_929;

View File

@ -27,7 +27,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec
int const x_932 = temp; int const x_932 = temp;
temp = 0; temp = 0;
temp = x_932; 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); int const x_933 = *(i);
*(i) = 0; *(i) = 0;
*(i) = x_933; *(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); int const x_938 = *(j);
*(j) = 0; *(j) = 0;
*(j) = x_938; *(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); int const x_939 = *(i);
*(i) = 0; *(i) = 0;
*(i) = x_939; *(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; int const x_955 = param_3;
param_3 = 0; param_3 = 0;
param_3 = x_955; 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; int const x_956 = param_1;
param_1 = 0; param_1 = 0;
param_1 = x_956; 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; int const x_963 = pivot;
pivot = 0; pivot = 0;
pivot = x_963; 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); QuicksortObject const x_964 = *(tint_symbol_82);
tint_array<int, 10> const tint_symbol_10 = tint_array<int, 10>{}; tint_array<int, 10> const tint_symbol_10 = tint_array<int, 10>{};
QuicksortObject const tint_symbol_11 = {.numbers=tint_symbol_10}; 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) = tint_symbol_13;
*(tint_symbol_82) = x_972; *(tint_symbol_82) = x_972;
int const x_63 = pivot; 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; int const x_973 = i_1;
i_1 = 0; i_1 = 0;
i_1 = x_973; 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); int const x_980 = *(l);
*(l) = 0; *(l) = 0;
*(l) = x_980; *(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; int const x_70 = i_1;
float2 const x_545 = float2(x_537[1], x_538[0]); float2 const x_545 = float2(x_537[1], x_538[0]);
int const x_981 = param; 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); int const x_1003 = *(l);
*(l) = 0; *(l) = 0;
*(l) = x_1003; *(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; int const x_1004 = param_1;
param_1 = 0; param_1 = 0;
param_1 = x_1004; param_1 = x_1004;
@ -384,7 +384,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
tint_array<int, 10> const tint_symbol_18 = tint_array<int, 10>{}; tint_array<int, 10> const tint_symbol_18 = tint_array<int, 10>{};
stack = tint_symbol_18; stack = tint_symbol_18;
stack = x_1008; 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; int const x_1009 = param_5;
param_5 = 0; param_5 = 0;
param_5 = x_1009; param_5 = x_1009;
@ -393,7 +393,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
p = 0; p = 0;
p = x_1010; p = x_1010;
int const x_93 = top; 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; int const x_1011 = p;
p = 0; p = 0;
p = x_1011; p = x_1011;
@ -437,7 +437,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
int const x_1020 = param_4; int const x_1020 = param_4;
param_4 = 0; param_4 = 0;
param_4 = x_1020; 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]; int const x_1021 = stack[x_96_save];
stack[x_96_save] = 0; stack[x_96_save] = 0;
stack[x_96_save] = x_1021; 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]; int const x_1043 = stack[x_100_save];
stack[x_100_save] = 0; stack[x_100_save] = 0;
stack[x_100_save] = x_1043; 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<int>((as_type<uint>(x_112) - as_type<uint>(1))); top = as_type<int>((as_type<uint>(x_112) - as_type<uint>(1)));
int const x_1044 = param_5; int const x_1044 = param_5;
param_5 = 0; param_5 = 0;
@ -573,7 +573,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
stack[x_110_save] = x_1050; stack[x_110_save] = x_1050;
float2 const x_577 = float2(x_569[1], x_569[2]); float2 const x_577 = float2(x_569[1], x_569[2]);
int const x_120 = h_1; 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; param_5 = x_120;
int const x_1051 = stack[x_100_save]; int const x_1051 = stack[x_100_save];
stack[x_100_save] = 0; 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]; int const x_1076 = stack[x_96_save];
stack[x_96_save] = 0; stack[x_96_save] = 0;
stack[x_96_save] = x_1076; 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); QuicksortObject const x_1077 = *(tint_symbol_83);
tint_array<int, 10> const tint_symbol_30 = tint_array<int, 10>{}; tint_array<int, 10> const tint_symbol_30 = tint_array<int, 10>{};
QuicksortObject const tint_symbol_31 = {.numbers=tint_symbol_30}; 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}; QuicksortObject const tint_symbol_39 = {.numbers=tint_symbol_38};
*(tint_symbol_84) = tint_symbol_39; *(tint_symbol_84) = tint_symbol_39;
*(tint_symbol_84) = x_722; *(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; int const x_158 = i_2;
float2 const x_723 = uv; float2 const x_723 = uv;
uv = float2(0.0f); 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}; QuicksortObject const tint_symbol_43 = {.numbers=tint_symbol_42};
*(tint_symbol_84) = tint_symbol_43; *(tint_symbol_84) = tint_symbol_43;
*(tint_symbol_84) = x_756; *(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; int const x_757 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_757; 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; float2 const x_759 = uv;
uv = float2(0.0f); uv = float2(0.0f);
uv = x_759; 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; float2 const x_760 = uv;
uv = float2(0.0f); uv = float2(0.0f);
uv = x_760; 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}; QuicksortObject const tint_symbol_49 = {.numbers=tint_symbol_48};
*(tint_symbol_84) = tint_symbol_49; *(tint_symbol_84) = tint_symbol_49;
*(tint_symbol_84) = x_763; *(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; float3 const x_764 = color;
color = float3(0.0f); color = float3(0.0f);
color = x_764; 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]; float const x_773 = color[0];
color[0] = 0.0f; color[0] = 0.0f;
color[0] = x_773; 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; int const x_774 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_774; 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]; int const x_781 = (*(tint_symbol_84)).numbers[0u];
(*(tint_symbol_84)).numbers[0u] = 0; (*(tint_symbol_84)).numbers[0u] = 0;
(*(tint_symbol_84)).numbers[0u] = x_781; (*(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]; float const x_782 = uv[0];
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_782; 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}; QuicksortObject const tint_symbol_63 = {.numbers=tint_symbol_62};
*(tint_symbol_84) = tint_symbol_63; *(tint_symbol_84) = tint_symbol_63;
*(tint_symbol_84) = x_785; *(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; int const x_786 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_786; 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]; float const x_796 = uv[0];
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_796; 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]; float const x_797 = uv[0];
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_797; 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; int const x_808 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_808; 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; int const x_809 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_809; 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]; int const x_822 = (*(tint_symbol_84)).numbers[0u];
(*(tint_symbol_84)).numbers[0u] = 0; (*(tint_symbol_84)).numbers[0u] = 0;
(*(tint_symbol_84)).numbers[0u] = x_822; (*(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]; float const x_823 = color[2];
color[2] = 0.0f; color[2] = 0.0f;
color[2] = x_823; 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; color[0] = x_832;
float2 const x_476 = float2(x_451[2], x_460[1]); float2 const x_476 = float2(x_451[2], x_460[1]);
color[1] = (x_257 + float(x_254)); 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]; float const x_833 = uv[0];
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_833; 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; int const x_836 = i_2;
i_2 = 0; i_2 = 0;
i_2 = x_836; 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]; int const x_837 = (*(tint_symbol_84)).numbers[0u];
(*(tint_symbol_84)).numbers[0u] = 0; (*(tint_symbol_84)).numbers[0u] = 0;
(*(tint_symbol_84)).numbers[0u] = x_837; (*(tint_symbol_84)).numbers[0u] = x_837;
float const x_838 = color[1]; float const x_838 = color[1];
color[1] = 0.0f; color[1] = 0.0f;
color[1] = x_838; 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]; float const x_839 = uv[0];
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_839; 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]; float const x_865 = color[0];
color[0] = 0.0f; color[0] = 0.0f;
color[0] = x_865; 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]; float const x_866 = color[1];
color[1] = 0.0f; color[1] = 0.0f;
color[1] = x_866; 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]; float const x_891 = color[1];
color[1] = 0.0f; color[1] = 0.0f;
color[1] = x_891; 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]; float const x_892 = color[0];
color[0] = 0.0f; color[0] = 0.0f;
color[0] = x_892; 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]; float const x_904 = color[2];
color[2] = 0.0f; color[2] = 0.0f;
color[2] = x_904; 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]; float const x_905 = color[2];
color[2] = 0.0f; color[2] = 0.0f;
color[2] = x_905; 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]; float const x_918 = uv[0];
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_918; 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); color[0] = (float(x_317) + x_320);
float const x_919 = color[0]; float const x_919 = color[0];
color[0] = 0.0f; 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]; float const x_928 = uv[1];
uv[1] = 0.0f; uv[1] = 0.0f;
uv[1] = x_928; 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]; float const x_929 = uv[0];
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_929; uv[0] = x_929;

File diff suppressed because it is too large Load Diff

View File

@ -67,7 +67,7 @@ mat4 getFrameData_f1_(inout float frameID) {
vec4 x_40 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.0f), 0.0f); 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_47 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.25f), 0.0f);
vec4 x_54 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.5f), 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; uniform highp sampler2D tileMapsTexture1_tileMapsSampler;

View File

@ -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_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_47 = frameMapTexture.SampleBias(frameMapSampler, float2(fX, 0.25f), 0.0f);
const float4 x_54 = frameMapTexture.SampleBias(frameMapSampler, float2(fX, 0.5f), 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() { void main_1() {

View File

@ -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)); float4 const x_47 = tint_symbol_6.sample(tint_symbol_7, float2(x_44, 0.25f), bias(0.0f));
float const x_51 = fX; float const x_51 = fX;
float4 const x_54 = tint_symbol_6.sample(tint_symbol_7, float2(x_51, 0.5f), bias(0.0f)); 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<float, access::sample> tint_symbol_10, sampler tint_symbol_11, texture2d<float, access::sample> tint_symbol_12, texture2d<float, access::sample> tint_symbol_13, sampler tint_symbol_14, texture2d<float, access::sample> tint_symbol_16, sampler tint_symbol_17, texture2d<float, access::sample> tint_symbol_18, sampler tint_symbol_19, thread float4* const tint_symbol_20) { void main_1(thread float2* const tint_symbol_8, const constant LeftOver* const tint_symbol_9, texture2d<float, access::sample> tint_symbol_10, sampler tint_symbol_11, texture2d<float, access::sample> tint_symbol_12, texture2d<float, access::sample> tint_symbol_13, sampler tint_symbol_14, texture2d<float, access::sample> tint_symbol_16, sampler tint_symbol_17, texture2d<float, access::sample> tint_symbol_18, sampler tint_symbol_19, thread float4* const tint_symbol_20) {

View File

@ -13,10 +13,10 @@ bug/tint/948.wgsl:137:27 note: reading from module-scope private variable 'mt' m
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 383 ; Bound: 378
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
%136 = OpExtInstImport "GLSL.std.450" %131 = OpExtInstImport "GLSL.std.450"
OpMemoryModel Logical GLSL450 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 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 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_25 = OpConstant %float 0.25
%float_0_5 = OpConstant %float 0.5 %float_0_5 = OpConstant %float 0.5
%void = OpTypeVoid %void = OpTypeVoid
%104 = OpTypeFunction %void %99 = OpTypeFunction %void
%_ptr_Function_v4float = OpTypePointer Function %v4float %_ptr_Function_v4float = OpTypePointer Function %v4float
%_ptr_Function_v2float = OpTypePointer Function %v2float %_ptr_Function_v2float = OpTypePointer Function %v2float
%int = OpTypeInt 32 1 %int = OpTypeInt 32 1
%_ptr_Function_int = OpTypePointer Function %int %_ptr_Function_int = OpTypePointer Function %int
%119 = OpConstantNull %int %114 = OpConstantNull %int
%_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float %_ptr_Function_mat4v4float = OpTypePointer Function %mat4v4float
%125 = OpConstantNull %mat4v4float %120 = OpConstantNull %mat4v4float
%_ptr_Function_v3float = OpTypePointer Function %v3float %_ptr_Function_v3float = OpTypePointer Function %v3float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%uint_5 = OpConstant %uint 5 %uint_5 = OpConstant %uint 5
%_ptr_Uniform_v2float = OpTypePointer Uniform %v2float %_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 %uint_4 = OpConstant %uint 4
%int_2 = OpConstant %int 2 %int_2 = OpConstant %int 2
%bool = OpTypeBool %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_0 = OpConstant %uint 0
%uint_2 = OpConstant %uint 2 %uint_2 = OpConstant %uint 2
%float_8 = OpConstant %float 8 %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 %uint_8 = OpConstant %uint 8
%_ptr_Uniform_v3float = OpTypePointer Uniform %v3float %_ptr_Uniform_v3float = OpTypePointer Uniform %v3float
%main_out = OpTypeStruct %v4float %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 %getFrameData_f1_ = OpFunction %mat4v4float None %49
%frameID = OpFunctionParameter %_ptr_Function_float %frameID = OpFunctionParameter %_ptr_Function_float
%53 = OpLabel %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 %95 = OpCompositeExtract %float %77 2
%96 = OpCompositeExtract %float %77 3 %96 = OpCompositeExtract %float %77 3
%97 = OpCompositeConstruct %v4float %93 %94 %95 %96 %97 = OpCompositeConstruct %v4float %93 %94 %95 %96
%98 = OpCompositeExtract %float %15 0 %98 = OpCompositeConstruct %mat4v4float %87 %92 %97 %15
%99 = OpCompositeExtract %float %15 1 OpReturnValue %98
%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
OpFunctionEnd OpFunctionEnd
%main_1 = OpFunction %void None %104 %main_1 = OpFunction %void None %99
%107 = OpLabel %102 = OpLabel
%color = OpVariable %_ptr_Function_v4float Function %15 %color = OpVariable %_ptr_Function_v4float Function %15
%tileUV = OpVariable %_ptr_Function_v2float Function %29 %tileUV = OpVariable %_ptr_Function_v2float Function %29
%tileID = OpVariable %_ptr_Function_v2float Function %29 %tileID = OpVariable %_ptr_Function_v2float Function %29
%sheetUnits = OpVariable %_ptr_Function_v2float Function %29 %sheetUnits = OpVariable %_ptr_Function_v2float Function %29
%spriteUnits = OpVariable %_ptr_Function_float Function %37 %spriteUnits = OpVariable %_ptr_Function_float Function %37
%stageUnits = OpVariable %_ptr_Function_v2float Function %29 %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 %frameID_1 = OpVariable %_ptr_Function_float Function %37
%animationData = OpVariable %_ptr_Function_v4float Function %15 %animationData = OpVariable %_ptr_Function_v4float Function %15
%f = OpVariable %_ptr_Function_float Function %37 %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 %param = OpVariable %_ptr_Function_float Function %37
%frameSize = OpVariable %_ptr_Function_v2float Function %29 %frameSize = OpVariable %_ptr_Function_v2float Function %29
%offset_1 = 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 %alpha = OpVariable %_ptr_Function_float Function %37
%mixed = OpVariable %_ptr_Function_v3float Function %47 %mixed = OpVariable %_ptr_Function_v3float Function %47
OpStore %color %15 OpStore %color %15
%134 = OpLoad %v2float %tUV %129 = OpLoad %v2float %tUV
%135 = OpExtInst %v2float %136 Fract %134 %130 = OpExtInst %v2float %131 Fract %129
OpStore %tileUV %135 OpStore %tileUV %130
%138 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 %133 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%139 = OpLoad %float %138 %134 = OpLoad %float %133
%140 = OpAccessChain %_ptr_Function_float %tileUV %uint_1 %135 = OpAccessChain %_ptr_Function_float %tileUV %uint_1
%142 = OpFSub %float %float_1 %139 %137 = OpFSub %float %float_1 %134
OpStore %140 %142 OpStore %135 %137
%143 = OpLoad %v2float %tUV %138 = OpLoad %v2float %tUV
%144 = OpExtInst %v2float %136 Floor %143 %139 = OpExtInst %v2float %131 Floor %138
OpStore %tileID %144 OpStore %tileID %139
%147 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 %142 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
%148 = OpLoad %v2float %147 %143 = OpLoad %v2float %142
%150 = OpFDiv %v2float %149 %148 %145 = OpFDiv %v2float %144 %143
OpStore %sheetUnits %150 OpStore %sheetUnits %145
%151 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7 %146 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%152 = OpLoad %float %151 %147 = OpLoad %float %146
%153 = OpFDiv %float %float_1 %152 %148 = OpFDiv %float %float_1 %147
OpStore %spriteUnits %153 OpStore %spriteUnits %148
%155 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 %150 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4
%156 = OpLoad %v2float %155 %151 = OpLoad %v2float %150
%157 = OpFDiv %v2float %149 %156 %152 = OpFDiv %v2float %144 %151
OpStore %stageUnits %157 OpStore %stageUnits %152
OpStore %i %119 OpStore %i %114
OpBranch %158 OpBranch %153
%158 = OpLabel %153 = OpLabel
OpLoopMerge %159 %160 None 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 OpBranch %161
%163 = OpLabel
OpBranch %154
%161 = OpLabel %161 = OpLabel
%162 = OpLoad %int %i %164 = OpLoad %int %i
%164 = OpSLessThan %bool %162 %int_2 OpSelectionMerge %165 None
OpSelectionMerge %166 None OpSwitch %164 %166 1 %167 0 %168
OpBranchConditional %164 %167 %168
%167 = OpLabel %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 %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 %166 = OpLabel
%169 = OpLoad %int %i OpBranch %165
OpSelectionMerge %170 None %165 = OpLabel
OpSwitch %169 %171 1 %172 0 %173 %190 = OpLoad %float %frameID_1
%172 = OpLabel %191 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%174 = OpLoad %v2float %tileID %192 = OpLoad %float %191
%175 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 %194 = OpLoad %26 %animationMapSampler
%176 = OpLoad %v2float %175 %195 = OpLoad %23 %animationMapTexture
%178 = OpLoad %26 %tileMapsSampler %196 = OpSampledImage %66 %195 %194
%179 = OpLoad %23 %tileMapsTexture1 %197 = OpFAdd %float %190 %float_0_5
%180 = OpSampledImage %66 %179 %178 %198 = OpFDiv %float %197 %192
%182 = OpFAdd %v2float %174 %181 %199 = OpCompositeConstruct %v2float %198 %37
%183 = OpFDiv %v2float %182 %176 %193 = OpImageSampleImplicitLod %v4float %196 %199 Bias %37
%177 = OpImageSampleImplicitLod %v4float %180 %183 Bias %37 OpStore %animationData %193
%184 = OpCompositeExtract %float %177 0 %200 = OpAccessChain %_ptr_Function_float %animationData %uint_1
OpStore %frameID_1 %184 %201 = OpLoad %float %200
OpBranch %170 %202 = OpFOrdGreaterThan %bool %201 %37
%173 = OpLabel OpSelectionMerge %203 None
%185 = OpLoad %v2float %tileID OpBranchConditional %202 %204 %203
%186 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_4 %204 = OpLabel
%187 = OpLoad %v2float %186 %206 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_0
%189 = OpLoad %26 %tileMapsSampler %207 = OpLoad %float %206
%190 = OpLoad %23 %tileMapsTexture0 %209 = OpAccessChain %_ptr_Function_float %animationData %uint_2
%191 = OpSampledImage %66 %190 %189 %210 = OpLoad %float %209
%192 = OpFAdd %v2float %185 %181 %211 = OpFMul %float %207 %210
%193 = OpFDiv %v2float %192 %187 %212 = OpFRem %float %211 %float_1
%188 = OpImageSampleImplicitLod %v4float %191 %193 Bias %37 OpStore %mt %212
%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
OpStore %f %37 OpStore %f %37
OpBranch %218 OpBranch %213
%218 = OpLabel %213 = OpLabel
OpLoopMerge %219 %220 None OpLoopMerge %214 %215 None
OpBranch %221 OpBranch %216
%216 = OpLabel
%217 = OpLoad %float %f
%219 = OpFOrdLessThan %bool %217 %float_8
OpSelectionMerge %220 None
OpBranchConditional %219 %221 %222
%221 = OpLabel %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 OpBranch %220
%222 = OpLabel
OpBranch %214
%220 = OpLabel %220 = OpLabel
%249 = OpLoad %float %f %223 = OpAccessChain %_ptr_Function_float %animationData %uint_1
%250 = OpFAdd %float %249 %float_1 %224 = OpLoad %float %223
OpStore %f %250 %225 = OpLoad %float %mt
OpBranch %218 %226 = OpFOrdGreaterThan %bool %224 %225
%219 = OpLabel OpSelectionMerge %227 None
OpBranch %208 OpBranchConditional %226 %228 %227
%208 = OpLabel %228 = OpLabel
%251 = OpLoad %float %frameID_1 %229 = OpAccessChain %_ptr_Function_float %animationData %uint_0
%252 = OpFAdd %float %251 %float_0_5 %230 = OpLoad %float %229
OpStore %param %252 OpStore %frameID_1 %230
%253 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param OpBranch %214
OpStore %frameData %253 %227 = OpLabel
%255 = OpAccessChain %_ptr_Function_v4float %frameData %119 %231 = OpLoad %float %frameID_1
%256 = OpLoad %v4float %255 %232 = OpAccessChain %_ptr_Uniform_float %x_20 %uint_7
%257 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5 %233 = OpLoad %float %232
%258 = OpLoad %v2float %257 %234 = OpLoad %float %f
%259 = OpCompositeExtract %float %256 3 %236 = OpLoad %26 %animationMapSampler
%260 = OpCompositeExtract %float %256 2 %237 = OpLoad %23 %animationMapTexture
%261 = OpCompositeConstruct %v2float %259 %260 %238 = OpSampledImage %66 %237 %236
%262 = OpFDiv %v2float %261 %258 %239 = OpFAdd %float %231 %float_0_5
OpStore %frameSize %262 %240 = OpFDiv %float %239 %233
%263 = OpAccessChain %_ptr_Function_v4float %frameData %119 %242 = OpFMul %float %float_0_125 %234
%264 = OpLoad %v4float %263 %243 = OpCompositeConstruct %v2float %240 %242
%265 = OpLoad %v2float %sheetUnits %235 = OpImageSampleImplicitLod %v4float %238 %243 Bias %37
%266 = OpCompositeExtract %float %264 0 OpStore %animationData %235
%267 = OpCompositeExtract %float %264 1 OpBranch %215
%268 = OpCompositeConstruct %v2float %266 %267 %215 = OpLabel
%269 = OpFMul %v2float %268 %265 %244 = OpLoad %float %f
OpStore %offset_1 %269 %245 = OpFAdd %float %244 %float_1
%270 = OpAccessChain %_ptr_Function_v4float %frameData %int_2 OpStore %f %245
%271 = OpLoad %v4float %270 OpBranch %213
%272 = OpAccessChain %_ptr_Function_v4float %frameData %119 %214 = OpLabel
%273 = OpLoad %v4float %272 OpBranch %203
%274 = OpCompositeExtract %float %271 0 %203 = OpLabel
%275 = OpCompositeExtract %float %271 1 %246 = OpLoad %float %frameID_1
%276 = OpCompositeConstruct %v2float %274 %275 %247 = OpFAdd %float %246 %float_0_5
%277 = OpCompositeExtract %float %273 3 OpStore %param %247
%278 = OpCompositeExtract %float %273 2 %248 = OpFunctionCall %mat4v4float %getFrameData_f1_ %param
%279 = OpCompositeConstruct %v2float %277 %278 OpStore %frameData %248
%280 = OpFDiv %v2float %276 %279 %250 = OpAccessChain %_ptr_Function_v4float %frameData %114
OpStore %ratio %280 %251 = OpLoad %v4float %250
%281 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2 %252 = OpAccessChain %_ptr_Uniform_v2float %x_20 %uint_5
%282 = OpLoad %float %281 %253 = OpLoad %v2float %252
%283 = OpFOrdEqual %bool %282 %float_1 %254 = OpCompositeExtract %float %251 3
OpSelectionMerge %284 None %255 = OpCompositeExtract %float %251 2
OpBranchConditional %283 %285 %284 %256 = OpCompositeConstruct %v2float %254 %255
%285 = OpLabel %257 = OpFDiv %v2float %256 %253
%286 = OpLoad %v2float %tileUV OpStore %frameSize %257
%287 = OpCompositeExtract %float %286 1 %258 = OpAccessChain %_ptr_Function_v4float %frameData %114
%288 = OpCompositeExtract %float %286 0 %259 = OpLoad %v4float %258
%289 = OpCompositeConstruct %v2float %287 %288 %260 = OpLoad %v2float %sheetUnits
OpStore %tileUV %289 %261 = OpCompositeExtract %float %259 0
OpBranch %284 %262 = OpCompositeExtract %float %259 1
%284 = OpLabel %263 = OpCompositeConstruct %v2float %261 %262
%290 = OpLoad %int %i %264 = OpFMul %v2float %263 %260
%291 = OpIEqual %bool %290 %119 OpStore %offset_1 %264
OpSelectionMerge %292 None %265 = OpAccessChain %_ptr_Function_v4float %frameData %int_2
OpBranchConditional %291 %293 %294 %266 = OpLoad %v4float %265
%293 = OpLabel %267 = OpAccessChain %_ptr_Function_v4float %frameData %114
%295 = OpLoad %v2float %tileUV %268 = OpLoad %v4float %267
%296 = OpLoad %v2float %frameSize %269 = OpCompositeExtract %float %266 0
%297 = OpLoad %v2float %offset_1 %270 = OpCompositeExtract %float %266 1
%299 = OpLoad %26 %spriteSheetSampler %271 = OpCompositeConstruct %v2float %269 %270
%300 = OpLoad %23 %spriteSheetTexture %272 = OpCompositeExtract %float %268 3
%301 = OpSampledImage %66 %300 %299 %273 = OpCompositeExtract %float %268 2
%302 = OpFMul %v2float %295 %296 %274 = OpCompositeConstruct %v2float %272 %273
%303 = OpFAdd %v2float %302 %297 %275 = OpFDiv %v2float %271 %274
%298 = OpImageSampleImplicitLod %v4float %301 %303 OpStore %ratio %275
OpStore %color %298 %276 = OpAccessChain %_ptr_Function_float %frameData %int_2 %uint_2
OpBranch %292 %277 = OpLoad %float %276
%294 = OpLabel %278 = OpFOrdEqual %bool %277 %float_1
%304 = OpLoad %v2float %tileUV OpSelectionMerge %279 None
%305 = OpLoad %v2float %frameSize OpBranchConditional %278 %280 %279
%306 = OpLoad %v2float %offset_1 %280 = OpLabel
%308 = OpLoad %26 %spriteSheetSampler %281 = OpLoad %v2float %tileUV
%309 = OpLoad %23 %spriteSheetTexture %282 = OpCompositeExtract %float %281 1
%310 = OpSampledImage %66 %309 %308 %283 = OpCompositeExtract %float %281 0
%311 = OpFMul %v2float %304 %305 %284 = OpCompositeConstruct %v2float %282 %283
%312 = OpFAdd %v2float %311 %306 OpStore %tileUV %284
%307 = OpImageSampleImplicitLod %v4float %310 %312 OpBranch %279
OpStore %nc %307 %279 = OpLabel
%314 = OpAccessChain %_ptr_Function_float %color %uint_3 %285 = OpLoad %int %i
%315 = OpLoad %float %314 %286 = OpIEqual %bool %285 %114
%316 = OpAccessChain %_ptr_Function_float %nc %uint_3 OpSelectionMerge %287 None
%317 = OpLoad %float %316 OpBranchConditional %286 %288 %289
%319 = OpFAdd %float %315 %317 %288 = OpLabel
%318 = OpExtInst %float %136 NMin %319 %float_1 %290 = OpLoad %v2float %tileUV
OpStore %alpha %318 %291 = OpLoad %v2float %frameSize
%320 = OpLoad %v4float %color %292 = OpLoad %v2float %offset_1
%321 = OpLoad %v4float %nc %294 = OpLoad %26 %spriteSheetSampler
%322 = OpAccessChain %_ptr_Function_float %nc %uint_3 %295 = OpLoad %23 %spriteSheetTexture
%323 = OpLoad %float %322 %296 = OpSampledImage %66 %295 %294
%325 = OpCompositeExtract %float %320 0 %297 = OpFMul %v2float %290 %291
%326 = OpCompositeExtract %float %320 1 %298 = OpFAdd %v2float %297 %292
%327 = OpCompositeExtract %float %320 2 %293 = OpImageSampleImplicitLod %v4float %296 %298
%328 = OpCompositeConstruct %v3float %325 %326 %327 OpStore %color %293
%329 = OpCompositeExtract %float %321 0 OpBranch %287
%330 = OpCompositeExtract %float %321 1 %289 = OpLabel
%331 = OpCompositeExtract %float %321 2 %299 = OpLoad %v2float %tileUV
%332 = OpCompositeConstruct %v3float %329 %330 %331 %300 = OpLoad %v2float %frameSize
%333 = OpCompositeConstruct %v3float %323 %323 %323 %301 = OpLoad %v2float %offset_1
%324 = OpExtInst %v3float %136 FMix %328 %332 %333 %303 = OpLoad %26 %spriteSheetSampler
OpStore %mixed %324 %304 = OpLoad %23 %spriteSheetTexture
%334 = OpLoad %v3float %mixed %305 = OpSampledImage %66 %304 %303
%335 = OpLoad %float %alpha %306 = OpFMul %v2float %299 %300
%336 = OpCompositeExtract %float %334 0 %307 = OpFAdd %v2float %306 %301
%337 = OpCompositeExtract %float %334 1 %302 = OpImageSampleImplicitLod %v4float %305 %307
%338 = OpCompositeExtract %float %334 2 OpStore %nc %302
%339 = OpCompositeConstruct %v4float %336 %337 %338 %335 %309 = OpAccessChain %_ptr_Function_float %color %uint_3
OpStore %color %339 %310 = OpLoad %float %309
OpBranch %292 %311 = OpAccessChain %_ptr_Function_float %nc %uint_3
%292 = OpLabel %312 = OpLoad %float %311
OpBranch %160 %314 = OpFAdd %float %310 %312
%160 = OpLabel %313 = OpExtInst %float %131 NMin %314 %float_1
%340 = OpLoad %int %i OpStore %alpha %313
%342 = OpIAdd %int %340 %int_1 %315 = OpLoad %v4float %color
OpStore %i %342 %316 = OpLoad %v4float %nc
OpBranch %158 %317 = OpAccessChain %_ptr_Function_float %nc %uint_3
%159 = OpLabel %318 = OpLoad %float %317
%345 = OpAccessChain %_ptr_Uniform_v3float %x_20 %uint_8 %320 = OpCompositeExtract %float %315 0
%346 = OpLoad %v3float %345 %321 = OpCompositeExtract %float %315 1
%347 = OpLoad %v4float %color %322 = OpCompositeExtract %float %315 2
%348 = OpCompositeExtract %float %347 0 %323 = OpCompositeConstruct %v3float %320 %321 %322
%349 = OpCompositeExtract %float %347 1 %324 = OpCompositeExtract %float %316 0
%350 = OpCompositeExtract %float %347 2 %325 = OpCompositeExtract %float %316 1
%351 = OpCompositeConstruct %v3float %348 %349 %350 %326 = OpCompositeExtract %float %316 2
%352 = OpFMul %v3float %351 %346 %327 = OpCompositeConstruct %v3float %324 %325 %326
%353 = OpLoad %v4float %color %328 = OpCompositeConstruct %v3float %318 %318 %318
%354 = OpCompositeExtract %float %352 0 %319 = OpExtInst %v3float %131 FMix %323 %327 %328
%355 = OpCompositeExtract %float %352 1 OpStore %mixed %319
%356 = OpCompositeExtract %float %352 2 %329 = OpLoad %v3float %mixed
%357 = OpCompositeExtract %float %353 3 %330 = OpLoad %float %alpha
%358 = OpCompositeConstruct %v4float %354 %355 %356 %357 %331 = OpCompositeExtract %float %329 0
OpStore %color %358 %332 = OpCompositeExtract %float %329 1
%359 = OpLoad %v4float %color %333 = OpCompositeExtract %float %329 2
OpStore %glFragColor %359 %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 OpReturn
OpFunctionEnd OpFunctionEnd
%main_inner = OpFunction %main_out None %360 %main_inner = OpFunction %main_out None %355
%tUV_param = OpFunctionParameter %v2float %tUV_param = OpFunctionParameter %v2float
%tileID_1_param = OpFunctionParameter %v2float %tileID_1_param = OpFunctionParameter %v2float
%levelUnits_param = OpFunctionParameter %v2float %levelUnits_param = OpFunctionParameter %v2float
%stageUnits_1_param = OpFunctionParameter %v2float %stageUnits_1_param = OpFunctionParameter %v2float
%vPosition_param = OpFunctionParameter %v3float %vPosition_param = OpFunctionParameter %v3float
%vUV_param = OpFunctionParameter %v2float %vUV_param = OpFunctionParameter %v2float
%369 = OpLabel %364 = OpLabel
OpStore %tUV %tUV_param OpStore %tUV %tUV_param
OpStore %tileID_1 %tileID_1_param OpStore %tileID_1 %tileID_1_param
OpStore %levelUnits %levelUnits_param OpStore %levelUnits %levelUnits_param
OpStore %stageUnits_1 %stageUnits_1_param OpStore %stageUnits_1 %stageUnits_1_param
OpStore %vPosition %vPosition_param OpStore %vPosition %vPosition_param
OpStore %vUV %vUV_param OpStore %vUV %vUV_param
%370 = OpFunctionCall %void %main_1 %365 = OpFunctionCall %void %main_1
%371 = OpLoad %v4float %glFragColor %366 = OpLoad %v4float %glFragColor
%372 = OpCompositeConstruct %main_out %371 %367 = OpCompositeConstruct %main_out %366
OpReturnValue %372 OpReturnValue %367
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %104 %main = OpFunction %void None %99
%374 = OpLabel %369 = OpLabel
%376 = OpLoad %v2float %tUV_param_1 %371 = OpLoad %v2float %tUV_param_1
%377 = OpLoad %v2float %tileID_1_param_1 %372 = OpLoad %v2float %tileID_1_param_1
%378 = OpLoad %v2float %levelUnits_param_1 %373 = OpLoad %v2float %levelUnits_param_1
%379 = OpLoad %v2float %stageUnits_1_param_1 %374 = OpLoad %v2float %stageUnits_1_param_1
%380 = OpLoad %v3float %vPosition_param_1 %375 = OpLoad %v3float %vPosition_param_1
%381 = OpLoad %v2float %vUV_param_1 %376 = OpLoad %v2float %vUV_param_1
%375 = OpFunctionCall %main_out %main_inner %376 %377 %378 %379 %380 %381 %370 = OpFunctionCall %main_out %main_inner %371 %372 %373 %374 %375 %376
%382 = OpCompositeExtract %v4float %375 0 %377 = OpCompositeExtract %v4float %370 0
OpStore %glFragColor_1_1 %382 OpStore %glFragColor_1_1 %377
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -5,8 +5,8 @@ void unused_entry_point() {
return; return;
} }
void f() { void f() {
float a = vec2(1.0f).y; float a = 1.0f;
float b = vec3(1.0f).z; float b = 1.0f;
float c = vec4(1.0f).w; float c = 1.0f;
} }

View File

@ -4,7 +4,7 @@ void unused_entry_point() {
} }
void f() { void f() {
float a = (1.0f).xx.y; float a = 1.0f;
float b = (1.0f).xxx.z; float b = 1.0f;
float c = (1.0f).xxxx.w; float c = 1.0f;
} }

View File

@ -2,8 +2,8 @@
using namespace metal; using namespace metal;
void f() { void f() {
float a = float2(1.0f)[1]; float a = 1.0f;
float b = float3(1.0f)[2]; float b = 1.0f;
float c = float4(1.0f)[3]; float c = 1.0f;
} }

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 23 ; Bound: 14
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpMemoryModel Logical GLSL450 OpMemoryModel Logical GLSL450
@ -15,29 +15,20 @@
%void = OpTypeVoid %void = OpTypeVoid
%1 = OpTypeFunction %void %1 = OpTypeFunction %void
%float = OpTypeFloat 32 %float = OpTypeFloat 32
%v2float = OpTypeVector %float 2
%float_1 = OpConstant %float 1 %float_1 = OpConstant %float 1
%10 = OpConstantComposite %v2float %float_1 %float_1
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%14 = OpConstantNull %float %11 = 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
%unused_entry_point = OpFunction %void None %1 %unused_entry_point = OpFunction %void None %1
%4 = OpLabel %4 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %1 %f = OpFunction %void None %1
%6 = OpLabel %6 = OpLabel
%a = OpVariable %_ptr_Function_float Function %14 %a = OpVariable %_ptr_Function_float Function %11
%b = OpVariable %_ptr_Function_float Function %14 %b = OpVariable %_ptr_Function_float Function %11
%c = OpVariable %_ptr_Function_float Function %14 %c = OpVariable %_ptr_Function_float Function %11
%11 = OpCompositeExtract %float %10 1 OpStore %a %float_1
OpStore %a %11 OpStore %b %float_1
%17 = OpCompositeExtract %float %16 2 OpStore %c %float_1
OpStore %b %17
%21 = OpCompositeExtract %float %20 3
OpStore %c %21
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd