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());
}
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);
}
@ -2043,7 +2044,8 @@ sem::Expression* Resolver::MemberAccessor(const ast::MemberAccessorExpression* e
// the swizzle.
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);
}

View File

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

View File

@ -19,6 +19,7 @@
#include "src/tint/sem/abstract_float.h"
#include "src/tint/sem/abstract_int.h"
#include "src/tint/sem/constant.h"
#include "src/tint/sem/member_accessor_expression.h"
#include "src/tint/sem/type_constructor.h"
#include "src/tint/utils/compiler_macros.h"
#include "src/tint/utils/transform.h"
@ -537,6 +538,22 @@ const sem::Constant* Resolver::EvaluateIndexValue(const sem::Expression* obj_exp
return obj_val->Index(static_cast<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*) {
// TODO(crbug.com/tint/1581): Implement @const intrinsics
return nullptr;

View File

@ -20,6 +20,7 @@
#include "src/tint/resolver/resolver_test_helper.h"
#include "src/tint/sem/expression.h"
#include "src/tint/sem/index_accessor_expression.h"
#include "src/tint/sem/member_accessor_expression.h"
#include "src/tint/sem/test_helper.h"
using namespace tint::number_suffixes; // NOLINT
@ -1869,6 +1870,63 @@ TEST_F(ResolverConstantsTest, Vec3_Index_OOB_Low) {
EXPECT_EQ(sem->ConstantValue()->As<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) {
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);

View File

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

View File

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

View File

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

View File

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

View File

@ -47,7 +47,7 @@ class Variable : public Castable<Variable, Node> {
/// @param type the variable type
/// @param storage_class the variable storage class
/// @param access the variable access control type
/// @param constant_value the constant value for the variable. May be invalid
/// @param constant_value the constant value for the variable. May be null
Variable(const ast::Variable* declaration,
const sem::Type* type,
ast::StorageClass storage_class,
@ -105,7 +105,7 @@ class LocalVariable final : public Castable<LocalVariable, Variable> {
/// @param storage_class the variable storage class
/// @param access the variable access control type
/// @param statement the statement that declared this local variable
/// @param constant_value the constant value for the variable. May be invalid
/// @param constant_value the constant value for the variable. May be null
LocalVariable(const ast::Variable* declaration,
const sem::Type* type,
ast::StorageClass storage_class,
@ -139,7 +139,7 @@ class GlobalVariable final : public Castable<GlobalVariable, Variable> {
/// @param type the variable type
/// @param storage_class the variable storage class
/// @param access the variable access control type
/// @param constant_value the constant value for the variable. May be invalid
/// @param constant_value the constant value for the variable. May be null
/// @param binding_point the optional resource binding point of the variable
GlobalVariable(const ast::Variable* declaration,
const sem::Type* type,

View File

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

View File

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

View File

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

View File

@ -1,7 +1,7 @@
; SPIR-V
; Version: 1.3
; Generator: Google Tint Compiler; 0
; Bound: 28
; Bound: 10
; Schema: 0
OpCapability Shader
OpMemoryModel Logical GLSL450
@ -12,31 +12,13 @@
%void = OpTypeVoid
%1 = OpTypeFunction %void
%float = OpTypeFloat 32
%v3float = OpTypeVector %float 3
%mat3v3float = OpTypeMatrix %v3float 3
%float_1 = OpConstant %float 1
%float_2 = OpConstant %float 2
%float_3 = OpConstant %float 3
%11 = OpConstantComposite %v3float %float_1 %float_2 %float_3
%float_4 = OpConstant %float 4
%float_5 = OpConstant %float 5
%float_6 = OpConstant %float 6
%15 = OpConstantComposite %v3float %float_4 %float_5 %float_6
%float_7 = OpConstant %float 7
%float_8 = OpConstant %float 8
%float_9 = OpConstant %float 9
%19 = OpConstantComposite %v3float %float_7 %float_8 %float_9
%20 = OpConstantComposite %mat3v3float %11 %15 %19
%uint = OpTypeInt 32 0
%uint_1 = OpConstant %uint 1
%main_1 = OpFunction %void None %1
%4 = OpLabel
%23 = OpCompositeExtract %v3float %20 1
%24 = OpCompositeExtract %float %23 1
OpReturn
OpFunctionEnd
%main = OpFunction %void None %1
%26 = OpLabel
%27 = OpFunctionCall %void %main_1
%8 = OpLabel
%9 = OpFunctionCall %void %main_1
OpReturn
OpFunctionEnd

View File

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

View File

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

View File

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

View File

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

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;
temp = 0;
temp = x_932;
vec3 x_523 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z);
vec3 x_523 = vec3(3.0f, 2.0f, 3.0f);
int x_933 = i;
i = 0;
i = x_933;
@ -46,7 +46,7 @@ void swap_i1_i1_(inout int i, inout int j) {
int x_938 = j;
j = 0;
j = x_938;
vec3 x_525 = vec3(x_523.z, vec3(1.0f, 2.0f, 3.0f).x, x_523.y);
vec3 x_525 = vec3(x_523.z, 1.0f, x_523.y);
int x_939 = i;
i = 0;
i = x_939;
@ -136,7 +136,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_955 = param_3;
param_3 = 0;
param_3 = x_955;
vec3 x_534 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).z);
vec3 x_534 = vec3(3.0f, 1.0f, 3.0f);
int x_956 = param_1;
param_1 = 0;
param_1 = x_956;
@ -172,7 +172,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_963 = pivot;
pivot = 0;
pivot = x_963;
x_537 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z);
x_537 = vec2(2.0f, 3.0f);
QuicksortObject x_964 = obj;
int tint_symbol_11[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
QuicksortObject tint_symbol_12 = QuicksortObject(tint_symbol_11);
@ -215,7 +215,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
obj = tint_symbol_14;
obj = x_972;
int x_63 = pivot;
vec2 x_540 = vec2(vec3(1.0f, 2.0f, 3.0f).y, x_534.z);
vec2 x_540 = vec2(2.0f, x_534.z);
int x_973 = i_1;
i_1 = 0;
i_1 = x_973;
@ -246,7 +246,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_980 = l;
l = 0;
l = x_980;
vec3 x_544 = vec3(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y, x_540.x);
vec3 x_544 = vec3(3.0f, 2.0f, x_540.x);
int x_70 = i_1;
vec2 x_545 = vec2(x_537.y, x_538.x);
int x_981 = param;
@ -346,7 +346,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
int x_1003 = l;
l = 0;
l = x_1003;
vec2 x_554 = vec2(x_536.z, vec3(1.0f, 2.0f, 3.0f).y);
vec2 x_554 = vec2(x_536.z, 2.0f);
int x_1004 = param_1;
param_1 = 0;
param_1 = x_1004;
@ -378,7 +378,7 @@ void quicksort_() {
int tint_symbol_19[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
stack = tint_symbol_19;
stack = x_1008;
vec2 x_556 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).y);
vec2 x_556 = vec2(2.0f);
int x_1009 = param_5;
param_5 = 0;
param_5 = x_1009;
@ -387,7 +387,7 @@ void quicksort_() {
p = 0;
p = x_1010;
int x_93 = top;
vec2 x_557 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).x);
vec2 x_557 = vec2(1.0f);
int x_1011 = p;
p = 0;
p = x_1011;
@ -431,7 +431,7 @@ void quicksort_() {
int x_1020 = param_4;
param_4 = 0;
param_4 = x_1020;
vec3 x_562 = vec3(vec3(1.0f, 2.0f, 3.0f).z, x_558.y, vec3(1.0f, 2.0f, 3.0f).y);
vec3 x_562 = vec3(3.0f, x_558.y, 2.0f);
int x_1021 = stack[x_96_save];
stack[x_96_save] = 0;
stack[x_96_save] = x_1021;
@ -534,7 +534,7 @@ void quicksort_() {
int x_1043 = stack[x_100_save];
stack[x_100_save] = 0;
stack[x_100_save] = x_1043;
vec2 x_573 = vec2(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).z);
vec2 x_573 = vec2(2.0f, 3.0f);
top = (x_112 - 1);
int x_1044 = param_5;
param_5 = 0;
@ -566,7 +566,7 @@ void quicksort_() {
stack[x_110_save] = x_1050;
vec2 x_577 = vec2(x_569.y, x_569.z);
int x_120 = h_1;
vec2 x_578 = vec2(x_558.x, vec3(1.0f, 2.0f, 3.0f).y);
vec2 x_578 = vec2(x_558.x, 2.0f);
param_5 = x_120;
int x_1051 = stack[x_100_save];
stack[x_100_save] = 0;
@ -676,7 +676,7 @@ void quicksort_() {
int x_1076 = stack[x_96_save];
stack[x_96_save] = 0;
stack[x_96_save] = x_1076;
vec2 x_592 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).y);
vec2 x_592 = vec2(1.0f, 2.0f);
QuicksortObject x_1077 = obj;
int tint_symbol_31[10] = int[10](0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
QuicksortObject tint_symbol_32 = QuicksortObject(tint_symbol_31);
@ -821,7 +821,7 @@ void main_1() {
QuicksortObject tint_symbol_40 = QuicksortObject(tint_symbol_39);
obj = tint_symbol_40;
obj = x_722;
vec2 x_431 = vec2(vec3(1.0f, 2.0f, 3.0f).x, vec3(1.0f, 2.0f, 3.0f).x);
vec2 x_431 = vec2(1.0f);
int x_158 = i_2;
vec2 x_723 = uv;
uv = vec2(0.0f);
@ -841,7 +841,7 @@ void main_1() {
QuicksortObject tint_symbol_44 = QuicksortObject(tint_symbol_43);
obj = tint_symbol_44;
obj = x_756;
vec2 x_446 = vec2(vec2(0.0f).x, vec2(0.0f).x);
vec2 x_446 = vec2(0.0f);
int x_757 = i_2;
i_2 = 0;
i_2 = x_757;
@ -855,7 +855,7 @@ void main_1() {
vec2 x_759 = uv;
uv = vec2(0.0f);
uv = x_759;
vec2 x_447 = vec2(vec2(0.0f).y, vec2(0.0f).y);
vec2 x_447 = vec2(0.0f);
vec2 x_760 = uv;
uv = vec2(0.0f);
uv = x_760;
@ -875,7 +875,7 @@ void main_1() {
QuicksortObject tint_symbol_50 = QuicksortObject(tint_symbol_49);
obj = tint_symbol_50;
obj = x_763;
vec3 x_449 = vec3(x_184.y, vec3(1.0f, 2.0f, 3.0f).z, x_184.w);
vec3 x_449 = vec3(x_184.y, 3.0f, x_184.w);
vec3 x_764 = color;
color = vec3(0.0f);
color = x_764;
@ -919,7 +919,7 @@ void main_1() {
float x_773 = color.x;
color.x = 0.0f;
color.x = x_773;
vec2 x_452 = vec2(vec3(1.0f, 2.0f, 3.0f).z, vec3(1.0f, 2.0f, 3.0f).y);
vec2 x_452 = vec2(3.0f, 2.0f);
int x_774 = i_2;
i_2 = 0;
i_2 = x_774;
@ -954,7 +954,7 @@ void main_1() {
int x_781 = obj.numbers[0u];
obj.numbers[0u] = 0;
obj.numbers[0u] = x_781;
vec3 x_456 = vec3(vec2(0.0f).y, x_448.y, x_448.y);
vec3 x_456 = vec3(0.0f, x_448.y, x_448.y);
float x_782 = uv.x;
uv.x = 0.0f;
uv.x = x_782;
@ -973,7 +973,7 @@ void main_1() {
QuicksortObject tint_symbol_64 = QuicksortObject(tint_symbol_63);
obj = tint_symbol_64;
obj = x_785;
vec2 x_458 = vec2(vec3(1.0f, 2.0f, 3.0f).z, vec2(0.0f).y);
vec2 x_458 = vec2(3.0f, 0.0f);
int x_786 = i_2;
i_2 = 0;
i_2 = x_786;
@ -1013,7 +1013,7 @@ void main_1() {
float x_796 = uv.x;
uv.x = 0.0f;
uv.x = x_796;
vec2 x_461 = vec2(vec2(0.0f).y, vec2(0.0f).y);
vec2 x_461 = vec2(0.0f);
float x_797 = uv.x;
uv.x = 0.0f;
uv.x = x_797;
@ -1057,7 +1057,7 @@ void main_1() {
int x_808 = i_2;
i_2 = 0;
i_2 = x_808;
vec2 x_466 = vec2(x_455.y, vec2(0.0f).y);
vec2 x_466 = vec2(x_455.y, 0.0f);
int x_809 = i_2;
i_2 = 0;
i_2 = x_809;
@ -1111,7 +1111,7 @@ void main_1() {
int x_822 = obj.numbers[0u];
obj.numbers[0u] = 0;
obj.numbers[0u] = x_822;
vec2 x_470 = vec2(vec2(0.0f).x, vec2(0.0f).y);
vec2 x_470 = vec2(0.0f);
float x_823 = color.z;
color.z = 0.0f;
color.z = x_823;
@ -1153,7 +1153,7 @@ void main_1() {
color.x = x_832;
vec2 x_476 = vec2(x_451.z, x_460.y);
color.y = (x_257 + float(x_254));
vec3 x_477 = vec3(vec2(0.0f).x, x_472.x, vec2(0.0f).y);
vec3 x_477 = vec3(0.0f, x_472.x, 0.0f);
float x_833 = uv.x;
uv.x = 0.0f;
uv.x = x_833;
@ -1168,14 +1168,14 @@ void main_1() {
int x_836 = i_2;
i_2 = 0;
i_2 = x_836;
vec3 x_479 = vec3(vec2(0.0f).y, x_454.y, vec2(0.0f).x);
vec3 x_479 = vec3(0.0f, x_454.y, 0.0f);
int x_837 = obj.numbers[0u];
obj.numbers[0u] = 0;
obj.numbers[0u] = x_837;
float x_838 = color.y;
color.y = 0.0f;
color.y = x_838;
vec3 x_480 = vec3(x_446.x, x_446.x, vec2(0.0f).y);
vec3 x_480 = vec3(x_446.x, x_446.x, 0.0f);
float x_839 = uv.x;
uv.x = 0.0f;
uv.x = x_839;
@ -1281,7 +1281,7 @@ void main_1() {
float x_865 = color.x;
color.x = 0.0f;
color.x = x_865;
vec2 x_491 = vec2(vec3(1.0f, 2.0f, 3.0f).y, x_454.x);
vec2 x_491 = vec2(2.0f, x_454.x);
float x_866 = color.y;
color.y = 0.0f;
color.y = x_866;
@ -1382,7 +1382,7 @@ void main_1() {
float x_891 = color.y;
color.y = 0.0f;
color.y = x_891;
vec2 x_504 = vec2(x_453.y, vec2(0.0f).x);
vec2 x_504 = vec2(x_453.y, 0.0f);
float x_892 = color.x;
color.x = 0.0f;
color.x = x_892;
@ -1431,7 +1431,7 @@ void main_1() {
float x_904 = color.z;
color.z = 0.0f;
color.z = x_904;
vec3 x_510 = vec3(vec3(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z);
vec3 x_510 = vec3(2.0f, x_485.y, x_485.z);
float x_905 = color.z;
color.z = 0.0f;
color.z = x_905;
@ -1485,7 +1485,7 @@ void main_1() {
float x_918 = uv.x;
uv.x = 0.0f;
uv.x = x_918;
vec3 x_517 = vec3(vec2(0.0f).x, vec2(0.0f).x, vec2(0.0f).y);
vec3 x_517 = vec3(0.0f);
color.x = (float(x_317) + x_320);
float x_919 = color.x;
color.x = 0.0f;
@ -1528,7 +1528,7 @@ void main_1() {
float x_928 = uv.y;
uv.y = 0.0f;
uv.y = x_928;
vec3 x_521 = vec3(vec3(1.0f, 2.0f, 3.0f).y, vec3(1.0f, 2.0f, 3.0f).y, x_520.y);
vec3 x_521 = vec3(2.0f, 2.0f, x_520.y);
float x_929 = uv.x;
uv.x = 0.0f;
uv.x = x_929;

View File

@ -14,7 +14,7 @@ void swap_i1_i1_(inout int i, inout int j) {
const int x_932 = temp;
temp = 0;
temp = x_932;
const float3 x_523 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z);
const float3 x_523 = float3(3.0f, 2.0f, 3.0f);
const int x_933 = i;
i = 0;
i = x_933;
@ -46,7 +46,7 @@ void swap_i1_i1_(inout int i, inout int j) {
const int x_938 = j;
j = 0;
j = x_938;
const float3 x_525 = float3(x_523.z, float3(1.0f, 2.0f, 3.0f).x, x_523.y);
const float3 x_525 = float3(x_523.z, 1.0f, x_523.y);
const int x_939 = i;
i = 0;
i = x_939;
@ -192,7 +192,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_955 = param_3;
param_3 = 0;
param_3 = x_955;
const float3 x_534 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).z);
const float3 x_534 = float3(3.0f, 1.0f, 3.0f);
const int x_956 = param_1;
param_1 = 0;
param_1 = x_956;
@ -228,7 +228,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_963 = pivot;
pivot = 0;
pivot = x_963;
x_537 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z);
x_537 = float2(2.0f, 3.0f);
const QuicksortObject x_964 = obj;
const int tint_symbol_60[10] = (int[10])0;
const QuicksortObject tint_symbol_61 = {tint_symbol_60};
@ -279,7 +279,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
obj = tint_symbol_63;
obj = x_972;
const int x_63 = pivot;
const float2 x_540 = float2(float3(1.0f, 2.0f, 3.0f).y, x_534.z);
const float2 x_540 = float2(2.0f, x_534.z);
const int x_973 = i_1;
i_1 = 0;
i_1 = x_973;
@ -310,7 +310,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_980 = l;
l = 0;
l = x_980;
const float3 x_544 = float3(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y, x_540.x);
const float3 x_544 = float3(3.0f, 2.0f, x_540.x);
const int x_70 = i_1;
const float2 x_545 = float2(x_537.y, x_538.x);
const int x_981 = param;
@ -434,7 +434,7 @@ int performPartition_i1_i1_(inout int l, inout int h) {
const int x_1003 = l;
l = 0;
l = x_1003;
const float2 x_554 = float2(x_536.z, float3(1.0f, 2.0f, 3.0f).y);
const float2 x_554 = float2(x_536.z, 2.0f);
const int x_1004 = param_1;
param_1 = 0;
param_1 = x_1004;
@ -466,7 +466,7 @@ void quicksort_() {
const int tint_symbol_68[10] = (int[10])0;
stack = tint_symbol_68;
stack = x_1008;
const float2 x_556 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y);
const float2 x_556 = (2.0f).xx;
const int x_1009 = param_5;
param_5 = 0;
param_5 = x_1009;
@ -475,7 +475,7 @@ void quicksort_() {
p = 0;
p = x_1010;
const int x_93 = top;
const float2 x_557 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).x);
const float2 x_557 = (1.0f).xx;
const int x_1011 = p;
p = 0;
p = x_1011;
@ -519,7 +519,7 @@ void quicksort_() {
const int x_1020 = param_4;
param_4 = 0;
param_4 = x_1020;
const float3 x_562 = float3(float3(1.0f, 2.0f, 3.0f).z, x_558.y, float3(1.0f, 2.0f, 3.0f).y);
const float3 x_562 = float3(3.0f, x_558.y, 2.0f);
const int x_1021 = stack[x_96_save];
stack[x_96_save] = 0;
stack[x_96_save] = x_1021;
@ -622,7 +622,7 @@ void quicksort_() {
const int x_1043 = stack[x_100_save];
stack[x_100_save] = 0;
stack[x_100_save] = x_1043;
const float2 x_573 = float2(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).z);
const float2 x_573 = float2(2.0f, 3.0f);
top = (x_112 - 1);
const int x_1044 = param_5;
param_5 = 0;
@ -654,7 +654,7 @@ void quicksort_() {
stack[x_110_save] = x_1050;
const float2 x_577 = float2(x_569.y, x_569.z);
const int x_120 = h_1;
const float2 x_578 = float2(x_558.x, float3(1.0f, 2.0f, 3.0f).y);
const float2 x_578 = float2(x_558.x, 2.0f);
param_5 = x_120;
const int x_1051 = stack[x_100_save];
stack[x_100_save] = 0;
@ -764,7 +764,7 @@ void quicksort_() {
const int x_1076 = stack[x_96_save];
stack[x_96_save] = 0;
stack[x_96_save] = x_1076;
const float2 x_592 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).y);
const float2 x_592 = float2(1.0f, 2.0f);
const QuicksortObject x_1077 = obj;
const int tint_symbol_80[10] = (int[10])0;
const QuicksortObject tint_symbol_81 = {tint_symbol_80};
@ -909,7 +909,7 @@ void main_1() {
const QuicksortObject tint_symbol_89 = {tint_symbol_88};
obj = tint_symbol_89;
obj = x_722;
const float2 x_431 = float2(float3(1.0f, 2.0f, 3.0f).x, float3(1.0f, 2.0f, 3.0f).x);
const float2 x_431 = (1.0f).xx;
const int x_158 = i_2;
const float2 x_723 = uv;
uv = (0.0f).xx;
@ -929,7 +929,7 @@ void main_1() {
const QuicksortObject tint_symbol_93 = {tint_symbol_92};
obj = tint_symbol_93;
obj = x_756;
const float2 x_446 = float2((0.0f).xx.x, (0.0f).xx.x);
const float2 x_446 = (0.0f).xx;
const int x_757 = i_2;
i_2 = 0;
i_2 = x_757;
@ -943,7 +943,7 @@ void main_1() {
const float2 x_759 = uv;
uv = (0.0f).xx;
uv = x_759;
const float2 x_447 = float2((0.0f).xx.y, (0.0f).xx.y);
const float2 x_447 = (0.0f).xx;
const float2 x_760 = uv;
uv = (0.0f).xx;
uv = x_760;
@ -963,7 +963,7 @@ void main_1() {
const QuicksortObject tint_symbol_99 = {tint_symbol_98};
obj = tint_symbol_99;
obj = x_763;
const float3 x_449 = float3(x_184.y, float3(1.0f, 2.0f, 3.0f).z, x_184.w);
const float3 x_449 = float3(x_184.y, 3.0f, x_184.w);
const float3 x_764 = color;
color = (0.0f).xxx;
color = x_764;
@ -1007,7 +1007,7 @@ void main_1() {
const float x_773 = color.x;
color.x = 0.0f;
color.x = x_773;
const float2 x_452 = float2(float3(1.0f, 2.0f, 3.0f).z, float3(1.0f, 2.0f, 3.0f).y);
const float2 x_452 = float2(3.0f, 2.0f);
const int x_774 = i_2;
i_2 = 0;
i_2 = x_774;
@ -1042,7 +1042,7 @@ void main_1() {
const int x_781 = obj.numbers[0u];
obj.numbers[0u] = 0;
obj.numbers[0u] = x_781;
const float3 x_456 = float3((0.0f).xx.y, x_448.y, x_448.y);
const float3 x_456 = float3(0.0f, x_448.y, x_448.y);
const float x_782 = uv.x;
uv.x = 0.0f;
uv.x = x_782;
@ -1061,7 +1061,7 @@ void main_1() {
const QuicksortObject tint_symbol_113 = {tint_symbol_112};
obj = tint_symbol_113;
obj = x_785;
const float2 x_458 = float2(float3(1.0f, 2.0f, 3.0f).z, (0.0f).xx.y);
const float2 x_458 = float2(3.0f, 0.0f);
const int x_786 = i_2;
i_2 = 0;
i_2 = x_786;
@ -1101,7 +1101,7 @@ void main_1() {
const float x_796 = uv.x;
uv.x = 0.0f;
uv.x = x_796;
const float2 x_461 = float2((0.0f).xx.y, (0.0f).xx.y);
const float2 x_461 = (0.0f).xx;
const float x_797 = uv.x;
uv.x = 0.0f;
uv.x = x_797;
@ -1145,7 +1145,7 @@ void main_1() {
const int x_808 = i_2;
i_2 = 0;
i_2 = x_808;
const float2 x_466 = float2(x_455.y, (0.0f).xx.y);
const float2 x_466 = float2(x_455.y, 0.0f);
const int x_809 = i_2;
i_2 = 0;
i_2 = x_809;
@ -1199,7 +1199,7 @@ void main_1() {
const int x_822 = obj.numbers[0u];
obj.numbers[0u] = 0;
obj.numbers[0u] = x_822;
const float2 x_470 = float2((0.0f).xx.x, (0.0f).xx.y);
const float2 x_470 = (0.0f).xx;
const float x_823 = color.z;
color.z = 0.0f;
color.z = x_823;
@ -1241,7 +1241,7 @@ void main_1() {
color.x = x_832;
const float2 x_476 = float2(x_451.z, x_460.y);
color.y = (x_257 + float(x_254));
const float3 x_477 = float3((0.0f).xx.x, x_472.x, (0.0f).xx.y);
const float3 x_477 = float3(0.0f, x_472.x, 0.0f);
const float x_833 = uv.x;
uv.x = 0.0f;
uv.x = x_833;
@ -1256,14 +1256,14 @@ void main_1() {
const int x_836 = i_2;
i_2 = 0;
i_2 = x_836;
const float3 x_479 = float3((0.0f).xx.y, x_454.y, (0.0f).xx.x);
const float3 x_479 = float3(0.0f, x_454.y, 0.0f);
const int x_837 = obj.numbers[0u];
obj.numbers[0u] = 0;
obj.numbers[0u] = x_837;
const float x_838 = color.y;
color.y = 0.0f;
color.y = x_838;
const float3 x_480 = float3(x_446.x, x_446.x, (0.0f).xx.y);
const float3 x_480 = float3(x_446.x, x_446.x, 0.0f);
const float x_839 = uv.x;
uv.x = 0.0f;
uv.x = x_839;
@ -1369,7 +1369,7 @@ void main_1() {
const float x_865 = color.x;
color.x = 0.0f;
color.x = x_865;
const float2 x_491 = float2(float3(1.0f, 2.0f, 3.0f).y, x_454.x);
const float2 x_491 = float2(2.0f, x_454.x);
const float x_866 = color.y;
color.y = 0.0f;
color.y = x_866;
@ -1470,7 +1470,7 @@ void main_1() {
const float x_891 = color.y;
color.y = 0.0f;
color.y = x_891;
const float2 x_504 = float2(x_453.y, (0.0f).xx.x);
const float2 x_504 = float2(x_453.y, 0.0f);
const float x_892 = color.x;
color.x = 0.0f;
color.x = x_892;
@ -1519,7 +1519,7 @@ void main_1() {
const float x_904 = color.z;
color.z = 0.0f;
color.z = x_904;
const float3 x_510 = float3(float3(1.0f, 2.0f, 3.0f).y, x_485.y, x_485.z);
const float3 x_510 = float3(2.0f, x_485.y, x_485.z);
const float x_905 = color.z;
color.z = 0.0f;
color.z = x_905;
@ -1573,7 +1573,7 @@ void main_1() {
const float x_918 = uv.x;
uv.x = 0.0f;
uv.x = x_918;
const float3 x_517 = float3((0.0f).xx.x, (0.0f).xx.x, (0.0f).xx.y);
const float3 x_517 = (0.0f).xxx;
color.x = (float(x_317) + x_320);
const float x_919 = color.x;
color.x = 0.0f;
@ -1616,7 +1616,7 @@ void main_1() {
const float x_928 = uv.y;
uv.y = 0.0f;
uv.y = x_928;
const float3 x_521 = float3(float3(1.0f, 2.0f, 3.0f).y, float3(1.0f, 2.0f, 3.0f).y, x_520.y);
const float3 x_521 = float3(2.0f, 2.0f, x_520.y);
const float x_929 = uv.x;
uv.x = 0.0f;
uv.x = x_929;

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;
temp = 0;
temp = x_932;
float3 const x_523 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]);
float3 const x_523 = float3(3.0f, 2.0f, 3.0f);
int const x_933 = *(i);
*(i) = 0;
*(i) = x_933;
@ -51,7 +51,7 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec
int const x_938 = *(j);
*(j) = 0;
*(j) = x_938;
float3 const x_525 = float3(x_523[2], float3(1.0f, 2.0f, 3.0f)[0], x_523[1]);
float3 const x_525 = float3(x_523[2], 1.0f, x_523[1]);
int const x_939 = *(i);
*(i) = 0;
*(i) = x_939;
@ -141,7 +141,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
int const x_955 = param_3;
param_3 = 0;
param_3 = x_955;
float3 const x_534 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[2]);
float3 const x_534 = float3(3.0f, 1.0f, 3.0f);
int const x_956 = param_1;
param_1 = 0;
param_1 = x_956;
@ -177,7 +177,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
int const x_963 = pivot;
pivot = 0;
pivot = x_963;
x_537 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]);
x_537 = float2(2.0f, 3.0f);
QuicksortObject const x_964 = *(tint_symbol_82);
tint_array<int, 10> const tint_symbol_10 = tint_array<int, 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) = x_972;
int const x_63 = pivot;
float2 const x_540 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_534[2]);
float2 const x_540 = float2(2.0f, x_534[2]);
int const x_973 = i_1;
i_1 = 0;
i_1 = x_973;
@ -251,7 +251,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
int const x_980 = *(l);
*(l) = 0;
*(l) = x_980;
float3 const x_544 = float3(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1], x_540[0]);
float3 const x_544 = float3(3.0f, 2.0f, x_540[0]);
int const x_70 = i_1;
float2 const x_545 = float2(x_537[1], x_538[0]);
int const x_981 = param;
@ -352,7 +352,7 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
int const x_1003 = *(l);
*(l) = 0;
*(l) = x_1003;
float2 const x_554 = float2(x_536[2], float3(1.0f, 2.0f, 3.0f)[1]);
float2 const x_554 = float2(x_536[2], 2.0f);
int const x_1004 = param_1;
param_1 = 0;
param_1 = x_1004;
@ -384,7 +384,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
tint_array<int, 10> const tint_symbol_18 = tint_array<int, 10>{};
stack = tint_symbol_18;
stack = x_1008;
float2 const x_556 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1]);
float2 const x_556 = float2(2.0f);
int const x_1009 = param_5;
param_5 = 0;
param_5 = x_1009;
@ -393,7 +393,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
p = 0;
p = x_1010;
int const x_93 = top;
float2 const x_557 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]);
float2 const x_557 = float2(1.0f);
int const x_1011 = p;
p = 0;
p = x_1011;
@ -437,7 +437,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
int const x_1020 = param_4;
param_4 = 0;
param_4 = x_1020;
float3 const x_562 = float3(float3(1.0f, 2.0f, 3.0f)[2], x_558[1], float3(1.0f, 2.0f, 3.0f)[1]);
float3 const x_562 = float3(3.0f, x_558[1], 2.0f);
int const x_1021 = stack[x_96_save];
stack[x_96_save] = 0;
stack[x_96_save] = x_1021;
@ -540,7 +540,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
int const x_1043 = stack[x_100_save];
stack[x_100_save] = 0;
stack[x_100_save] = x_1043;
float2 const x_573 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]);
float2 const x_573 = float2(2.0f, 3.0f);
top = as_type<int>((as_type<uint>(x_112) - as_type<uint>(1)));
int const x_1044 = param_5;
param_5 = 0;
@ -573,7 +573,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
stack[x_110_save] = x_1050;
float2 const x_577 = float2(x_569[1], x_569[2]);
int const x_120 = h_1;
float2 const x_578 = float2(x_558[0], float3(1.0f, 2.0f, 3.0f)[1]);
float2 const x_578 = float2(x_558[0], 2.0f);
param_5 = x_120;
int const x_1051 = stack[x_100_save];
stack[x_100_save] = 0;
@ -683,7 +683,7 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
int const x_1076 = stack[x_96_save];
stack[x_96_save] = 0;
stack[x_96_save] = x_1076;
float2 const x_592 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[1]);
float2 const x_592 = float2(1.0f, 2.0f);
QuicksortObject const x_1077 = *(tint_symbol_83);
tint_array<int, 10> const tint_symbol_30 = tint_array<int, 10>{};
QuicksortObject const tint_symbol_31 = {.numbers=tint_symbol_30};
@ -828,7 +828,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
QuicksortObject const tint_symbol_39 = {.numbers=tint_symbol_38};
*(tint_symbol_84) = tint_symbol_39;
*(tint_symbol_84) = x_722;
float2 const x_431 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]);
float2 const x_431 = float2(1.0f);
int const x_158 = i_2;
float2 const x_723 = uv;
uv = float2(0.0f);
@ -848,7 +848,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
QuicksortObject const tint_symbol_43 = {.numbers=tint_symbol_42};
*(tint_symbol_84) = tint_symbol_43;
*(tint_symbol_84) = x_756;
float2 const x_446 = float2(float2(0.0f)[0], float2(0.0f)[0]);
float2 const x_446 = float2(0.0f);
int const x_757 = i_2;
i_2 = 0;
i_2 = x_757;
@ -862,7 +862,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float2 const x_759 = uv;
uv = float2(0.0f);
uv = x_759;
float2 const x_447 = float2(float2(0.0f)[1], float2(0.0f)[1]);
float2 const x_447 = float2(0.0f);
float2 const x_760 = uv;
uv = float2(0.0f);
uv = x_760;
@ -882,7 +882,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
QuicksortObject const tint_symbol_49 = {.numbers=tint_symbol_48};
*(tint_symbol_84) = tint_symbol_49;
*(tint_symbol_84) = x_763;
float3 const x_449 = float3(x_184[1], float3(1.0f, 2.0f, 3.0f)[2], x_184[3]);
float3 const x_449 = float3(x_184[1], 3.0f, x_184[3]);
float3 const x_764 = color;
color = float3(0.0f);
color = x_764;
@ -926,7 +926,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float const x_773 = color[0];
color[0] = 0.0f;
color[0] = x_773;
float2 const x_452 = float2(float3(1.0f, 2.0f, 3.0f)[2], float3(1.0f, 2.0f, 3.0f)[1]);
float2 const x_452 = float2(3.0f, 2.0f);
int const x_774 = i_2;
i_2 = 0;
i_2 = x_774;
@ -961,7 +961,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
int const x_781 = (*(tint_symbol_84)).numbers[0u];
(*(tint_symbol_84)).numbers[0u] = 0;
(*(tint_symbol_84)).numbers[0u] = x_781;
float3 const x_456 = float3(float2(0.0f)[1], x_448[1], x_448[1]);
float3 const x_456 = float3(0.0f, x_448[1], x_448[1]);
float const x_782 = uv[0];
uv[0] = 0.0f;
uv[0] = x_782;
@ -980,7 +980,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
QuicksortObject const tint_symbol_63 = {.numbers=tint_symbol_62};
*(tint_symbol_84) = tint_symbol_63;
*(tint_symbol_84) = x_785;
float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2(0.0f)[1]);
float2 const x_458 = float2(3.0f, 0.0f);
int const x_786 = i_2;
i_2 = 0;
i_2 = x_786;
@ -1020,7 +1020,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float const x_796 = uv[0];
uv[0] = 0.0f;
uv[0] = x_796;
float2 const x_461 = float2(float2(0.0f)[1], float2(0.0f)[1]);
float2 const x_461 = float2(0.0f);
float const x_797 = uv[0];
uv[0] = 0.0f;
uv[0] = x_797;
@ -1064,7 +1064,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
int const x_808 = i_2;
i_2 = 0;
i_2 = x_808;
float2 const x_466 = float2(x_455[1], float2(0.0f)[1]);
float2 const x_466 = float2(x_455[1], 0.0f);
int const x_809 = i_2;
i_2 = 0;
i_2 = x_809;
@ -1118,7 +1118,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
int const x_822 = (*(tint_symbol_84)).numbers[0u];
(*(tint_symbol_84)).numbers[0u] = 0;
(*(tint_symbol_84)).numbers[0u] = x_822;
float2 const x_470 = float2(float2(0.0f)[0], float2(0.0f)[1]);
float2 const x_470 = float2(0.0f);
float const x_823 = color[2];
color[2] = 0.0f;
color[2] = x_823;
@ -1160,7 +1160,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
color[0] = x_832;
float2 const x_476 = float2(x_451[2], x_460[1]);
color[1] = (x_257 + float(x_254));
float3 const x_477 = float3(float2(0.0f)[0], x_472[0], float2(0.0f)[1]);
float3 const x_477 = float3(0.0f, x_472[0], 0.0f);
float const x_833 = uv[0];
uv[0] = 0.0f;
uv[0] = x_833;
@ -1175,14 +1175,14 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
int const x_836 = i_2;
i_2 = 0;
i_2 = x_836;
float3 const x_479 = float3(float2(0.0f)[1], x_454[1], float2(0.0f)[0]);
float3 const x_479 = float3(0.0f, x_454[1], 0.0f);
int const x_837 = (*(tint_symbol_84)).numbers[0u];
(*(tint_symbol_84)).numbers[0u] = 0;
(*(tint_symbol_84)).numbers[0u] = x_837;
float const x_838 = color[1];
color[1] = 0.0f;
color[1] = x_838;
float3 const x_480 = float3(x_446[0], x_446[0], float2(0.0f)[1]);
float3 const x_480 = float3(x_446[0], x_446[0], 0.0f);
float const x_839 = uv[0];
uv[0] = 0.0f;
uv[0] = x_839;
@ -1288,7 +1288,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float const x_865 = color[0];
color[0] = 0.0f;
color[0] = x_865;
float2 const x_491 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_454[0]);
float2 const x_491 = float2(2.0f, x_454[0]);
float const x_866 = color[1];
color[1] = 0.0f;
color[1] = x_866;
@ -1389,7 +1389,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float const x_891 = color[1];
color[1] = 0.0f;
color[1] = x_891;
float2 const x_504 = float2(x_453[1], float2(0.0f)[0]);
float2 const x_504 = float2(x_453[1], 0.0f);
float const x_892 = color[0];
color[0] = 0.0f;
color[0] = x_892;
@ -1438,7 +1438,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float const x_904 = color[2];
color[2] = 0.0f;
color[2] = x_904;
float3 const x_510 = float3(float3(1.0f, 2.0f, 3.0f)[1], x_485[1], x_485[2]);
float3 const x_510 = float3(2.0f, x_485[1], x_485[2]);
float const x_905 = color[2];
color[2] = 0.0f;
color[2] = x_905;
@ -1492,7 +1492,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float const x_918 = uv[0];
uv[0] = 0.0f;
uv[0] = x_918;
float3 const x_517 = float3(float2(0.0f)[0], float2(0.0f)[0], float2(0.0f)[1]);
float3 const x_517 = float3(0.0f);
color[0] = (float(x_317) + x_320);
float const x_919 = color[0];
color[0] = 0.0f;
@ -1535,7 +1535,7 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float const x_928 = uv[1];
uv[1] = 0.0f;
uv[1] = x_928;
float3 const x_521 = float3(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1], x_520[1]);
float3 const x_521 = float3(2.0f, 2.0f, x_520[1]);
float const x_929 = uv[0];
uv[0] = 0.0f;
uv[0] = x_929;

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_47 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.25f), 0.0f);
vec4 x_54 = texture(frameMapTexture_frameMapSampler, vec2(fX, 0.5f), 0.0f);
return mat4(vec4(x_40.x, x_40.y, x_40.z, x_40.w), vec4(x_47.x, x_47.y, x_47.z, x_47.w), vec4(x_54.x, x_54.y, x_54.z, x_54.w), vec4(vec4(0.0f).x, vec4(0.0f).y, vec4(0.0f).z, vec4(0.0f).w));
return mat4(vec4(x_40.x, x_40.y, x_40.z, x_40.w), vec4(x_47.x, x_47.y, x_47.z, x_47.w), vec4(x_54.x, x_54.y, x_54.z, x_54.w), vec4(0.0f));
}
uniform highp sampler2D tileMapsTexture1_tileMapsSampler;

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_47 = frameMapTexture.SampleBias(frameMapSampler, float2(fX, 0.25f), 0.0f);
const float4 x_54 = frameMapTexture.SampleBias(frameMapSampler, float2(fX, 0.5f), 0.0f);
return float4x4(float4(x_40.x, x_40.y, x_40.z, x_40.w), float4(x_47.x, x_47.y, x_47.z, x_47.w), float4(x_54.x, x_54.y, x_54.z, x_54.w), float4((0.0f).xxxx.x, (0.0f).xxxx.y, (0.0f).xxxx.z, (0.0f).xxxx.w));
return float4x4(float4(x_40.x, x_40.y, x_40.z, x_40.w), float4(x_47.x, x_47.y, x_47.z, x_47.w), float4(x_54.x, x_54.y, x_54.z, x_54.w), (0.0f).xxxx);
}
void main_1() {

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

View File

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

View File

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

View File

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

View File

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