msl: Handle buffer variables in transform
This removes a lot of awkward logic from the MSL writer, and means
that we now handle all module-scope variables with the same transform.
Change-Id: I782e36a4b88dafbc3f8364f7caa7f95c6ae3f5f1
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/67643
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
diff --git a/src/resolver/function_validation_test.cc b/src/resolver/function_validation_test.cc
index 7d5be4e..dc71cae 100644
--- a/src/resolver/function_validation_test.cc
+++ b/src/resolver/function_validation_test.cc
@@ -808,7 +808,7 @@
struct TestWithParams : resolver::ResolverTestWithParam<TestParams> {};
using ResolverFunctionParameterValidationTest = TestWithParams;
-TEST_P(ResolverFunctionParameterValidationTest, SotrageClass) {
+TEST_P(ResolverFunctionParameterValidationTest, StorageClass) {
auto& param = GetParam();
auto* ptr_type = ty.pointer(Source{{12, 34}}, ty.i32(), param.storage_class);
auto* arg = Param(Source{{12, 34}}, "p", ptr_type);
diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc
index e94e133..3c52f45 100644
--- a/src/resolver/resolver.cc
+++ b/src/resolver/resolver.cc
@@ -1235,7 +1235,9 @@
auto sc = ref->StorageClass();
if (!(sc == ast::StorageClass::kFunction ||
sc == ast::StorageClass::kPrivate ||
- sc == ast::StorageClass::kWorkgroup)) {
+ sc == ast::StorageClass::kWorkgroup) &&
+ IsValidationEnabled(info->declaration->decorations,
+ ast::DisabledValidation::kIgnoreStorageClass)) {
std::stringstream ss;
ss << "function parameter of pointer type cannot be in '" << sc
<< "' storage class";
@@ -1806,6 +1808,18 @@
param->source);
return false;
}
+ if (auto* ptr = param_info->type->As<sem::Pointer>()) {
+ // For MSL, we push module-scope variables into the entry point as pointer
+ // parameters, so we also need to handle their store type.
+ if (!ApplyStorageClassUsageToType(
+ ptr->StorageClass(), const_cast<sem::Type*>(ptr->StoreType()),
+ param->source)) {
+ AddNote("while instantiating parameter " +
+ builder_->Symbols().NameFor(param->symbol),
+ param->source);
+ return false;
+ }
+ }
if (auto* str = param_info->type->As<sem::Struct>()) {
switch (func->PipelineStage()) {
diff --git a/src/transform/module_scope_var_to_entry_point_param.cc b/src/transform/module_scope_var_to_entry_point_param.cc
index 0eeaa53..5ac9939 100644
--- a/src/transform/module_scope_var_to_entry_point_param.cc
+++ b/src/transform/module_scope_var_to_entry_point_param.cc
@@ -92,21 +92,18 @@
std::vector<const ast::Function*> functions_to_process;
- // Build a list of functions that transitively reference any private or
- // workgroup variables, or texture/sampler variables.
+ // Build a list of functions that transitively reference any module-scope
+ // variables.
for (auto* func_ast : ctx.src->AST().Functions()) {
auto* func_sem = ctx.src->Sem().Get(func_ast);
bool needs_processing = false;
for (auto* var : func_sem->ReferencedModuleVariables()) {
- if (var->StorageClass() == ast::StorageClass::kPrivate ||
- var->StorageClass() == ast::StorageClass::kWorkgroup ||
- var->StorageClass() == ast::StorageClass::kUniformConstant) {
+ if (var->StorageClass() != ast::StorageClass::kNone) {
needs_processing = true;
break;
}
}
-
if (needs_processing) {
functions_to_process.push_back(func_ast);
@@ -140,8 +137,12 @@
auto* func_sem = ctx.src->Sem().Get(func_ast);
bool is_entry_point = func_ast->IsEntryPoint();
- // Map module-scope variables onto their function-scope replacement.
- std::unordered_map<const sem::Variable*, Symbol> var_to_symbol;
+ // Map module-scope variables onto their replacement.
+ struct NewVar {
+ Symbol symbol;
+ bool is_pointer;
+ };
+ std::unordered_map<const sem::Variable*, NewVar> var_to_newvar;
// We aggregate all workgroup variables into a struct to avoid hitting
// MSL's limit for threadgroup memory arguments.
@@ -155,11 +156,18 @@
};
for (auto* var : func_sem->ReferencedModuleVariables()) {
- if (var->StorageClass() != ast::StorageClass::kPrivate &&
- var->StorageClass() != ast::StorageClass::kWorkgroup &&
- var->StorageClass() != ast::StorageClass::kUniformConstant) {
+ auto sc = var->StorageClass();
+ if (sc == ast::StorageClass::kNone) {
continue;
}
+ if (sc != ast::StorageClass::kPrivate &&
+ sc != ast::StorageClass::kStorage &&
+ sc != ast::StorageClass::kUniform &&
+ sc != ast::StorageClass::kUniformConstant &&
+ sc != ast::StorageClass::kWorkgroup) {
+ TINT_ICE(Transform, ctx.dst->Diagnostics())
+ << "unhandled module-scope storage class (" << sc << ")";
+ }
// This is the symbol for the variable that replaces the module-scope
// var.
@@ -185,7 +193,26 @@
decos.push_back(disable_validation);
auto* param = ctx.dst->Param(new_var_symbol, store_type(), decos);
ctx.InsertFront(func_ast->params, param);
- } else if (var->StorageClass() == ast::StorageClass::kWorkgroup &&
+ } else if (sc == ast::StorageClass::kStorage ||
+ sc == ast::StorageClass::kUniform) {
+ // Variables into the Storage and Uniform storage classes are
+ // redeclared as entry point parameters with a pointer type.
+ auto attributes = ctx.Clone(var->Declaration()->decorations);
+ attributes.push_back(
+ ctx.dst->ASTNodes().Create<ast::DisableValidationDecoration>(
+ ctx.dst->ID(),
+ ast::DisabledValidation::kEntryPointParameter));
+ attributes.push_back(
+ ctx.dst->ASTNodes().Create<ast::DisableValidationDecoration>(
+ ctx.dst->ID(),
+ ast::DisabledValidation::kIgnoreStorageClass));
+ auto* param_type = ctx.dst->ty.pointer(
+ store_type(), sc, var->Declaration()->declared_access);
+ auto* param =
+ ctx.dst->Param(new_var_symbol, param_type, attributes);
+ ctx.InsertFront(func_ast->params, param);
+ is_pointer = true;
+ } else if (sc == ast::StorageClass::kWorkgroup &&
ContainsMatrix(var->Type())) {
// Due to a bug in the MSL compiler, we use a threadgroup memory
// argument for any workgroup allocation that contains a matrix.
@@ -210,17 +237,17 @@
ctx.dst->Decl(local_var));
is_pointer = true;
} else {
- // For any other private or workgroup variable, redeclare it at
- // function scope. Disable storage class validation on this
- // variable.
+ // Variables in the Private and Workgroup storage classes are
+ // redeclared at function scope. Disable storage class validation on
+ // this variable.
auto* disable_validation =
ctx.dst->ASTNodes().Create<ast::DisableValidationDecoration>(
ctx.dst->ID(),
ast::DisabledValidation::kIgnoreStorageClass);
auto* constructor = ctx.Clone(var->Declaration()->constructor);
- auto* local_var = ctx.dst->Var(
- new_var_symbol, store_type(), var->StorageClass(), constructor,
- ast::DecorationList{disable_validation});
+ auto* local_var =
+ ctx.dst->Var(new_var_symbol, store_type(), sc, constructor,
+ ast::DecorationList{disable_validation});
ctx.InsertFront(func_ast->body->statements,
ctx.dst->Decl(local_var));
}
@@ -230,11 +257,16 @@
auto* param_type = store_type();
ast::DecorationList attributes;
if (!var->Type()->UnwrapRef()->is_handle()) {
- param_type = ctx.dst->ty.pointer(param_type, var->StorageClass());
+ param_type = ctx.dst->ty.pointer(
+ param_type, sc, var->Declaration()->declared_access);
is_pointer = true;
- // Disable validation of arguments passed to this pointer parameter,
- // as we will sometimes pass pointers to struct members.
+ // Disable validation of the parameter's storage class and of
+ // arguments passed it.
+ attributes.push_back(
+ ctx.dst->ASTNodes().Create<ast::DisableValidationDecoration>(
+ ctx.dst->ID(),
+ ast::DisabledValidation::kIgnoreStorageClass));
attributes.push_back(
ctx.dst->ASTNodes().Create<ast::DisableValidationDecoration>(
ctx.dst->ID(),
@@ -267,7 +299,7 @@
}
}
- var_to_symbol[var] = new_var_symbol;
+ var_to_newvar[var] = {new_var_symbol, is_pointer};
}
if (!workgroup_parameter_members.empty()) {
@@ -294,21 +326,20 @@
// Add new arguments for any variables that are needed by the callee.
// For entry points, pass non-handle types as pointers.
for (auto* target_var : target_sem->ReferencedModuleVariables()) {
- bool is_handle = target_var->Type()->UnwrapRef()->is_handle();
- bool is_workgroup_matrix =
- target_var->StorageClass() == ast::StorageClass::kWorkgroup &&
- ContainsMatrix(target_var->Type());
- if (target_var->StorageClass() == ast::StorageClass::kPrivate ||
- target_var->StorageClass() == ast::StorageClass::kWorkgroup ||
- target_var->StorageClass() ==
- ast::StorageClass::kUniformConstant) {
- const ast::Expression* arg =
- ctx.dst->Expr(var_to_symbol[target_var]);
- if (is_entry_point && !is_handle && !is_workgroup_matrix) {
- arg = ctx.dst->AddressOf(arg);
- }
- ctx.InsertBack(call->args, arg);
+ auto sc = target_var->StorageClass();
+ if (sc == ast::StorageClass::kNone) {
+ continue;
}
+
+ auto new_var = var_to_newvar[target_var];
+ bool is_handle = target_var->Type()->UnwrapRef()->is_handle();
+ const ast::Expression* arg = ctx.dst->Expr(new_var.symbol);
+ if (is_entry_point && !is_handle && !new_var.is_pointer) {
+ // We need to pass a pointer and we don't already have one, so take
+ // the address of the new variable.
+ arg = ctx.dst->AddressOf(arg);
+ }
+ ctx.InsertBack(call->args, arg);
}
}
}
@@ -316,9 +347,7 @@
// Now remove all module-scope variables with these storage classes.
for (auto* var_ast : ctx.src->AST().GlobalVariables()) {
auto* var_sem = ctx.src->Sem().Get(var_ast);
- if (var_sem->StorageClass() == ast::StorageClass::kPrivate ||
- var_sem->StorageClass() == ast::StorageClass::kWorkgroup ||
- var_sem->StorageClass() == ast::StorageClass::kUniformConstant) {
+ if (var_sem->StorageClass() != ast::StorageClass::kNone) {
ctx.Remove(ctx.src->AST().GlobalDeclarations(), var_ast);
}
}
diff --git a/src/transform/module_scope_var_to_entry_point_param.h b/src/transform/module_scope_var_to_entry_point_param.h
index 9e448b4..1b178ec 100644
--- a/src/transform/module_scope_var_to_entry_point_param.h
+++ b/src/transform/module_scope_var_to_entry_point_param.h
@@ -22,22 +22,27 @@
/// Move module-scope variables into the entry point as parameters.
///
-/// MSL does not allow private and workgroup variables at module-scope, so we
-/// push these declarations into the entry point function and then pass them as
-/// pointer parameters to any function that references them.
-/// Similarly, texture and sampler types are converted to entry point
-/// parameters and passed by value to functions that need them.
+/// MSL does not allow module-scope variables to have any address space other
+/// than `constant`. This transform moves all module-scope declarations into the
+/// entry point function (either as parameters or function-scope variables) and
+/// then passes them as pointer parameters to any function that references them.
///
-/// Since WGSL does not allow function-scope variables to have these storage
-/// classes, we annotate the new variable declarations with an attribute that
-/// bypasses that validation rule.
+/// Since WGSL does not allow entry point parameters or function-scope variables
+/// to have these storage classes, we annotate the new variable declarations
+/// with an attribute that bypasses that validation rule.
///
/// Before:
/// ```
-/// var<private> v : f32 = 2.0;
+/// [[block]]
+/// struct S {
+/// f : f32;
+/// };
+/// [[binding(0), group(0)]]
+/// var<storage, read> s : S;
+/// var<private> p : f32 = 2.0;
///
/// fn foo() {
-/// v = v + 1.0;
+/// p = p + f;
/// }
///
/// [[stage(compute), workgroup_size(1)]]
@@ -48,14 +53,14 @@
///
/// After:
/// ```
-/// fn foo(v : ptr<private, f32>) {
-/// *v = *v + 1.0;
+/// fn foo(p : ptr<private, f32>, sptr : ptr<storage, S, read>) {
+/// *p = *p + (*sptr).f;
/// }
///
/// [[stage(compute), workgroup_size(1)]]
-/// fn main() {
-/// var<private> v : f32 = 2.0;
-/// foo(&v);
+/// fn main(sptr : ptr<storage, S, read>) {
+/// var<private> p : f32 = 2.0;
+/// foo(&p, sptr);
/// }
/// ```
class ModuleScopeVarToEntryPointParam
diff --git a/src/transform/module_scope_var_to_entry_point_param_test.cc b/src/transform/module_scope_var_to_entry_point_param_test.cc
index b7e13da..26951ab 100644
--- a/src/transform/module_scope_var_to_entry_point_param_test.cc
+++ b/src/transform/module_scope_var_to_entry_point_param_test.cc
@@ -78,12 +78,12 @@
fn no_uses() {
}
-fn bar(a : f32, b : f32, [[internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<private, f32>, [[internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_1 : ptr<workgroup, f32>) {
+fn bar(a : f32, b : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<private, f32>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_1 : ptr<workgroup, f32>) {
*(tint_symbol) = a;
*(tint_symbol_1) = b;
}
-fn foo(a : f32, [[internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_2 : ptr<private, f32>, [[internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_3 : ptr<workgroup, f32>) {
+fn foo(a : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_2 : ptr<private, f32>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_3 : ptr<workgroup, f32>) {
let b : f32 = 2.0;
bar(a, b, tint_symbol_2, tint_symbol_3);
no_uses();
@@ -181,7 +181,7 @@
*(p) = 0.0;
}
-fn foo([[internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<private, f32>) {
+fn foo([[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<private, f32>) {
bar(tint_symbol);
}
@@ -197,28 +197,7 @@
EXPECT_EQ(expect, str(got));
}
-TEST_F(ModuleScopeVarToEntryPointParamTest, UnusedVariables) {
- auto* src = R"(
-var<private> p : f32;
-var<workgroup> w : f32;
-
-[[stage(compute), workgroup_size(1)]]
-fn main() {
-}
-)";
-
- auto* expect = R"(
-[[stage(compute), workgroup_size(1)]]
-fn main() {
-}
-)";
-
- auto got = Run<ModuleScopeVarToEntryPointParam>(src);
-
- EXPECT_EQ(expect, str(got));
-}
-
-TEST_F(ModuleScopeVarToEntryPointParamTest, OtherVariables) {
+TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_Basic) {
auto* src = R"(
[[block]]
struct S {
@@ -227,9 +206,13 @@
[[group(0), binding(0)]]
var<uniform> u : S;
+[[group(0), binding(1)]]
+var<storage> s : S;
[[stage(compute), workgroup_size(1)]]
fn main() {
+ _ = u;
+ _ = s;
}
)";
@@ -239,10 +222,75 @@
a : f32;
};
-[[group(0), binding(0)]] var<uniform> u : S;
+[[stage(compute), workgroup_size(1)]]
+fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol : ptr<uniform, S>, [[group(0), binding(1), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol_1 : ptr<storage, S>) {
+ _ = *(tint_symbol);
+ _ = *(tint_symbol_1);
+}
+)";
+
+ auto got = Run<ModuleScopeVarToEntryPointParam>(src);
+
+ EXPECT_EQ(expect, str(got));
+}
+
+TEST_F(ModuleScopeVarToEntryPointParamTest, Buffers_FunctionCalls) {
+ auto* src = R"(
+[[block]]
+struct S {
+ a : f32;
+};
+
+[[group(0), binding(0)]]
+var<uniform> u : S;
+[[group(0), binding(1)]]
+var<storage> s : S;
+
+fn no_uses() {
+}
+
+fn bar(a : f32, b : f32) {
+ _ = u;
+ _ = s;
+}
+
+fn foo(a : f32) {
+ let b : f32 = 2.0;
+ _ = u;
+ bar(a, b);
+ no_uses();
+}
[[stage(compute), workgroup_size(1)]]
fn main() {
+ foo(1.0);
+}
+)";
+
+ auto* expect = R"(
+[[block]]
+struct S {
+ a : f32;
+};
+
+fn no_uses() {
+}
+
+fn bar(a : f32, b : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol : ptr<uniform, S>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_1 : ptr<storage, S>) {
+ _ = *(tint_symbol);
+ _ = *(tint_symbol_1);
+}
+
+fn foo(a : f32, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_2 : ptr<uniform, S>, [[internal(disable_validation__ignore_storage_class), internal(disable_validation__ignore_invalid_pointer_argument)]] tint_symbol_3 : ptr<storage, S>) {
+ let b : f32 = 2.0;
+ _ = *(tint_symbol_2);
+ bar(a, b, tint_symbol_2, tint_symbol_3);
+ no_uses();
+}
+
+[[stage(compute), workgroup_size(1)]]
+fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol_4 : ptr<uniform, S>, [[group(0), binding(1), internal(disable_validation__entry_point_parameter), internal(disable_validation__ignore_storage_class)]] tint_symbol_5 : ptr<storage, S>) {
+ foo(1.0, tint_symbol_4, tint_symbol_5);
}
)";
@@ -258,16 +306,16 @@
[[stage(compute), workgroup_size(1)]]
fn main() {
- ignore(t);
- ignore(s);
+ _ = t;
+ _ = s;
}
)";
auto* expect = R"(
[[stage(compute), workgroup_size(1)]]
fn main([[group(0), binding(0), internal(disable_validation__entry_point_parameter)]] tint_symbol : texture_2d<f32>, [[group(0), binding(1), internal(disable_validation__entry_point_parameter)]] tint_symbol_1 : sampler) {
- ignore(tint_symbol);
- ignore(tint_symbol_1);
+ _ = tint_symbol;
+ _ = tint_symbol_1;
}
)";
@@ -285,13 +333,13 @@
}
fn bar(a : f32, b : f32) {
- ignore(t);
- ignore(s);
+ _ = t;
+ _ = s;
}
fn foo(a : f32) {
let b : f32 = 2.0;
- ignore(t);
+ _ = t;
bar(a, b);
no_uses();
}
@@ -307,13 +355,13 @@
}
fn bar(a : f32, b : f32, tint_symbol : texture_2d<f32>, tint_symbol_1 : sampler) {
- ignore(tint_symbol);
- ignore(tint_symbol_1);
+ _ = tint_symbol;
+ _ = tint_symbol_1;
}
fn foo(a : f32, tint_symbol_2 : texture_2d<f32>, tint_symbol_3 : sampler) {
let b : f32 = 2.0;
- ignore(tint_symbol_2);
+ _ = tint_symbol_2;
bar(a, b, tint_symbol_2, tint_symbol_3);
no_uses();
}
@@ -440,6 +488,45 @@
EXPECT_EQ(expect, str(got));
}
+TEST_F(ModuleScopeVarToEntryPointParamTest, UnusedVariables) {
+ auto* src = R"(
+[[block]]
+struct S {
+ a : f32;
+};
+
+var<private> p : f32;
+var<workgroup> w : f32;
+
+[[group(0), binding(0)]]
+var<uniform> ub : S;
+[[group(0), binding(1)]]
+var<storage> sb : S;
+
+[[group(0), binding(2)]] var t : texture_2d<f32>;
+[[group(0), binding(3)]] var s : sampler;
+
+[[stage(compute), workgroup_size(1)]]
+fn main() {
+}
+)";
+
+ auto* expect = R"(
+[[block]]
+struct S {
+ a : f32;
+};
+
+[[stage(compute), workgroup_size(1)]]
+fn main() {
+}
+)";
+
+ auto got = Run<ModuleScopeVarToEntryPointParam>(src);
+
+ EXPECT_EQ(expect, str(got));
+}
+
TEST_F(ModuleScopeVarToEntryPointParamTest, EmtpyModule) {
auto* src = "";
diff --git a/src/writer/msl/generator_impl.cc b/src/writer/msl/generator_impl.cc
index 9ed399b..83071cc 100644
--- a/src/writer/msl/generator_impl.cc
+++ b/src/writer/msl/generator_impl.cc
@@ -146,13 +146,13 @@
manager.Add<transform::VectorizeScalarMatrixConstructors>();
manager.Add<transform::WrapArraysInStructs>();
manager.Add<transform::PadArrayElements>();
- manager.Add<transform::ModuleScopeVarToEntryPointParam>();
manager.Add<transform::InlinePointerLets>();
manager.Add<transform::RemovePhonies>();
manager.Add<transform::Simplify>();
// ArrayLengthFromUniform must come after InlinePointerLets and Simplify, as
// it assumes that the form of the array length argument is &var.array.
manager.Add<transform::ArrayLengthFromUniform>();
+ manager.Add<transform::ModuleScopeVarToEntryPointParam>();
internal_inputs.Add<transform::ArrayLengthFromUniform::Config>(
std::move(array_length_from_uniform_cfg));
internal_inputs.Add<transform::CanonicalizeEntryPointIO::Config>(
@@ -196,18 +196,10 @@
return false;
}
} else {
- auto* sem = program_->Sem().Get(var);
- switch (sem->StorageClass()) {
- case ast::StorageClass::kPrivate:
- case ast::StorageClass::kWorkgroup:
- // These are pushed into the entry point by the sanitizer.
- TINT_ICE(Writer, diagnostics_)
- << "module-scope variables in the private/workgroup storage "
- "class should have been handled by the MSL sanitizer";
- break;
- default:
- break; // Handled by another code path
- }
+ // These are pushed into the entry point by sanitizer transforms.
+ TINT_ICE(Writer, diagnostics_) << "module-scope variables should have "
+ "been handled by the MSL sanitizer";
+ break;
}
}
@@ -521,25 +513,6 @@
out << program_->Symbols().NameFor(ident->symbol) << "(";
bool first = true;
- auto* func_sem = program_->Sem().Get(func);
- for (const auto& data : func_sem->ReferencedUniformVariables()) {
- auto* var = data.first;
- if (!first) {
- out << ", ";
- }
- first = false;
- out << program_->Symbols().NameFor(var->Declaration()->symbol);
- }
-
- for (const auto& data : func_sem->ReferencedStorageBufferVariables()) {
- auto* var = data.first;
- if (!first) {
- out << ", ";
- }
- first = false;
- out << program_->Symbols().NameFor(var->Declaration()->symbol);
- }
-
const auto& args = expr->args;
for (auto* arg : args) {
if (!first) {
@@ -1464,39 +1437,6 @@
out << " " << program_->Symbols().NameFor(func->symbol) << "(";
bool first = true;
- for (const auto& data : func_sem->ReferencedUniformVariables()) {
- auto* var = data.first;
- if (!first) {
- out << ", ";
- }
- first = false;
-
- out << "constant ";
- // TODO(dsinclair): Can arrays be uniform? If so, fix this ...
- if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
- return false;
- }
- out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol);
- }
-
- for (const auto& data : func_sem->ReferencedStorageBufferVariables()) {
- auto* var = data.first;
- if (!first) {
- out << ", ";
- }
- first = false;
-
- if (var->Access() == ast::Access::kRead) {
- out << "const ";
- }
-
- out << "device ";
- if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
- return false;
- }
- out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol);
- }
-
for (auto* v : func->params) {
if (!first) {
out << ", ";
@@ -1594,9 +1534,27 @@
}
bool GeneratorImpl::EmitEntryPointFunction(const ast::Function* func) {
- auto* func_sem = program_->Sem().Get(func);
auto func_name = program_->Symbols().NameFor(func->symbol);
+ // Returns the binding index of a variable, requiring that the group attribute
+ // have a value of zero.
+ const uint32_t kInvalidBindingIndex = std::numeric_limits<uint32_t>::max();
+ auto get_binding_index = [&](const ast::Variable* var) -> uint32_t {
+ auto bp = var->BindingPoint();
+ if (bp.group == nullptr || bp.binding == nullptr) {
+ TINT_ICE(Writer, diagnostics_)
+ << "missing binding attributes for entry point parameter";
+ return kInvalidBindingIndex;
+ }
+ if (bp.group->value != 0) {
+ TINT_ICE(Writer, diagnostics_)
+ << "encountered non-zero resource group index (use "
+ "BindingRemapper to fix)";
+ return kInvalidBindingIndex;
+ }
+ return bp.binding->value;
+ };
+
{
auto out = line();
@@ -1626,32 +1584,32 @@
if (type->Is<sem::Struct>()) {
out << " [[stage_in]]";
} else if (type->is_handle()) {
- auto bp = var->BindingPoint();
- if (bp.group == nullptr || bp.binding == nullptr) {
- TINT_ICE(Writer, diagnostics_)
- << "missing binding attributes for entry point parameter";
- return false;
- }
- if (bp.group->value != 0) {
- TINT_ICE(Writer, diagnostics_)
- << "encountered non-zero resource group index (use "
- "BindingRemapper to fix)";
+ uint32_t binding = get_binding_index(var);
+ if (binding == kInvalidBindingIndex) {
return false;
}
if (var->type->Is<ast::Sampler>()) {
- out << " [[sampler(" << bp.binding->value << ")]]";
+ out << " [[sampler(" << binding << ")]]";
} else if (var->type->Is<ast::Texture>()) {
- out << " [[texture(" << bp.binding->value << ")]]";
+ out << " [[texture(" << binding << ")]]";
} else {
TINT_ICE(Writer, diagnostics_)
<< "invalid handle type entry point parameter";
return false;
}
} else if (auto* ptr = var->type->As<ast::Pointer>()) {
- if (ptr->storage_class == ast::StorageClass::kWorkgroup) {
+ auto sc = ptr->storage_class;
+ if (sc == ast::StorageClass::kWorkgroup) {
auto& allocations = workgroup_allocations_[func_name];
out << " [[threadgroup(" << allocations.size() << ")]]";
allocations.push_back(program_->Sem().Get(ptr->type)->Size());
+ } else if (sc == ast::StorageClass::kStorage ||
+ sc == ast::StorageClass::kUniform) {
+ uint32_t binding = get_binding_index(var);
+ if (binding == kInvalidBindingIndex) {
+ return false;
+ }
+ out << " [[buffer(" << binding << ")]]";
} else {
TINT_ICE(Writer, diagnostics_)
<< "invalid pointer storage class for entry point parameter";
@@ -1680,62 +1638,6 @@
}
}
}
-
- for (auto data : func_sem->ReferencedUniformVariables()) {
- if (!first) {
- out << ", ";
- }
- first = false;
-
- auto* var = data.first;
- // TODO(dsinclair): We're using the binding to make up the buffer number
- // but we should instead be using a provided mapping that uses both buffer
- // and set. https://bugs.chromium.org/p/tint/issues/detail?id=104
- auto* binding = data.second.binding;
- if (binding == nullptr) {
- diagnostics_.add_error(
- diag::System::Writer,
- "unable to find binding information for uniform: " +
- program_->Symbols().NameFor(var->Declaration()->symbol));
- return false;
- }
- // auto* set = data.second.set;
-
- out << "constant ";
- // TODO(dsinclair): Can you have a uniform array? If so, this needs to be
- // updated to handle arrays property.
- if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
- return false;
- }
- out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol)
- << " [[buffer(" << binding->value << ")]]";
- }
-
- for (auto data : func_sem->ReferencedStorageBufferVariables()) {
- if (!first) {
- out << ", ";
- }
- first = false;
-
- auto* var = data.first;
- // TODO(dsinclair): We're using the binding to make up the buffer number
- // but we should instead be using a provided mapping that uses both buffer
- // and set. https://bugs.chromium.org/p/tint/issues/detail?id=104
- auto* binding = data.second.binding;
- // auto* set = data.second.set;
-
- if (var->Access() == ast::Access::kRead) {
- out << "const ";
- }
-
- out << "device ";
- if (!EmitType(out, var->Type()->UnwrapRef(), "")) {
- return false;
- }
- out << "& " << program_->Symbols().NameFor(var->Declaration()->symbol)
- << " [[buffer(" << binding->value << ")]]";
- }
-
out << ") {";
}
@@ -2199,6 +2101,9 @@
}
if (auto* ptr = type->As<sem::Pointer>()) {
+ if (ptr->Access() == ast::Access::kRead) {
+ out << "const ";
+ }
if (!EmitStorageClass(out, ptr->StorageClass())) {
return false;
}
diff --git a/src/writer/msl/generator_impl_function_test.cc b/src/writer/msl/generator_impl_function_test.cc
index c384e5f..6ecef9a 100644
--- a/src/writer/msl/generator_impl_function_test.cc
+++ b/src/writer/msl/generator_impl_function_test.cc
@@ -335,7 +335,7 @@
ast::Access::kReadWrite,
ast::DecorationList{
create<ast::BindingDecoration>(0),
- create<ast::GroupDecoration>(1),
+ create<ast::GroupDecoration>(0),
});
auto* var = Var("v", ty.f32(), ast::StorageClass::kNone,
@@ -350,7 +350,7 @@
Stage(ast::PipelineStage::kFragment),
});
- GeneratorImpl& gen = Build();
+ GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
@@ -361,8 +361,8 @@
/* 0x0004 */ float b;
};
-fragment void frag_main(device Data& coord [[buffer(0)]]) {
- float v = coord.b;
+fragment void frag_main(device Data* tint_symbol [[buffer(0)]]) {
+ float v = (*(tint_symbol)).b;
return;
}
@@ -381,7 +381,7 @@
Global("coord", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead,
ast::DecorationList{
create<ast::BindingDecoration>(0),
- create<ast::GroupDecoration>(1),
+ create<ast::GroupDecoration>(0),
});
auto* var = Var("v", ty.f32(), ast::StorageClass::kNone,
@@ -396,7 +396,7 @@
Stage(ast::PipelineStage::kFragment),
});
- GeneratorImpl& gen = Build();
+ GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
@@ -407,8 +407,8 @@
/* 0x0004 */ float b;
};
-fragment void frag_main(const device Data& coord [[buffer(0)]]) {
- float v = coord.b;
+fragment void frag_main(const device Data* tint_symbol [[buffer(0)]]) {
+ float v = (*(tint_symbol)).b;
return;
}
@@ -422,7 +422,7 @@
auto* ubo = Global("ubo", ty.Of(ubo_ty), ast::StorageClass::kUniform,
ast::DecorationList{
create<ast::BindingDecoration>(0),
- create<ast::GroupDecoration>(1),
+ create<ast::GroupDecoration>(0),
});
Func("sub_func",
@@ -446,7 +446,7 @@
Stage(ast::PipelineStage::kFragment),
});
- GeneratorImpl& gen = Build();
+ GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
@@ -456,12 +456,12 @@
/* 0x0000 */ float4 coord;
};
-float sub_func(constant UBO& ubo, float param) {
- return ubo.coord[0];
+float sub_func(float param, const constant UBO* const tint_symbol) {
+ return (*(tint_symbol)).coord[0];
}
-fragment void frag_main(constant UBO& ubo [[buffer(0)]]) {
- float v = sub_func(ubo, 1.0f);
+fragment void frag_main(const constant UBO* tint_symbol_1 [[buffer(0)]]) {
+ float v = sub_func(1.0f, tint_symbol_1);
return;
}
@@ -481,7 +481,7 @@
ast::Access::kReadWrite,
ast::DecorationList{
create<ast::BindingDecoration>(0),
- create<ast::GroupDecoration>(1),
+ create<ast::GroupDecoration>(0),
});
ast::VariableList params;
@@ -503,7 +503,7 @@
Stage(ast::PipelineStage::kFragment),
});
- GeneratorImpl& gen = Build();
+ GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
@@ -514,12 +514,12 @@
/* 0x0004 */ float b;
};
-float sub_func(device Data& coord, float param) {
- return coord.b;
+float sub_func(float param, device Data* const tint_symbol) {
+ return (*(tint_symbol)).b;
}
-fragment void frag_main(device Data& coord [[buffer(0)]]) {
- float v = sub_func(coord, 1.0f);
+fragment void frag_main(device Data* tint_symbol_1 [[buffer(0)]]) {
+ float v = sub_func(1.0f, tint_symbol_1);
return;
}
@@ -538,7 +538,7 @@
Global("coord", ty.Of(s), ast::StorageClass::kStorage, ast::Access::kRead,
ast::DecorationList{
create<ast::BindingDecoration>(0),
- create<ast::GroupDecoration>(1),
+ create<ast::GroupDecoration>(0),
});
ast::VariableList params;
@@ -560,7 +560,7 @@
Stage(ast::PipelineStage::kFragment),
});
- GeneratorImpl& gen = Build();
+ GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
@@ -571,12 +571,12 @@
/* 0x0004 */ float b;
};
-float sub_func(const device Data& coord, float param) {
- return coord.b;
+float sub_func(float param, const device Data* const tint_symbol) {
+ return (*(tint_symbol)).b;
}
-fragment void frag_main(const device Data& coord [[buffer(0)]]) {
- float v = sub_func(coord, 1.0f);
+fragment void frag_main(const device Data* tint_symbol_1 [[buffer(0)]]) {
+ float v = sub_func(1.0f, tint_symbol_1);
return;
}
@@ -691,7 +691,7 @@
});
}
- GeneratorImpl& gen = Build();
+ GeneratorImpl& gen = SanitizeAndBuild();
ASSERT_TRUE(gen.Generate()) << gen.error();
EXPECT_EQ(gen.result(), R"(#include <metal_stdlib>
@@ -701,13 +701,13 @@
/* 0x0000 */ float d;
};
-kernel void a(device Data& data [[buffer(0)]]) {
- float v = data.d;
+kernel void a(device Data* tint_symbol [[buffer(0)]]) {
+ float v = (*(tint_symbol)).d;
return;
}
-kernel void b(device Data& data [[buffer(0)]]) {
- float v = data.d;
+kernel void b(device Data* tint_symbol_1 [[buffer(0)]]) {
+ float v = (*(tint_symbol_1)).d;
return;
}
diff --git a/src/writer/msl/generator_impl_test.cc b/src/writer/msl/generator_impl_test.cc
index f2bb2d7..121321c 100644
--- a/src/writer/msl/generator_impl_test.cc
+++ b/src/writer/msl/generator_impl_test.cc
@@ -155,7 +155,8 @@
}
kernel void comp_main(threadgroup tint_symbol_3* tint_symbol_2 [[threadgroup(0)]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
- comp_main_inner(local_invocation_index, &((*(tint_symbol_2)).m));
+ threadgroup float2x2* const tint_symbol_1 = &((*(tint_symbol_2)).m);
+ comp_main_inner(local_invocation_index, tint_symbol_1);
return;
}
@@ -196,7 +197,8 @@
}
kernel void comp_main(threadgroup tint_symbol_3* tint_symbol_2 [[threadgroup(0)]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
- comp_main_inner(local_invocation_index, &((*(tint_symbol_2)).m));
+ threadgroup tint_array_wrapper* const tint_symbol_1 = &((*(tint_symbol_2)).m);
+ comp_main_inner(local_invocation_index, tint_symbol_1);
return;
}
@@ -248,7 +250,8 @@
}
kernel void comp_main(threadgroup tint_symbol_4* tint_symbol_3 [[threadgroup(0)]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
- comp_main_inner(local_invocation_index, &((*(tint_symbol_3)).s));
+ threadgroup S2* const tint_symbol_2 = &((*(tint_symbol_3)).s);
+ comp_main_inner(local_invocation_index, tint_symbol_2);
return;
}
@@ -330,7 +333,10 @@
}
kernel void main1(threadgroup tint_symbol_7* tint_symbol_4 [[threadgroup(0)]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
- main1_inner(local_invocation_index, &((*(tint_symbol_4)).m1), &((*(tint_symbol_4)).m2), &((*(tint_symbol_4)).m3));
+ threadgroup float2x2* const tint_symbol_3 = &((*(tint_symbol_4)).m1);
+ threadgroup float2x3* const tint_symbol_5 = &((*(tint_symbol_4)).m2);
+ threadgroup float2x4* const tint_symbol_6 = &((*(tint_symbol_4)).m3);
+ main1_inner(local_invocation_index, tint_symbol_3, tint_symbol_5, tint_symbol_6);
return;
}
@@ -347,7 +353,10 @@
}
kernel void main2(threadgroup tint_symbol_15* tint_symbol_12 [[threadgroup(0)]], uint local_invocation_index_1 [[thread_index_in_threadgroup]]) {
- main2_inner(local_invocation_index_1, &((*(tint_symbol_12)).m4), &((*(tint_symbol_12)).m5), &((*(tint_symbol_12)).m6));
+ threadgroup float3x2* const tint_symbol_11 = &((*(tint_symbol_12)).m4);
+ threadgroup float3x3* const tint_symbol_13 = &((*(tint_symbol_12)).m5);
+ threadgroup float3x4* const tint_symbol_14 = &((*(tint_symbol_12)).m6);
+ main2_inner(local_invocation_index_1, tint_symbol_11, tint_symbol_13, tint_symbol_14);
return;
}
@@ -364,7 +373,10 @@
}
kernel void main3(threadgroup tint_symbol_23* tint_symbol_20 [[threadgroup(0)]], uint local_invocation_index_2 [[thread_index_in_threadgroup]]) {
- main3_inner(local_invocation_index_2, &((*(tint_symbol_20)).m7), &((*(tint_symbol_20)).m8), &((*(tint_symbol_20)).m9));
+ threadgroup float4x2* const tint_symbol_19 = &((*(tint_symbol_20)).m7);
+ threadgroup float4x3* const tint_symbol_21 = &((*(tint_symbol_20)).m8);
+ threadgroup float4x4* const tint_symbol_22 = &((*(tint_symbol_20)).m9);
+ main3_inner(local_invocation_index_2, tint_symbol_19, tint_symbol_21, tint_symbol_22);
return;
}
diff --git a/src/writer/msl/generator_impl_type_test.cc b/src/writer/msl/generator_impl_type_test.cc
index 8b2ef59..f154f64 100644
--- a/src/writer/msl/generator_impl_type_test.cc
+++ b/src/writer/msl/generator_impl_type_test.cc
@@ -125,7 +125,7 @@
{create<ast::StructBlockDecoration>()});
auto* ubo = Global("ubo", ty.Of(s), ast::StorageClass::kUniform,
ast::DecorationList{
- create<ast::GroupDecoration>(1),
+ create<ast::GroupDecoration>(0),
create<ast::BindingDecoration>(1),
});
WrapInFunction(MemberAccessor(ubo, "arr"));
diff --git a/test/array/assign_to_function_var.wgsl.expected.msl b/test/array/assign_to_function_var.wgsl.expected.msl
index 894f199..e198433 100644
--- a/test/array/assign_to_function_var.wgsl.expected.msl
+++ b/test/array/assign_to_function_var.wgsl.expected.msl
@@ -31,7 +31,7 @@
return tint_symbol_1;
}
-void foo(constant S& src_uniform, device S& src_storage, tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_3, threadgroup tint_array_wrapper* const tint_symbol_4) {
+void foo(tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_3, threadgroup tint_array_wrapper* const tint_symbol_4, const constant S* const tint_symbol_5, device S* const tint_symbol_6) {
tint_array_wrapper src_function = {};
tint_array_wrapper dst = {};
tint_array_wrapper const tint_symbol_2 = {.arr={{.el=1}, {.el=2}, {.el=3}, {.el=3}}};
@@ -44,8 +44,8 @@
dst = *(tint_symbol_3);
dst = *(tint_symbol_4);
dst = ret_struct_arr().arr;
- dst = src_uniform.arr;
- dst = src_storage.arr;
+ dst = (*(tint_symbol_5)).arr;
+ dst = (*(tint_symbol_6)).arr;
tint_array_wrapper_1 dst_nested = {};
tint_array_wrapper_1 src_nested = {};
dst_nested = src_nested;
diff --git a/test/array/assign_to_private_var.wgsl.expected.msl b/test/array/assign_to_private_var.wgsl.expected.msl
index 6542b60..dd91dca 100644
--- a/test/array/assign_to_private_var.wgsl.expected.msl
+++ b/test/array/assign_to_private_var.wgsl.expected.msl
@@ -31,7 +31,7 @@
return tint_symbol_1;
}
-void foo(constant S& src_uniform, device S& src_storage, tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, thread tint_array_wrapper_1* const tint_symbol_6) {
+void foo(tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7, thread tint_array_wrapper_1* const tint_symbol_8) {
tint_array_wrapper src_function = {};
tint_array_wrapper const tint_symbol_2 = {.arr={{.el=1}, {.el=2}, {.el=3}, {.el=3}}};
*(tint_symbol_3) = tint_symbol_2;
@@ -43,9 +43,9 @@
*(tint_symbol_3) = *(tint_symbol_4);
*(tint_symbol_3) = *(tint_symbol_5);
*(tint_symbol_3) = ret_struct_arr().arr;
- *(tint_symbol_3) = src_uniform.arr;
- *(tint_symbol_3) = src_storage.arr;
+ *(tint_symbol_3) = (*(tint_symbol_6)).arr;
+ *(tint_symbol_3) = (*(tint_symbol_7)).arr;
tint_array_wrapper_1 src_nested = {};
- *(tint_symbol_6) = src_nested;
+ *(tint_symbol_8) = src_nested;
}
diff --git a/test/array/assign_to_storage_var.wgsl.expected.msl b/test/array/assign_to_storage_var.wgsl.expected.msl
index d1374b3..c0d7dba 100644
--- a/test/array/assign_to_storage_var.wgsl.expected.msl
+++ b/test/array/assign_to_storage_var.wgsl.expected.msl
@@ -34,21 +34,21 @@
return tint_symbol_1;
}
-void foo(constant S& src_uniform, device S& dst, device S& src_storage, device S_nested& dst_nested, tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_3, threadgroup tint_array_wrapper* const tint_symbol_4) {
+void foo(tint_array_wrapper src_param, device S* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7, device S_nested* const tint_symbol_8) {
tint_array_wrapper src_function = {};
tint_array_wrapper const tint_symbol_2 = {.arr={{.el=1}, {.el=2}, {.el=3}, {.el=3}}};
- dst.arr = tint_symbol_2;
- dst.arr = src_param;
- dst.arr = ret_arr();
+ (*(tint_symbol_3)).arr = tint_symbol_2;
+ (*(tint_symbol_3)).arr = src_param;
+ (*(tint_symbol_3)).arr = ret_arr();
tint_array_wrapper const src_let = {.arr={}};
- dst.arr = src_let;
- dst.arr = src_function;
- dst.arr = *(tint_symbol_3);
- dst.arr = *(tint_symbol_4);
- dst.arr = ret_struct_arr().arr;
- dst.arr = src_uniform.arr;
- dst.arr = src_storage.arr;
+ (*(tint_symbol_3)).arr = src_let;
+ (*(tint_symbol_3)).arr = src_function;
+ (*(tint_symbol_3)).arr = *(tint_symbol_4);
+ (*(tint_symbol_3)).arr = *(tint_symbol_5);
+ (*(tint_symbol_3)).arr = ret_struct_arr().arr;
+ (*(tint_symbol_3)).arr = (*(tint_symbol_6)).arr;
+ (*(tint_symbol_3)).arr = (*(tint_symbol_7)).arr;
tint_array_wrapper_1 src_nested = {};
- dst_nested.arr = src_nested;
+ (*(tint_symbol_8)).arr = src_nested;
}
diff --git a/test/array/assign_to_workgroup_var.wgsl.expected.msl b/test/array/assign_to_workgroup_var.wgsl.expected.msl
index 28d0965..0511506 100644
--- a/test/array/assign_to_workgroup_var.wgsl.expected.msl
+++ b/test/array/assign_to_workgroup_var.wgsl.expected.msl
@@ -31,7 +31,7 @@
return tint_symbol_1;
}
-void foo(constant S& src_uniform, device S& src_storage, tint_array_wrapper src_param, threadgroup tint_array_wrapper* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, threadgroup tint_array_wrapper_1* const tint_symbol_6) {
+void foo(tint_array_wrapper src_param, threadgroup tint_array_wrapper* const tint_symbol_3, thread tint_array_wrapper* const tint_symbol_4, threadgroup tint_array_wrapper* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7, threadgroup tint_array_wrapper_1* const tint_symbol_8) {
tint_array_wrapper src_function = {};
tint_array_wrapper const tint_symbol_2 = {.arr={{.el=1}, {.el=2}, {.el=3}, {.el=3}}};
*(tint_symbol_3) = tint_symbol_2;
@@ -43,9 +43,9 @@
*(tint_symbol_3) = *(tint_symbol_4);
*(tint_symbol_3) = *(tint_symbol_5);
*(tint_symbol_3) = ret_struct_arr().arr;
- *(tint_symbol_3) = src_uniform.arr;
- *(tint_symbol_3) = src_storage.arr;
+ *(tint_symbol_3) = (*(tint_symbol_6)).arr;
+ *(tint_symbol_3) = (*(tint_symbol_7)).arr;
tint_array_wrapper_1 src_nested = {};
- *(tint_symbol_6) = src_nested;
+ *(tint_symbol_8) = src_nested;
}
diff --git a/test/buffer/storage/dynamic_index/read.wgsl.expected.msl b/test/buffer/storage/dynamic_index/read.wgsl.expected.msl
index 12f9ac5..6e5de18 100644
--- a/test/buffer/storage/dynamic_index/read.wgsl.expected.msl
+++ b/test/buffer/storage/dynamic_index/read.wgsl.expected.msl
@@ -31,20 +31,20 @@
/* 0x0000 */ Inner arr[1];
};
-void tint_symbol_inner(const device S& s, uint idx) {
- int3 const a = s.arr[idx].a;
- int const b = s.arr[idx].b;
- uint3 const c = s.arr[idx].c;
- uint const d = s.arr[idx].d;
- float3 const e = s.arr[idx].e;
- float const f = s.arr[idx].f;
- float2x3 const g = s.arr[idx].g;
- float3x2 const h = s.arr[idx].h;
- tint_array_wrapper const i = s.arr[idx].i;
+void tint_symbol_inner(uint idx, const device S* const tint_symbol_1) {
+ int3 const a = (*(tint_symbol_1)).arr[idx].a;
+ int const b = (*(tint_symbol_1)).arr[idx].b;
+ uint3 const c = (*(tint_symbol_1)).arr[idx].c;
+ uint const d = (*(tint_symbol_1)).arr[idx].d;
+ float3 const e = (*(tint_symbol_1)).arr[idx].e;
+ float const f = (*(tint_symbol_1)).arr[idx].f;
+ float2x3 const g = (*(tint_symbol_1)).arr[idx].g;
+ float3x2 const h = (*(tint_symbol_1)).arr[idx].h;
+ tint_array_wrapper const i = (*(tint_symbol_1)).arr[idx].i;
}
-kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], const device S& s [[buffer(0)]]) {
- tint_symbol_inner(s, idx);
+kernel void tint_symbol(const device S* tint_symbol_2 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
+ tint_symbol_inner(idx, tint_symbol_2);
return;
}
diff --git a/test/buffer/storage/dynamic_index/write.wgsl.expected.msl b/test/buffer/storage/dynamic_index/write.wgsl.expected.msl
index 4c36e48..363bd47 100644
--- a/test/buffer/storage/dynamic_index/write.wgsl.expected.msl
+++ b/test/buffer/storage/dynamic_index/write.wgsl.expected.msl
@@ -31,21 +31,21 @@
/* 0x0000 */ Inner arr[1];
};
-void tint_symbol_inner(device S& s, uint idx) {
- s.arr[idx].a = int3();
- s.arr[idx].b = int();
- s.arr[idx].c = uint3();
- s.arr[idx].d = uint();
- s.arr[idx].e = float3();
- s.arr[idx].f = float();
- s.arr[idx].g = float2x3();
- s.arr[idx].h = float3x2();
+void tint_symbol_inner(uint idx, device S* const tint_symbol_2) {
+ (*(tint_symbol_2)).arr[idx].a = int3();
+ (*(tint_symbol_2)).arr[idx].b = int();
+ (*(tint_symbol_2)).arr[idx].c = uint3();
+ (*(tint_symbol_2)).arr[idx].d = uint();
+ (*(tint_symbol_2)).arr[idx].e = float3();
+ (*(tint_symbol_2)).arr[idx].f = float();
+ (*(tint_symbol_2)).arr[idx].g = float2x3();
+ (*(tint_symbol_2)).arr[idx].h = float3x2();
tint_array_wrapper const tint_symbol_1 = {.arr={}};
- s.arr[idx].i = tint_symbol_1;
+ (*(tint_symbol_2)).arr[idx].i = tint_symbol_1;
}
-kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], device S& s [[buffer(0)]]) {
- tint_symbol_inner(s, idx);
+kernel void tint_symbol(device S* tint_symbol_3 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
+ tint_symbol_inner(idx, tint_symbol_3);
return;
}
diff --git a/test/buffer/storage/static_index/read.wgsl.expected.msl b/test/buffer/storage/static_index/read.wgsl.expected.msl
index 6dbc898..2e9124f 100644
--- a/test/buffer/storage/static_index/read.wgsl.expected.msl
+++ b/test/buffer/storage/static_index/read.wgsl.expected.msl
@@ -36,17 +36,17 @@
/* 0x00ac */ int8_t tint_pad_1[4];
};
-kernel void tint_symbol(const device S& s [[buffer(0)]]) {
- int3 const a = s.a;
- int const b = s.b;
- uint3 const c = s.c;
- uint const d = s.d;
- float3 const e = s.e;
- float const f = s.f;
- float2x3 const g = s.g;
- float3x2 const h = s.h;
- Inner const i = s.i;
- tint_array_wrapper const j = s.j;
+kernel void tint_symbol(const device S* tint_symbol_1 [[buffer(0)]]) {
+ int3 const a = (*(tint_symbol_1)).a;
+ int const b = (*(tint_symbol_1)).b;
+ uint3 const c = (*(tint_symbol_1)).c;
+ uint const d = (*(tint_symbol_1)).d;
+ float3 const e = (*(tint_symbol_1)).e;
+ float const f = (*(tint_symbol_1)).f;
+ float2x3 const g = (*(tint_symbol_1)).g;
+ float3x2 const h = (*(tint_symbol_1)).h;
+ Inner const i = (*(tint_symbol_1)).i;
+ tint_array_wrapper const j = (*(tint_symbol_1)).j;
return;
}
diff --git a/test/buffer/storage/static_index/write.wgsl.expected.msl b/test/buffer/storage/static_index/write.wgsl.expected.msl
index b2b8a49..b263ba8 100644
--- a/test/buffer/storage/static_index/write.wgsl.expected.msl
+++ b/test/buffer/storage/static_index/write.wgsl.expected.msl
@@ -36,19 +36,19 @@
/* 0x00ac */ int8_t tint_pad_1[4];
};
-kernel void tint_symbol(device S& s [[buffer(0)]]) {
- s.a = int3();
- s.b = int();
- s.c = uint3();
- s.d = uint();
- s.e = float3();
- s.f = float();
- s.g = float2x3();
- s.h = float3x2();
+kernel void tint_symbol(device S* tint_symbol_3 [[buffer(0)]]) {
+ (*(tint_symbol_3)).a = int3();
+ (*(tint_symbol_3)).b = int();
+ (*(tint_symbol_3)).c = uint3();
+ (*(tint_symbol_3)).d = uint();
+ (*(tint_symbol_3)).e = float3();
+ (*(tint_symbol_3)).f = float();
+ (*(tint_symbol_3)).g = float2x3();
+ (*(tint_symbol_3)).h = float3x2();
Inner const tint_symbol_1 = {};
- s.i = tint_symbol_1;
+ (*(tint_symbol_3)).i = tint_symbol_1;
tint_array_wrapper const tint_symbol_2 = {.arr={}};
- s.j = tint_symbol_2;
+ (*(tint_symbol_3)).j = tint_symbol_2;
return;
}
diff --git a/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl b/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl
index 7d55efd..16e6ca2 100644
--- a/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl
+++ b/test/buffer/uniform/dynamic_index/read.wgsl.expected.msl
@@ -36,20 +36,20 @@
/* 0x0000 */ tint_array_wrapper_1 arr;
};
-void tint_symbol_inner(constant S& s, uint idx) {
- int3 const a = s.arr.arr[idx].a;
- int const b = s.arr.arr[idx].b;
- uint3 const c = s.arr.arr[idx].c;
- uint const d = s.arr.arr[idx].d;
- float3 const e = s.arr.arr[idx].e;
- float const f = s.arr.arr[idx].f;
- int2 const g = s.arr.arr[idx].g;
- int2 const h = s.arr.arr[idx].h;
- float2x3 const i = s.arr.arr[idx].i;
+void tint_symbol_inner(uint idx, const constant S* const tint_symbol_1) {
+ int3 const a = (*(tint_symbol_1)).arr.arr[idx].a;
+ int const b = (*(tint_symbol_1)).arr.arr[idx].b;
+ uint3 const c = (*(tint_symbol_1)).arr.arr[idx].c;
+ uint const d = (*(tint_symbol_1)).arr.arr[idx].d;
+ float3 const e = (*(tint_symbol_1)).arr.arr[idx].e;
+ float const f = (*(tint_symbol_1)).arr.arr[idx].f;
+ int2 const g = (*(tint_symbol_1)).arr.arr[idx].g;
+ int2 const h = (*(tint_symbol_1)).arr.arr[idx].h;
+ float2x3 const i = (*(tint_symbol_1)).arr.arr[idx].i;
}
-kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], constant S& s [[buffer(0)]]) {
- tint_symbol_inner(s, idx);
+kernel void tint_symbol(const constant S* tint_symbol_2 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
+ tint_symbol_inner(idx, tint_symbol_2);
return;
}
diff --git a/test/buffer/uniform/static_index/read.wgsl.expected.msl b/test/buffer/uniform/static_index/read.wgsl.expected.msl
index d003081..a1e8385 100644
--- a/test/buffer/uniform/static_index/read.wgsl.expected.msl
+++ b/test/buffer/uniform/static_index/read.wgsl.expected.msl
@@ -39,19 +39,19 @@
/* 0x0090 */ tint_array_wrapper l;
};
-kernel void tint_symbol(constant S& s [[buffer(0)]]) {
- int3 const a = s.a;
- int const b = s.b;
- uint3 const c = s.c;
- uint const d = s.d;
- float3 const e = s.e;
- float const f = s.f;
- int2 const g = s.g;
- int2 const h = s.h;
- float2x3 const i = s.i;
- float3x2 const j = s.j;
- Inner const k = s.k;
- tint_array_wrapper const l = s.l;
+kernel void tint_symbol(const constant S* tint_symbol_1 [[buffer(0)]]) {
+ int3 const a = (*(tint_symbol_1)).a;
+ int const b = (*(tint_symbol_1)).b;
+ uint3 const c = (*(tint_symbol_1)).c;
+ uint const d = (*(tint_symbol_1)).d;
+ float3 const e = (*(tint_symbol_1)).e;
+ float const f = (*(tint_symbol_1)).f;
+ int2 const g = (*(tint_symbol_1)).g;
+ int2 const h = (*(tint_symbol_1)).h;
+ float2x3 const i = (*(tint_symbol_1)).i;
+ float3x2 const j = (*(tint_symbol_1)).j;
+ Inner const k = (*(tint_symbol_1)).k;
+ tint_array_wrapper const l = (*(tint_symbol_1)).l;
return;
}
diff --git a/test/bug/dawn/947.wgsl.expected.msl b/test/bug/dawn/947.wgsl.expected.msl
index ff00746..c33e0f5 100644
--- a/test/bug/dawn/947.wgsl.expected.msl
+++ b/test/bug/dawn/947.wgsl.expected.msl
@@ -23,38 +23,38 @@
float4 value [[color(0)]];
};
-VertexOutputs vs_main_inner(constant Uniforms& uniforms, uint VertexIndex) {
+VertexOutputs vs_main_inner(uint VertexIndex, const constant Uniforms* const tint_symbol_4) {
tint_array_wrapper texcoord = {.arr={float2(-0.5f, 0.0f), float2(1.5f, 0.0f), float2(0.5f, 2.0f)}};
VertexOutputs output = {};
output.position = float4(((texcoord.arr[VertexIndex] * 2.0f) - float2(1.0f, 1.0f)), 0.0f, 1.0f);
- bool flipY = (uniforms.u_scale[1] < 0.0f);
+ bool flipY = ((*(tint_symbol_4)).u_scale[1] < 0.0f);
if (flipY) {
- output.texcoords = ((((texcoord.arr[VertexIndex] * uniforms.u_scale) + uniforms.u_offset) * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f));
+ output.texcoords = ((((texcoord.arr[VertexIndex] * (*(tint_symbol_4)).u_scale) + (*(tint_symbol_4)).u_offset) * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f));
} else {
- output.texcoords = ((((texcoord.arr[VertexIndex] * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f)) * uniforms.u_scale) + uniforms.u_offset);
+ output.texcoords = ((((texcoord.arr[VertexIndex] * float2(1.0f, -1.0f)) + float2(0.0f, 1.0f)) * (*(tint_symbol_4)).u_scale) + (*(tint_symbol_4)).u_offset);
}
return output;
}
-vertex tint_symbol vs_main(uint VertexIndex [[vertex_id]], constant Uniforms& uniforms [[buffer(0)]]) {
- VertexOutputs const inner_result = vs_main_inner(uniforms, VertexIndex);
+vertex tint_symbol vs_main(const constant Uniforms* tint_symbol_5 [[buffer(0)]], uint VertexIndex [[vertex_id]]) {
+ VertexOutputs const inner_result = vs_main_inner(VertexIndex, tint_symbol_5);
tint_symbol wrapper_result = {};
wrapper_result.texcoords = inner_result.texcoords;
wrapper_result.position = inner_result.position;
return wrapper_result;
}
-float4 fs_main_inner(float2 texcoord, texture2d<float, access::sample> tint_symbol_4, sampler tint_symbol_5) {
+float4 fs_main_inner(float2 texcoord, texture2d<float, access::sample> tint_symbol_6, sampler tint_symbol_7) {
float2 clampedTexcoord = clamp(texcoord, float2(0.0f, 0.0f), float2(1.0f, 1.0f));
if (!(all((clampedTexcoord == texcoord)))) {
discard_fragment();
}
- float4 srcColor = tint_symbol_4.sample(tint_symbol_5, texcoord);
+ float4 srcColor = tint_symbol_6.sample(tint_symbol_7, texcoord);
return srcColor;
}
-fragment tint_symbol_3 fs_main(texture2d<float, access::sample> tint_symbol_6 [[texture(0)]], sampler tint_symbol_7 [[sampler(0)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
- float4 const inner_result_1 = fs_main_inner(tint_symbol_1.texcoord, tint_symbol_6, tint_symbol_7);
+fragment tint_symbol_3 fs_main(texture2d<float, access::sample> tint_symbol_8 [[texture(0)]], sampler tint_symbol_9 [[sampler(0)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+ float4 const inner_result_1 = fs_main_inner(tint_symbol_1.texcoord, tint_symbol_8, tint_symbol_9);
tint_symbol_3 wrapper_result_1 = {};
wrapper_result_1.value = inner_result_1;
return wrapper_result_1;
diff --git a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.msl
index da74b6f..706ba1b 100644
--- a/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/read/function.wgsl.expected.msl
@@ -14,9 +14,9 @@
/* 0x0000 */ int out;
};
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
+kernel void f(device Result* tint_symbol [[buffer(1)]], const constant UBO* tint_symbol_1 [[buffer(0)]]) {
S s = {};
- result.out = s.data.arr[ubo.dynamic_idx];
+ (*(tint_symbol)).out = s.data.arr[(*(tint_symbol_1)).dynamic_idx];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.msl
index 24958dc..bf3dbcc 100644
--- a/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/read/private.wgsl.expected.msl
@@ -14,9 +14,9 @@
/* 0x0000 */ int out;
};
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
- thread S tint_symbol = {};
- result.out = tint_symbol.data.arr[ubo.dynamic_idx];
+kernel void f(device Result* tint_symbol [[buffer(1)]], const constant UBO* tint_symbol_2 [[buffer(0)]]) {
+ thread S tint_symbol_1 = {};
+ (*(tint_symbol)).out = tint_symbol_1.data.arr[(*(tint_symbol_2)).dynamic_idx];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.msl
index d8fa218..d4ccc83 100644
--- a/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/read/storage.wgsl.expected.msl
@@ -14,8 +14,8 @@
/* 0x0000 */ tint_array_wrapper data;
};
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]], device SSBO& ssbo [[buffer(2)]]) {
- result.out = ssbo.data.arr[ubo.dynamic_idx];
+kernel void f(device Result* tint_symbol [[buffer(1)]], device SSBO* tint_symbol_1 [[buffer(2)]], const constant UBO* tint_symbol_2 [[buffer(0)]]) {
+ (*(tint_symbol)).out = (*(tint_symbol_1)).data.arr[(*(tint_symbol_2)).dynamic_idx];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.msl
index baac41e..3c75f01 100644
--- a/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/read/uniform.wgsl.expected.msl
@@ -16,8 +16,8 @@
/* 0x0000 */ int out;
};
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
- result.out = ubo.data.arr[ubo.dynamic_idx].el;
+kernel void f(device Result* tint_symbol [[buffer(1)]], const constant UBO* tint_symbol_1 [[buffer(0)]]) {
+ (*(tint_symbol)).out = (*(tint_symbol_1)).data.arr[(*(tint_symbol_1)).dynamic_idx].el;
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.msl
index 973bbf6..b0fe81b 100644
--- a/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/read/workgroup.wgsl.expected.msl
@@ -14,18 +14,18 @@
/* 0x0000 */ int out;
};
-void f_inner(constant UBO& ubo, device Result& result, uint local_invocation_index, threadgroup S* const tint_symbol) {
+void f_inner(uint local_invocation_index, threadgroup S* const tint_symbol, device Result* const tint_symbol_1, const constant UBO* const tint_symbol_2) {
for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
uint const i = idx;
(*(tint_symbol)).data.arr[i] = int();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
- result.out = (*(tint_symbol)).data.arr[ubo.dynamic_idx];
+ (*(tint_symbol_1)).out = (*(tint_symbol)).data.arr[(*(tint_symbol_2)).dynamic_idx];
}
-kernel void f(uint local_invocation_index [[thread_index_in_threadgroup]], constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
- threadgroup S tint_symbol_1;
- f_inner(ubo, result, local_invocation_index, &(tint_symbol_1));
+kernel void f(device Result* tint_symbol_4 [[buffer(1)]], const constant UBO* tint_symbol_5 [[buffer(0)]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
+ threadgroup S tint_symbol_3;
+ f_inner(local_invocation_index, &(tint_symbol_3), tint_symbol_4, tint_symbol_5);
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.msl
index 2130671..4f216ae 100644
--- a/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/write/function.wgsl.expected.msl
@@ -14,10 +14,10 @@
/* 0x0000 */ int out;
};
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
+kernel void f(const constant UBO* tint_symbol [[buffer(0)]], device Result* tint_symbol_1 [[buffer(1)]]) {
S s = {};
- s.data.arr[ubo.dynamic_idx] = 1;
- result.out = s.data.arr[3];
+ s.data.arr[(*(tint_symbol)).dynamic_idx] = 1;
+ (*(tint_symbol_1)).out = s.data.arr[3];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.msl
index 74f9982..91709e3 100644
--- a/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/write/function_via_param.wgsl.expected.msl
@@ -14,14 +14,14 @@
/* 0x0000 */ int out;
};
-void x(constant UBO& ubo, thread S* const p) {
- (*(p)).data.arr[ubo.dynamic_idx] = 1;
+void x(thread S* const p, const constant UBO* const tint_symbol) {
+ (*(p)).data.arr[(*(tint_symbol)).dynamic_idx] = 1;
}
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
+kernel void f(const constant UBO* tint_symbol_1 [[buffer(0)]], device Result* tint_symbol_2 [[buffer(1)]]) {
S s = {};
- x(ubo, &(s));
- result.out = s.data.arr[3];
+ x(&(s), tint_symbol_1);
+ (*(tint_symbol_2)).out = s.data.arr[3];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.msl
index 4e7678b..8e7cc1c 100644
--- a/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/write/private.wgsl.expected.msl
@@ -14,10 +14,10 @@
/* 0x0000 */ int out;
};
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
+kernel void f(const constant UBO* tint_symbol_1 [[buffer(0)]], device Result* tint_symbol_2 [[buffer(1)]]) {
thread S tint_symbol = {};
- tint_symbol.data.arr[ubo.dynamic_idx] = 1;
- result.out = tint_symbol.data.arr[3];
+ tint_symbol.data.arr[(*(tint_symbol_1)).dynamic_idx] = 1;
+ (*(tint_symbol_2)).out = tint_symbol.data.arr[3];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.msl
index f72d1a2..e9712d1 100644
--- a/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/write/private_via_param.wgsl.expected.msl
@@ -14,14 +14,14 @@
/* 0x0000 */ int out;
};
-void x(constant UBO& ubo, thread S* const p) {
- (*(p)).data.arr[ubo.dynamic_idx] = 1;
+void x(thread S* const p, const constant UBO* const tint_symbol) {
+ (*(p)).data.arr[(*(tint_symbol)).dynamic_idx] = 1;
}
-kernel void f(constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
- thread S tint_symbol = {};
- x(ubo, &(tint_symbol));
- result.out = tint_symbol.data.arr[3];
+kernel void f(const constant UBO* tint_symbol_2 [[buffer(0)]], device Result* tint_symbol_3 [[buffer(1)]]) {
+ thread S tint_symbol_1 = {};
+ x(&(tint_symbol_1), tint_symbol_2);
+ (*(tint_symbol_3)).out = tint_symbol_1.data.arr[3];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.msl
index 9e0044f..bcae6be 100644
--- a/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/write/storage.wgsl.expected.msl
@@ -14,9 +14,9 @@
/* 0x0000 */ tint_array_wrapper data;
};
-kernel void f(constant UBO& ubo [[buffer(0)]], device SSBO& ssbo [[buffer(1)]], device Result& result [[buffer(2)]]) {
- ssbo.data.arr[ubo.dynamic_idx] = 1;
- result.out = ssbo.data.arr[3];
+kernel void f(device SSBO* tint_symbol [[buffer(1)]], const constant UBO* tint_symbol_1 [[buffer(0)]], device Result* tint_symbol_2 [[buffer(2)]]) {
+ (*(tint_symbol)).data.arr[(*(tint_symbol_1)).dynamic_idx] = 1;
+ (*(tint_symbol_2)).out = (*(tint_symbol)).data.arr[3];
return;
}
diff --git a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.msl b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.msl
index dd5b422..42f5aaf 100644
--- a/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.msl
+++ b/test/bug/fxc/dyn_array_idx/write/workgroup.wgsl.expected.msl
@@ -14,19 +14,19 @@
/* 0x0000 */ int out;
};
-void f_inner(constant UBO& ubo, device Result& result, uint local_invocation_index, threadgroup S* const tint_symbol) {
+void f_inner(uint local_invocation_index, threadgroup S* const tint_symbol, const constant UBO* const tint_symbol_1, device Result* const tint_symbol_2) {
for(uint idx = local_invocation_index; (idx < 64u); idx = (idx + 1u)) {
uint const i = idx;
(*(tint_symbol)).data.arr[i] = int();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
- (*(tint_symbol)).data.arr[ubo.dynamic_idx] = 1;
- result.out = (*(tint_symbol)).data.arr[3];
+ (*(tint_symbol)).data.arr[(*(tint_symbol_1)).dynamic_idx] = 1;
+ (*(tint_symbol_2)).out = (*(tint_symbol)).data.arr[3];
}
-kernel void f(uint local_invocation_index [[thread_index_in_threadgroup]], constant UBO& ubo [[buffer(0)]], device Result& result [[buffer(1)]]) {
- threadgroup S tint_symbol_1;
- f_inner(ubo, result, local_invocation_index, &(tint_symbol_1));
+kernel void f(const constant UBO* tint_symbol_4 [[buffer(0)]], device Result* tint_symbol_5 [[buffer(1)]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
+ threadgroup S tint_symbol_3;
+ f_inner(local_invocation_index, &(tint_symbol_3), tint_symbol_4, tint_symbol_5);
return;
}
diff --git a/test/bug/tint/1046.wgsl.expected.msl b/test/bug/tint/1046.wgsl.expected.msl
index 630174a..0764188 100644
--- a/test/bug/tint/1046.wgsl.expected.msl
+++ b/test/bug/tint/1046.wgsl.expected.msl
@@ -2,10 +2,10 @@
using namespace metal;
struct PointLight {
- /* 0x0000 */ float4 position;
+ float4 position;
};
struct PointLights {
- /* 0x0000 */ PointLight values[1];
+ PointLight values[1];
};
struct Uniforms {
/* 0x0000 */ float4x4 worldView;
@@ -35,20 +35,20 @@
float4 color [[color(0)]];
};
-float4 getColor(constant Uniforms& uniforms, FragmentInput tint_symbol, texture2d<float, access::sample> tint_symbol_6, sampler tint_symbol_7) {
+float4 getColor(FragmentInput tint_symbol, const constant Uniforms* const tint_symbol_6, texture2d<float, access::sample> tint_symbol_7, sampler tint_symbol_8) {
float4 color = 0.0f;
- if ((uniforms.color_source == 0u)) {
+ if (((*(tint_symbol_6)).color_source == 0u)) {
color = tint_symbol.color;
} else {
- if ((uniforms.color_source == 1u)) {
+ if (((*(tint_symbol_6)).color_source == 1u)) {
color = tint_symbol.normal;
color[3] = 1.0f;
} else {
- if ((uniforms.color_source == 2u)) {
- color = uniforms.color;
+ if (((*(tint_symbol_6)).color_source == 2u)) {
+ color = (*(tint_symbol_6)).color;
} else {
- if ((uniforms.color_source == 3u)) {
- color = tint_symbol_6.sample(tint_symbol_7, tint_symbol.uv);
+ if (((*(tint_symbol_6)).color_source == 3u)) {
+ color = tint_symbol_7.sample(tint_symbol_8, tint_symbol.uv);
}
}
}
@@ -56,15 +56,15 @@
return color;
}
-FragmentOutput tint_symbol_1_inner(FragmentInput tint_symbol, sampler tint_symbol_8, texture2d<float, access::sample> tint_symbol_9) {
+FragmentOutput tint_symbol_1_inner(FragmentInput tint_symbol) {
FragmentOutput output = {};
output.color = float4(1.0f, 0.0f, 0.0f, 1.0f);
return output;
}
-fragment tint_symbol_4 tint_symbol_1(sampler tint_symbol_10 [[sampler(0)]], texture2d<float, access::sample> tint_symbol_11 [[texture(0)]], float4 position [[position]], tint_symbol_3 tint_symbol_2 [[stage_in]]) {
+fragment tint_symbol_4 tint_symbol_1(float4 position [[position]], tint_symbol_3 tint_symbol_2 [[stage_in]]) {
FragmentInput const tint_symbol_5 = {.position=position, .view_position=tint_symbol_2.view_position, .normal=tint_symbol_2.normal, .uv=tint_symbol_2.uv, .color=tint_symbol_2.color};
- FragmentOutput const inner_result = tint_symbol_1_inner(tint_symbol_5, tint_symbol_10, tint_symbol_11);
+ FragmentOutput const inner_result = tint_symbol_1_inner(tint_symbol_5);
tint_symbol_4 wrapper_result = {};
wrapper_result.color = inner_result.color;
return wrapper_result;
diff --git a/test/bug/tint/1088.spvasm.expected.msl b/test/bug/tint/1088.spvasm.expected.msl
index 5a11505..c0dd650 100644
--- a/test/bug/tint/1088.spvasm.expected.msl
+++ b/test/bug/tint/1088.spvasm.expected.msl
@@ -32,7 +32,7 @@
float4 gl_Position [[position]];
};
-void main_1(constant LeftOver& x_14, thread float3* const tint_symbol_5, thread float4* const tint_symbol_6, thread float2* const tint_symbol_7, thread float2* const tint_symbol_8) {
+void main_1(thread float3* const tint_symbol_5, const constant LeftOver* const tint_symbol_6, thread float4* const tint_symbol_7, thread float2* const tint_symbol_8, thread float2* const tint_symbol_9) {
float4 q = 0.0f;
float3 p = 0.0f;
float3 const x_13 = *(tint_symbol_5);
@@ -40,39 +40,39 @@
float4 const x_21 = q;
p = float3(x_21[0], x_21[1], x_21[2]);
float const x_27 = p[0];
- float const x_41 = x_14.test.arr[0].el;
+ float const x_41 = (*(tint_symbol_6)).test.arr[0].el;
float const x_45 = (*(tint_symbol_5))[1];
- float const x_49 = x_14.time;
+ float const x_49 = (*(tint_symbol_6)).time;
p[0] = (x_27 + sin(((x_41 * x_45) + x_49)));
float const x_55 = p[1];
- float const x_57 = x_14.time;
+ float const x_57 = (*(tint_symbol_6)).time;
p[1] = (x_55 + sin((x_57 + 4.0f)));
- float4x4 const x_69 = x_14.worldViewProjection;
+ float4x4 const x_69 = (*(tint_symbol_6)).worldViewProjection;
float3 const x_70 = p;
- *(tint_symbol_6) = (x_69 * float4(x_70[0], x_70[1], x_70[2], 1.0f));
- float2 const x_83 = *(tint_symbol_7);
- *(tint_symbol_8) = x_83;
- float const x_87 = (*(tint_symbol_6))[1];
- (*(tint_symbol_6))[1] = (x_87 * -1.0f);
+ *(tint_symbol_7) = (x_69 * float4(x_70[0], x_70[1], x_70[2], 1.0f));
+ float2 const x_83 = *(tint_symbol_8);
+ *(tint_symbol_9) = x_83;
+ float const x_87 = (*(tint_symbol_7))[1];
+ (*(tint_symbol_7))[1] = (x_87 * -1.0f);
return;
}
-main_out tint_symbol_inner(constant LeftOver& x_14, float3 position_param, float2 uv_param, float3 normal_param, thread float3* const tint_symbol_9, thread float2* const tint_symbol_10, thread float3* const tint_symbol_11, thread float4* const tint_symbol_12, thread float2* const tint_symbol_13) {
- *(tint_symbol_9) = position_param;
- *(tint_symbol_10) = uv_param;
- *(tint_symbol_11) = normal_param;
- main_1(x_14, tint_symbol_9, tint_symbol_12, tint_symbol_10, tint_symbol_13);
- main_out const tint_symbol_4 = {.gl_Position=*(tint_symbol_12), .vUV_1=*(tint_symbol_13)};
+main_out tint_symbol_inner(float3 position_param, float2 uv_param, float3 normal_param, thread float3* const tint_symbol_10, thread float2* const tint_symbol_11, thread float3* const tint_symbol_12, const constant LeftOver* const tint_symbol_13, thread float4* const tint_symbol_14, thread float2* const tint_symbol_15) {
+ *(tint_symbol_10) = position_param;
+ *(tint_symbol_11) = uv_param;
+ *(tint_symbol_12) = normal_param;
+ main_1(tint_symbol_10, tint_symbol_13, tint_symbol_14, tint_symbol_11, tint_symbol_15);
+ main_out const tint_symbol_4 = {.gl_Position=*(tint_symbol_14), .vUV_1=*(tint_symbol_15)};
return tint_symbol_4;
}
-vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant LeftOver& x_14 [[buffer(0)]]) {
- thread float3 tint_symbol_14 = 0.0f;
- thread float2 tint_symbol_15 = 0.0f;
+vertex tint_symbol_3 tint_symbol(const constant LeftOver* tint_symbol_19 [[buffer(0)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
thread float3 tint_symbol_16 = 0.0f;
- thread float4 tint_symbol_17 = 0.0f;
- thread float2 tint_symbol_18 = 0.0f;
- main_out const inner_result = tint_symbol_inner(x_14, tint_symbol_1.position_param, tint_symbol_1.uv_param, tint_symbol_1.normal_param, &(tint_symbol_14), &(tint_symbol_15), &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18));
+ thread float2 tint_symbol_17 = 0.0f;
+ thread float3 tint_symbol_18 = 0.0f;
+ thread float4 tint_symbol_20 = 0.0f;
+ thread float2 tint_symbol_21 = 0.0f;
+ main_out const inner_result = tint_symbol_inner(tint_symbol_1.position_param, tint_symbol_1.uv_param, tint_symbol_1.normal_param, &(tint_symbol_16), &(tint_symbol_17), &(tint_symbol_18), tint_symbol_19, &(tint_symbol_20), &(tint_symbol_21));
tint_symbol_3 wrapper_result = {};
wrapper_result.gl_Position = inner_result.gl_Position;
wrapper_result.vUV_1 = inner_result.vUV_1;
diff --git a/test/bug/tint/1113.wgsl.expected.msl b/test/bug/tint/1113.wgsl.expected.msl
index 52cc00c..6a102ec 100644
--- a/test/bug/tint/1113.wgsl.expected.msl
+++ b/test/bug/tint/1113.wgsl.expected.msl
@@ -52,15 +52,15 @@
/* 0x0000 */ atomic_int values[1];
};
-float3 toVoxelPos(constant Uniforms& uniforms, float3 position) {
- float3 bbMin = float3(uniforms.bbMin[0], uniforms.bbMin[1], uniforms.bbMin[2]);
- float3 bbMax = float3(uniforms.bbMax[0], uniforms.bbMax[1], uniforms.bbMax[2]);
+float3 toVoxelPos(float3 position, const constant Uniforms* const tint_symbol) {
+ float3 bbMin = float3((*(tint_symbol)).bbMin[0], (*(tint_symbol)).bbMin[1], (*(tint_symbol)).bbMin[2]);
+ float3 bbMax = float3((*(tint_symbol)).bbMax[0], (*(tint_symbol)).bbMax[1], (*(tint_symbol)).bbMax[2]);
float3 bbSize = (bbMax - bbMin);
float cubeSize = fmax(fmax(bbSize[0], bbSize[1]), bbSize[2]);
- float gridSize = float(uniforms.gridSize);
- float gx = ((gridSize * (position[0] - uniforms.bbMin[0])) / cubeSize);
- float gy = ((gridSize * (position[1] - uniforms.bbMin[1])) / cubeSize);
- float gz = ((gridSize * (position[2] - uniforms.bbMin[2])) / cubeSize);
+ float gridSize = float((*(tint_symbol)).gridSize);
+ float gx = ((gridSize * (position[0] - (*(tint_symbol)).bbMin[0])) / cubeSize);
+ float gy = ((gridSize * (position[1] - (*(tint_symbol)).bbMin[1])) / cubeSize);
+ float gz = ((gridSize * (position[2] - (*(tint_symbol)).bbMin[2])) / cubeSize);
return float3(gx, gy, gz);
}
@@ -76,89 +76,89 @@
return uint3(x_1, y_1, z_1);
}
-float3 loadPosition(device F32s& positions, uint vertexIndex) {
- float3 position = float3(positions.values[((3u * vertexIndex) + 0u)], positions.values[((3u * vertexIndex) + 1u)], positions.values[((3u * vertexIndex) + 2u)]);
+float3 loadPosition(uint vertexIndex, device F32s* const tint_symbol_1) {
+ float3 position = float3((*(tint_symbol_1)).values[((3u * vertexIndex) + 0u)], (*(tint_symbol_1)).values[((3u * vertexIndex) + 1u)], (*(tint_symbol_1)).values[((3u * vertexIndex) + 2u)]);
return position;
}
-void doIgnore(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counters, device U32s& indices, device F32s& positions, device AI32s& LUT) {
- uint g42 = uniforms.numTriangles;
- uint kj6 = dbg.value1;
- uint b53 = atomic_load_explicit(&(counters.values[0]), memory_order_relaxed);
- uint rwg = indices.values[0];
- float rb5 = positions.values[0];
- int g55 = atomic_load_explicit(&(LUT.values[0]), memory_order_relaxed);
+void doIgnore(const constant Uniforms* const tint_symbol_2, device Dbg* const tint_symbol_3, device AU32s* const tint_symbol_4, device U32s* const tint_symbol_5, device F32s* const tint_symbol_6, device AI32s* const tint_symbol_7) {
+ uint g42 = (*(tint_symbol_2)).numTriangles;
+ uint kj6 = (*(tint_symbol_3)).value1;
+ uint b53 = atomic_load_explicit(&((*(tint_symbol_4)).values[0]), memory_order_relaxed);
+ uint rwg = (*(tint_symbol_5)).values[0];
+ float rb5 = (*(tint_symbol_6)).values[0];
+ int g55 = atomic_load_explicit(&((*(tint_symbol_7)).values[0]), memory_order_relaxed);
}
-void main_count_inner(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counters, device U32s& indices, device F32s& positions, device AI32s& LUT, uint3 GlobalInvocationID) {
+void main_count_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_8, device Dbg* const tint_symbol_9, device AU32s* const tint_symbol_10, device U32s* const tint_symbol_11, device F32s* const tint_symbol_12, device AI32s* const tint_symbol_13) {
uint triangleIndex = GlobalInvocationID[0];
- if ((triangleIndex >= uniforms.numTriangles)) {
+ if ((triangleIndex >= (*(tint_symbol_8)).numTriangles)) {
return;
}
- doIgnore(uniforms, dbg, counters, indices, positions, LUT);
- uint i0 = indices.values[((3u * triangleIndex) + 0u)];
- uint i1 = indices.values[((3u * triangleIndex) + 1u)];
- uint i2 = indices.values[((3u * triangleIndex) + 2u)];
- float3 p0 = loadPosition(positions, i0);
- float3 p1 = loadPosition(positions, i1);
- float3 p2 = loadPosition(positions, i2);
+ doIgnore(tint_symbol_8, tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12, tint_symbol_13);
+ uint i0 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 0u)];
+ uint i1 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 1u)];
+ uint i2 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 2u)];
+ float3 p0 = loadPosition(i0, tint_symbol_12);
+ float3 p1 = loadPosition(i1, tint_symbol_12);
+ float3 p2 = loadPosition(i2, tint_symbol_12);
float3 center = (((p0 + p1) + p2) / 3.0f);
- float3 voxelPos = toVoxelPos(uniforms, center);
- uint voxelIndex = toIndex1D(uniforms.gridSize, voxelPos);
- uint acefg = atomic_fetch_add_explicit(&(counters.values[voxelIndex]), 1u, memory_order_relaxed);
+ float3 voxelPos = toVoxelPos(center, tint_symbol_8);
+ uint voxelIndex = toIndex1D((*(tint_symbol_8)).gridSize, voxelPos);
+ uint acefg = atomic_fetch_add_explicit(&((*(tint_symbol_10)).values[voxelIndex]), 1u, memory_order_relaxed);
if ((triangleIndex == 0u)) {
- dbg.value0 = uniforms.gridSize;
- dbg.value_f32_0 = center[0];
- dbg.value_f32_1 = center[1];
- dbg.value_f32_2 = center[2];
+ (*(tint_symbol_9)).value0 = (*(tint_symbol_8)).gridSize;
+ (*(tint_symbol_9)).value_f32_0 = center[0];
+ (*(tint_symbol_9)).value_f32_1 = center[1];
+ (*(tint_symbol_9)).value_f32_2 = center[2];
}
}
-kernel void main_count(uint3 GlobalInvocationID [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(0)]], device Dbg& dbg [[buffer(1)]], device AU32s& counters [[buffer(2)]], device U32s& indices [[buffer(3)]], device F32s& positions [[buffer(4)]], device AI32s& LUT [[buffer(5)]]) {
- main_count_inner(uniforms, dbg, counters, indices, positions, LUT, GlobalInvocationID);
+kernel void main_count(const constant Uniforms* tint_symbol_14 [[buffer(0)]], device Dbg* tint_symbol_15 [[buffer(1)]], device AU32s* tint_symbol_16 [[buffer(2)]], device U32s* tint_symbol_17 [[buffer(3)]], device F32s* tint_symbol_18 [[buffer(4)]], device AI32s* tint_symbol_19 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+ main_count_inner(GlobalInvocationID, tint_symbol_14, tint_symbol_15, tint_symbol_16, tint_symbol_17, tint_symbol_18, tint_symbol_19);
return;
}
-void main_create_lut_inner(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counters, device U32s& indices, device F32s& positions, device AI32s& LUT, uint3 GlobalInvocationID) {
+void main_create_lut_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_20, device Dbg* const tint_symbol_21, device AU32s* const tint_symbol_22, device U32s* const tint_symbol_23, device F32s* const tint_symbol_24, device AI32s* const tint_symbol_25) {
uint voxelIndex = GlobalInvocationID[0];
- doIgnore(uniforms, dbg, counters, indices, positions, LUT);
- uint maxVoxels = ((uniforms.gridSize * uniforms.gridSize) * uniforms.gridSize);
+ doIgnore(tint_symbol_20, tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_24, tint_symbol_25);
+ uint maxVoxels = (((*(tint_symbol_20)).gridSize * (*(tint_symbol_20)).gridSize) * (*(tint_symbol_20)).gridSize);
if ((voxelIndex >= maxVoxels)) {
return;
}
- uint numTriangles = atomic_load_explicit(&(counters.values[voxelIndex]), memory_order_relaxed);
+ uint numTriangles = atomic_load_explicit(&((*(tint_symbol_22)).values[voxelIndex]), memory_order_relaxed);
int offset = -1;
if ((numTriangles > 0u)) {
- offset = int(atomic_fetch_add_explicit(&(dbg.offsetCounter), numTriangles, memory_order_relaxed));
+ offset = int(atomic_fetch_add_explicit(&((*(tint_symbol_21)).offsetCounter), numTriangles, memory_order_relaxed));
}
- atomic_store_explicit(&(LUT.values[voxelIndex]), offset, memory_order_relaxed);
+ atomic_store_explicit(&((*(tint_symbol_25)).values[voxelIndex]), offset, memory_order_relaxed);
}
-kernel void main_create_lut(uint3 GlobalInvocationID [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(0)]], device Dbg& dbg [[buffer(1)]], device AU32s& counters [[buffer(2)]], device U32s& indices [[buffer(3)]], device F32s& positions [[buffer(4)]], device AI32s& LUT [[buffer(5)]]) {
- main_create_lut_inner(uniforms, dbg, counters, indices, positions, LUT, GlobalInvocationID);
+kernel void main_create_lut(const constant Uniforms* tint_symbol_26 [[buffer(0)]], device Dbg* tint_symbol_27 [[buffer(1)]], device AU32s* tint_symbol_28 [[buffer(2)]], device U32s* tint_symbol_29 [[buffer(3)]], device F32s* tint_symbol_30 [[buffer(4)]], device AI32s* tint_symbol_31 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+ main_create_lut_inner(GlobalInvocationID, tint_symbol_26, tint_symbol_27, tint_symbol_28, tint_symbol_29, tint_symbol_30, tint_symbol_31);
return;
}
-void main_sort_triangles_inner(constant Uniforms& uniforms, device Dbg& dbg, device AU32s& counters, device U32s& indices, device F32s& positions, device AI32s& LUT, uint3 GlobalInvocationID) {
+void main_sort_triangles_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_32, device Dbg* const tint_symbol_33, device AU32s* const tint_symbol_34, device U32s* const tint_symbol_35, device F32s* const tint_symbol_36, device AI32s* const tint_symbol_37) {
uint triangleIndex = GlobalInvocationID[0];
- doIgnore(uniforms, dbg, counters, indices, positions, LUT);
- if ((triangleIndex >= uniforms.numTriangles)) {
+ doIgnore(tint_symbol_32, tint_symbol_33, tint_symbol_34, tint_symbol_35, tint_symbol_36, tint_symbol_37);
+ if ((triangleIndex >= (*(tint_symbol_32)).numTriangles)) {
return;
}
- uint i0 = indices.values[((3u * triangleIndex) + 0u)];
- uint i1 = indices.values[((3u * triangleIndex) + 1u)];
- uint i2 = indices.values[((3u * triangleIndex) + 2u)];
- float3 p0 = loadPosition(positions, i0);
- float3 p1 = loadPosition(positions, i1);
- float3 p2 = loadPosition(positions, i2);
+ uint i0 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 0u)];
+ uint i1 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 1u)];
+ uint i2 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 2u)];
+ float3 p0 = loadPosition(i0, tint_symbol_36);
+ float3 p1 = loadPosition(i1, tint_symbol_36);
+ float3 p2 = loadPosition(i2, tint_symbol_36);
float3 center = (((p0 + p1) + p2) / 3.0f);
- float3 voxelPos = toVoxelPos(uniforms, center);
- uint voxelIndex = toIndex1D(uniforms.gridSize, voxelPos);
- int triangleOffset = atomic_fetch_add_explicit(&(LUT.values[voxelIndex]), 1, memory_order_relaxed);
+ float3 voxelPos = toVoxelPos(center, tint_symbol_32);
+ uint voxelIndex = toIndex1D((*(tint_symbol_32)).gridSize, voxelPos);
+ int triangleOffset = atomic_fetch_add_explicit(&((*(tint_symbol_37)).values[voxelIndex]), 1, memory_order_relaxed);
}
-kernel void main_sort_triangles(uint3 GlobalInvocationID [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(0)]], device Dbg& dbg [[buffer(1)]], device AU32s& counters [[buffer(2)]], device U32s& indices [[buffer(3)]], device F32s& positions [[buffer(4)]], device AI32s& LUT [[buffer(5)]]) {
- main_sort_triangles_inner(uniforms, dbg, counters, indices, positions, LUT, GlobalInvocationID);
+kernel void main_sort_triangles(const constant Uniforms* tint_symbol_38 [[buffer(0)]], device Dbg* tint_symbol_39 [[buffer(1)]], device AU32s* tint_symbol_40 [[buffer(2)]], device U32s* tint_symbol_41 [[buffer(3)]], device F32s* tint_symbol_42 [[buffer(4)]], device AI32s* tint_symbol_43 [[buffer(5)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+ main_sort_triangles_inner(GlobalInvocationID, tint_symbol_38, tint_symbol_39, tint_symbol_40, tint_symbol_41, tint_symbol_42, tint_symbol_43);
return;
}
diff --git a/test/bug/tint/1121.wgsl.expected.msl b/test/bug/tint/1121.wgsl.expected.msl
index 9592e5a..2fc032d 100644
--- a/test/bug/tint/1121.wgsl.expected.msl
+++ b/test/bug/tint/1121.wgsl.expected.msl
@@ -52,22 +52,22 @@
float4 arr[6];
};
-void tint_symbol_inner(constant Config& config, constant Uniforms& uniforms, device LightsBuffer& lightsBuffer, device Tiles& tileLightId, uint3 GlobalInvocationID) {
+void tint_symbol_inner(uint3 GlobalInvocationID, const constant Config* const tint_symbol_1, device LightsBuffer* const tint_symbol_2, const constant Uniforms* const tint_symbol_3, device Tiles* const tint_symbol_4) {
uint index = GlobalInvocationID[0];
- if ((index >= config.numLights)) {
+ if ((index >= (*(tint_symbol_1)).numLights)) {
return;
}
- lightsBuffer.lights[index].position[1] = ((lightsBuffer.lights[index].position[1] - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f))))));
- if ((lightsBuffer.lights[index].position[1] < uniforms.min[1])) {
- lightsBuffer.lights[index].position[1] = uniforms.max[1];
+ (*(tint_symbol_2)).lights[index].position[1] = (((*(tint_symbol_2)).lights[index].position[1] - 0.100000001f) + (0.001f * (float(index) - (64.0f * floor((float(index) / 64.0f))))));
+ if (((*(tint_symbol_2)).lights[index].position[1] < (*(tint_symbol_3)).min[1])) {
+ (*(tint_symbol_2)).lights[index].position[1] = (*(tint_symbol_3)).max[1];
}
- float4x4 M = uniforms.projectionMatrix;
+ float4x4 M = (*(tint_symbol_3)).projectionMatrix;
float viewNear = (-(M[3][2]) / (-1.0f + M[2][2]));
float viewFar = (-(M[3][2]) / (1.0f + M[2][2]));
- float4 lightPos = lightsBuffer.lights[index].position;
- lightPos = (uniforms.viewMatrix * lightPos);
+ float4 lightPos = (*(tint_symbol_2)).lights[index].position;
+ lightPos = ((*(tint_symbol_3)).viewMatrix * lightPos);
lightPos = (lightPos / lightPos[3]);
- float lightRadius = lightsBuffer.lights[index].radius;
+ float lightRadius = (*(tint_symbol_2)).lights[index].radius;
float4 boxMin = (lightPos - float4(float3(lightRadius), 0.0f));
float4 boxMax = (lightPos + float4(float3(lightRadius), 0.0f));
tint_array_wrapper_2 frustumPlanes = {};
@@ -79,8 +79,8 @@
for(int y_1 = 0; (y_1 < TILE_COUNT_Y); y_1 = as_type<int>((as_type<uint>(y_1) + as_type<uint>(1)))) {
for(int x_1 = 0; (x_1 < TILE_COUNT_X); x_1 = as_type<int>((as_type<uint>(x_1) + as_type<uint>(1)))) {
int2 tilePixel0Idx = int2(as_type<int>((as_type<uint>(x_1) * as_type<uint>(TILE_SIZE))), as_type<int>((as_type<uint>(y_1) * as_type<uint>(TILE_SIZE))));
- float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / float4(uniforms.fullScreenSize).xy) - float2(1.0f));
- float2 ceilCoord = (((2.0f * float2(as_type<int2>((as_type<uint2>(tilePixel0Idx) + as_type<uint2>(int2(TILE_SIZE)))))) / float4(uniforms.fullScreenSize).xy) - float2(1.0f));
+ float2 floorCoord = (((2.0f * float2(tilePixel0Idx)) / float4((*(tint_symbol_3)).fullScreenSize).xy) - float2(1.0f));
+ float2 ceilCoord = (((2.0f * float2(as_type<int2>((as_type<uint2>(tilePixel0Idx) + as_type<uint2>(int2(TILE_SIZE)))))) / float4((*(tint_symbol_3)).fullScreenSize).xy) - float2(1.0f));
float2 viewFloorCoord = float2((((-(viewNear) * floorCoord[0]) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * floorCoord[1]) - (M[2][1] * viewNear)) / M[1][1]));
float2 viewCeilCoord = float2((((-(viewNear) * ceilCoord[0]) - (M[2][0] * viewNear)) / M[0][0]), (((-(viewNear) * ceilCoord[1]) - (M[2][1] * viewNear)) / M[1][1]));
frustumPlanes.arr[0] = float4(1.0f, 0.0f, (-(viewFloorCoord[0]) / viewNear), 0.0f);
@@ -110,21 +110,21 @@
}
if ((dp >= 0.0f)) {
uint tileId = uint(as_type<int>((as_type<uint>(x_1) + as_type<uint>(as_type<int>((as_type<uint>(y_1) * as_type<uint>(TILE_COUNT_X)))))));
- if (((tileId < 0u) || (tileId >= config.numTiles))) {
+ if (((tileId < 0u) || (tileId >= (*(tint_symbol_1)).numTiles))) {
continue;
}
- uint offset = atomic_fetch_add_explicit(&(tileLightId.data.arr[tileId].count), 1u, memory_order_relaxed);
- if ((offset >= config.numTileLightSlot)) {
+ uint offset = atomic_fetch_add_explicit(&((*(tint_symbol_4)).data.arr[tileId].count), 1u, memory_order_relaxed);
+ if ((offset >= (*(tint_symbol_1)).numTileLightSlot)) {
continue;
}
- tileLightId.data.arr[tileId].lightId.arr[offset] = GlobalInvocationID[0];
+ (*(tint_symbol_4)).data.arr[tileId].lightId.arr[offset] = GlobalInvocationID[0];
}
}
}
}
-kernel void tint_symbol(uint3 GlobalInvocationID [[thread_position_in_grid]], constant Config& config [[buffer(0)]], constant Uniforms& uniforms [[buffer(1)]], device LightsBuffer& lightsBuffer [[buffer(2)]], device Tiles& tileLightId [[buffer(3)]]) {
- tint_symbol_inner(config, uniforms, lightsBuffer, tileLightId, GlobalInvocationID);
+kernel void tint_symbol(const constant Config* tint_symbol_5 [[buffer(0)]], device LightsBuffer* tint_symbol_6 [[buffer(2)]], const constant Uniforms* tint_symbol_7 [[buffer(1)]], device Tiles* tint_symbol_8 [[buffer(3)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+ tint_symbol_inner(GlobalInvocationID, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8);
return;
}
diff --git a/test/bug/tint/1136.wgsl.expected.msl b/test/bug/tint/1136.wgsl.expected.msl
index c0b4449..113f12d 100644
--- a/test/bug/tint/1136.wgsl.expected.msl
+++ b/test/bug/tint/1136.wgsl.expected.msl
@@ -5,7 +5,7 @@
/* 0x0000 */ uint data;
};
-void tint_symbol_1(device Buffer& tint_symbol) {
- tint_symbol.data = (tint_symbol.data + 1u);
+void tint_symbol_1(device Buffer* const tint_symbol_2) {
+ (*(tint_symbol_2)).data = ((*(tint_symbol_2)).data + 1u);
}
diff --git a/test/bug/tint/221.wgsl.expected.msl b/test/bug/tint/221.wgsl.expected.msl
index e23d494..28da854 100644
--- a/test/bug/tint/221.wgsl.expected.msl
+++ b/test/bug/tint/221.wgsl.expected.msl
@@ -9,23 +9,23 @@
/* 0x0004 */ tint_array_wrapper data;
};
-kernel void tint_symbol(device Buf& b [[buffer(0)]]) {
+kernel void tint_symbol(device Buf* tint_symbol_1 [[buffer(0)]]) {
uint i = 0u;
while (true) {
- if ((i >= b.count)) {
+ if ((i >= (*(tint_symbol_1)).count)) {
break;
}
uint const p_save = i;
if (((i % 2u) == 0u)) {
{
- b.data.arr[p_save] = (b.data.arr[p_save] * 2u);
+ (*(tint_symbol_1)).data.arr[p_save] = ((*(tint_symbol_1)).data.arr[p_save] * 2u);
i = (i + 1u);
}
continue;
}
- b.data.arr[p_save] = 0u;
+ (*(tint_symbol_1)).data.arr[p_save] = 0u;
{
- b.data.arr[p_save] = (b.data.arr[p_save] * 2u);
+ (*(tint_symbol_1)).data.arr[p_save] = ((*(tint_symbol_1)).data.arr[p_save] * 2u);
i = (i + 1u);
}
}
diff --git a/test/bug/tint/294.wgsl.expected.msl b/test/bug/tint/294.wgsl.expected.msl
index 065aee7..0a1427c 100644
--- a/test/bug/tint/294.wgsl.expected.msl
+++ b/test/bug/tint/294.wgsl.expected.msl
@@ -1,24 +1,11 @@
#include <metal_stdlib>
using namespace metal;
-
-template<typename T, int N, int M>
-inline auto operator*(matrix<T, N, M> lhs, packed_vec<T, N> rhs) {
- return lhs * vec<T, N>(rhs);
-}
-
-template<typename T, int N, int M>
-inline auto operator*(packed_vec<T, M> lhs, matrix<T, N, M> rhs) {
- return vec<T, M>(lhs) * rhs;
-}
-
struct Light {
- /* 0x0000 */ packed_float3 position;
- /* 0x000c */ int8_t tint_pad[4];
- /* 0x0010 */ packed_float3 colour;
- /* 0x001c */ int8_t tint_pad_1[4];
+ float3 position;
+ float3 colour;
};
struct Lights {
- /* 0x0000 */ Light light[1];
+ Light light[1];
};
diff --git a/test/bug/tint/369.wgsl.expected.msl b/test/bug/tint/369.wgsl.expected.msl
index 65ebdfb..93bb312 100644
--- a/test/bug/tint/369.wgsl.expected.msl
+++ b/test/bug/tint/369.wgsl.expected.msl
@@ -2,6 +2,6 @@
using namespace metal;
struct S {
- /* 0x0000 */ float2x2 m;
+ float2x2 m;
};
diff --git a/test/bug/tint/403.wgsl.expected.msl b/test/bug/tint/403.wgsl.expected.msl
index 8e87d26..6f50135 100644
--- a/test/bug/tint/403.wgsl.expected.msl
+++ b/test/bug/tint/403.wgsl.expected.msl
@@ -14,10 +14,10 @@
float2 arr[3];
};
-float4 tint_symbol_inner(constant vertexUniformBuffer1& x_20, constant vertexUniformBuffer2& x_26, uint gl_VertexIndex) {
+float4 tint_symbol_inner(uint gl_VertexIndex, const constant vertexUniformBuffer1* const tint_symbol_3, const constant vertexUniformBuffer2* const tint_symbol_4) {
tint_array_wrapper indexable = {};
- float2x2 const x_23 = x_20.transform1;
- float2x2 const x_28 = x_26.transform2;
+ float2x2 const x_23 = (*(tint_symbol_3)).transform1;
+ float2x2 const x_28 = (*(tint_symbol_4)).transform2;
uint const x_46 = gl_VertexIndex;
tint_array_wrapper const tint_symbol_2 = {.arr={float2(-1.0f, 1.0f), float2(1.0f, 1.0f), float2(-1.0f, -1.0f)}};
indexable = tint_symbol_2;
@@ -26,8 +26,8 @@
return float4(x_52[0], x_52[1], 0.0f, 1.0f);
}
-vertex tint_symbol_1 tint_symbol(uint gl_VertexIndex [[vertex_id]], constant vertexUniformBuffer1& x_20 [[buffer(0)]], constant vertexUniformBuffer2& x_26 [[buffer(1)]]) {
- float4 const inner_result = tint_symbol_inner(x_20, x_26, gl_VertexIndex);
+vertex tint_symbol_1 tint_symbol(const constant vertexUniformBuffer1* tint_symbol_5 [[buffer(0)]], const constant vertexUniformBuffer2* tint_symbol_6 [[buffer(1)]], uint gl_VertexIndex [[vertex_id]]) {
+ float4 const inner_result = tint_symbol_inner(gl_VertexIndex, tint_symbol_5, tint_symbol_6);
tint_symbol_1 wrapper_result = {};
wrapper_result.value = inner_result;
return wrapper_result;
diff --git a/test/bug/tint/492.wgsl.expected.msl b/test/bug/tint/492.wgsl.expected.msl
index b7caff1..848e48c 100644
--- a/test/bug/tint/492.wgsl.expected.msl
+++ b/test/bug/tint/492.wgsl.expected.msl
@@ -5,8 +5,8 @@
/* 0x0000 */ int a;
};
-kernel void tint_symbol(device S& buf [[buffer(0)]]) {
- buf.a = 12;
+kernel void tint_symbol(device S* tint_symbol_1 [[buffer(0)]]) {
+ (*(tint_symbol_1)).a = 12;
return;
}
diff --git a/test/bug/tint/534.wgsl.expected.msl b/test/bug/tint/534.wgsl.expected.msl
index 584bdc7..3789fa4 100644
--- a/test/bug/tint/534.wgsl.expected.msl
+++ b/test/bug/tint/534.wgsl.expected.msl
@@ -15,32 +15,32 @@
return 1u;
}
-void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2) {
+void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, const constant Uniforms* const tint_symbol_2, texture2d<float, access::sample> tint_symbol_3, device OutputBuf* const tint_symbol_4) {
int2 size = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height());
int2 dstTexCoord = int2(uint3(GlobalInvocationID).xy);
int2 srcTexCoord = dstTexCoord;
- if ((uniforms.dstTextureFlipY == 1u)) {
+ if (((*(tint_symbol_2)).dstTextureFlipY == 1u)) {
srcTexCoord[1] = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(size[1]) - as_type<uint>(dstTexCoord[1])))) - as_type<uint>(1)));
}
float4 srcColor = tint_symbol_1.read(uint2(srcTexCoord), 0);
- float4 dstColor = tint_symbol_2.read(uint2(dstTexCoord), 0);
+ float4 dstColor = tint_symbol_3.read(uint2(dstTexCoord), 0);
bool success = true;
uint4 srcColorBits = 0u;
uint4 dstColorBits = uint4(dstColor);
- for(uint i = 0u; (i < uniforms.channelCount); i = (i + 1u)) {
+ for(uint i = 0u; (i < (*(tint_symbol_2)).channelCount); i = (i + 1u)) {
srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]);
success = (success && (srcColorBits[i] == dstColorBits[i]));
}
uint outputIndex = ((GlobalInvocationID[1] * uint(size[0])) + GlobalInvocationID[0]);
if (success) {
- output.result[outputIndex] = uint(1);
+ (*(tint_symbol_4)).result[outputIndex] = uint(1);
} else {
- output.result[outputIndex] = uint(0);
+ (*(tint_symbol_4)).result[outputIndex] = uint(0);
}
}
-kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_3 [[texture(0)]], texture2d<float, access::sample> tint_symbol_4 [[texture(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(0)]], device OutputBuf& output [[buffer(1)]]) {
- tint_symbol_inner(uniforms, output, GlobalInvocationID, tint_symbol_3, tint_symbol_4);
+kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_5 [[texture(0)]], const constant Uniforms* tint_symbol_6 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_7 [[texture(1)]], device OutputBuf* tint_symbol_8 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+ tint_symbol_inner(GlobalInvocationID, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8);
return;
}
diff --git a/test/bug/tint/744.wgsl.expected.msl b/test/bug/tint/744.wgsl.expected.msl
index 1a3cffa..6a70809 100644
--- a/test/bug/tint/744.wgsl.expected.msl
+++ b/test/bug/tint/744.wgsl.expected.msl
@@ -10,22 +10,22 @@
/* 0x0000 */ uint numbers[1];
};
-void tint_symbol_inner(constant Uniforms& uniforms, const device Matrix& firstMatrix, const device Matrix& secondMatrix, device Matrix& resultMatrix, uint3 global_id) {
+void tint_symbol_inner(uint3 global_id, const constant Uniforms* const tint_symbol_1, const device Matrix* const tint_symbol_2, const device Matrix* const tint_symbol_3, device Matrix* const tint_symbol_4) {
uint2 const resultCell = uint2(global_id[1], global_id[0]);
- uint const dimInner = uniforms.aShape[1];
- uint const dimOutter = uniforms.outShape[1];
+ uint const dimInner = (*(tint_symbol_1)).aShape[1];
+ uint const dimOutter = (*(tint_symbol_1)).outShape[1];
uint result = 0u;
for(uint i = 0u; (i < dimInner); i = (i + 1u)) {
uint const a = (i + (resultCell[0] * dimInner));
uint const b = (resultCell[1] + (i * dimOutter));
- result = (result + (firstMatrix.numbers[a] * secondMatrix.numbers[b]));
+ result = (result + ((*(tint_symbol_2)).numbers[a] * (*(tint_symbol_3)).numbers[b]));
}
uint const index = (resultCell[1] + (resultCell[0] * dimOutter));
- resultMatrix.numbers[index] = result;
+ (*(tint_symbol_4)).numbers[index] = result;
}
-kernel void tint_symbol(uint3 global_id [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(0)]], const device Matrix& firstMatrix [[buffer(2)]], const device Matrix& secondMatrix [[buffer(3)]], device Matrix& resultMatrix [[buffer(1)]]) {
- tint_symbol_inner(uniforms, firstMatrix, secondMatrix, resultMatrix, global_id);
+kernel void tint_symbol(const constant Uniforms* tint_symbol_5 [[buffer(0)]], const device Matrix* tint_symbol_6 [[buffer(2)]], const device Matrix* tint_symbol_7 [[buffer(3)]], device Matrix* tint_symbol_8 [[buffer(1)]], uint3 global_id [[thread_position_in_grid]]) {
+ tint_symbol_inner(global_id, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8);
return;
}
diff --git a/test/bug/tint/749.spvasm.expected.msl b/test/bug/tint/749.spvasm.expected.msl
index 7717716..ff56ca2 100644
--- a/test/bug/tint/749.spvasm.expected.msl
+++ b/test/bug/tint/749.spvasm.expected.msl
@@ -804,7 +804,7 @@
return;
}
-void main_1(constant buf0& x_188, thread QuicksortObject* const tint_symbol_84, thread float4* const tint_symbol_85, thread float4* const tint_symbol_86) {
+void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const tint_symbol_85, const constant buf0* const tint_symbol_86, thread float4* const tint_symbol_87) {
float3 color = 0.0f;
int i_2 = 0;
float2 uv = 0.0f;
@@ -871,7 +871,7 @@
float2 const x_762 = uv;
uv = float2(0.0f, 0.0f);
uv = x_762;
- float2 const x_191 = x_188.resolution;
+ float2 const x_191 = (*(tint_symbol_86)).resolution;
QuicksortObject const x_763 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_48 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_49 = {.numbers=tint_symbol_48};
@@ -1534,7 +1534,7 @@
float const x_929 = uv[0];
uv[0] = 0.0f;
uv[0] = x_929;
- *(tint_symbol_86) = x_330;
+ *(tint_symbol_87) = x_330;
QuicksortObject const x_930 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_78 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_79 = {.numbers=tint_symbol_78};
@@ -1547,18 +1547,18 @@
return;
}
-main_out tint_symbol_inner(constant buf0& x_188, float4 gl_FragCoord_param, thread float4* const tint_symbol_87, thread QuicksortObject* const tint_symbol_88, thread float4* const tint_symbol_89) {
- *(tint_symbol_87) = gl_FragCoord_param;
- main_1(x_188, tint_symbol_88, tint_symbol_87, tint_symbol_89);
- main_out const tint_symbol_80 = {.x_GLF_color_1=*(tint_symbol_89)};
+main_out tint_symbol_inner(float4 gl_FragCoord_param, thread float4* const tint_symbol_88, thread QuicksortObject* const tint_symbol_89, const constant buf0* const tint_symbol_90, thread float4* const tint_symbol_91) {
+ *(tint_symbol_88) = gl_FragCoord_param;
+ main_1(tint_symbol_89, tint_symbol_88, tint_symbol_90, tint_symbol_91);
+ main_out const tint_symbol_80 = {.x_GLF_color_1=*(tint_symbol_91)};
return tint_symbol_80;
}
-fragment tint_symbol_1 tint_symbol(float4 gl_FragCoord_param [[position]], constant buf0& x_188 [[buffer(0)]]) {
- thread float4 tint_symbol_90 = 0.0f;
- thread QuicksortObject tint_symbol_91 = {};
+fragment tint_symbol_1 tint_symbol(const constant buf0* tint_symbol_94 [[buffer(0)]], float4 gl_FragCoord_param [[position]]) {
thread float4 tint_symbol_92 = 0.0f;
- main_out const inner_result = tint_symbol_inner(x_188, gl_FragCoord_param, &(tint_symbol_90), &(tint_symbol_91), &(tint_symbol_92));
+ thread QuicksortObject tint_symbol_93 = {};
+ thread float4 tint_symbol_95 = 0.0f;
+ main_out const inner_result = tint_symbol_inner(gl_FragCoord_param, &(tint_symbol_92), &(tint_symbol_93), tint_symbol_94, &(tint_symbol_95));
tint_symbol_1 wrapper_result = {};
wrapper_result.x_GLF_color_1 = inner_result.x_GLF_color_1;
return wrapper_result;
diff --git a/test/bug/tint/757.wgsl.expected.msl b/test/bug/tint/757.wgsl.expected.msl
index 809bed6..b06bf8d 100644
--- a/test/bug/tint/757.wgsl.expected.msl
+++ b/test/bug/tint/757.wgsl.expected.msl
@@ -2,23 +2,23 @@
using namespace metal;
struct Constants {
- /* 0x0000 */ int level;
+ int level;
};
struct Result {
/* 0x0000 */ float values[1];
};
-void tint_symbol_inner(device Result& result, uint3 GlobalInvocationID, texture2d_array<float, access::sample> tint_symbol_1) {
+void tint_symbol_inner(uint3 GlobalInvocationID, texture2d_array<float, access::sample> tint_symbol_1, device Result* const tint_symbol_2) {
uint flatIndex = ((((2u * 2u) * GlobalInvocationID[2]) + (2u * GlobalInvocationID[1])) + GlobalInvocationID[0]);
flatIndex = (flatIndex * 1u);
float4 texel = tint_symbol_1.read(uint2(int2(uint3(GlobalInvocationID).xy)), 0, 0);
for(uint i = 0u; (i < 1u); i = (i + 1u)) {
- result.values[(flatIndex + i)] = texel[0];
+ (*(tint_symbol_2)).values[(flatIndex + i)] = texel[0];
}
}
-kernel void tint_symbol(texture2d_array<float, access::sample> tint_symbol_2 [[texture(0)]], uint3 GlobalInvocationID [[thread_position_in_grid]], device Result& result [[buffer(0)]]) {
- tint_symbol_inner(result, GlobalInvocationID, tint_symbol_2);
+kernel void tint_symbol(texture2d_array<float, access::sample> tint_symbol_3 [[texture(0)]], device Result* tint_symbol_4 [[buffer(0)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+ tint_symbol_inner(GlobalInvocationID, tint_symbol_3, tint_symbol_4);
return;
}
diff --git a/test/bug/tint/827.wgsl.expected.msl b/test/bug/tint/827.wgsl.expected.msl
index b11495f..d144792 100644
--- a/test/bug/tint/827.wgsl.expected.msl
+++ b/test/bug/tint/827.wgsl.expected.msl
@@ -6,12 +6,12 @@
};
constant uint width = 128u;
-void tint_symbol_inner(device Result& result, uint3 GlobalInvocationId, depth2d<float, access::sample> tint_symbol_1) {
- result.values[((GlobalInvocationId[1] * width) + GlobalInvocationId[0])] = tint_symbol_1.read(uint2(int2(int(GlobalInvocationId[0]), int(GlobalInvocationId[1]))), 0);
+void tint_symbol_inner(uint3 GlobalInvocationId, device Result* const tint_symbol_1, depth2d<float, access::sample> tint_symbol_2) {
+ (*(tint_symbol_1)).values[((GlobalInvocationId[1] * width) + GlobalInvocationId[0])] = tint_symbol_2.read(uint2(int2(int(GlobalInvocationId[0]), int(GlobalInvocationId[1]))), 0);
}
-kernel void tint_symbol(depth2d<float, access::sample> tint_symbol_2 [[texture(0)]], uint3 GlobalInvocationId [[thread_position_in_grid]], device Result& result [[buffer(0)]]) {
- tint_symbol_inner(result, GlobalInvocationId, tint_symbol_2);
+kernel void tint_symbol(device Result* tint_symbol_3 [[buffer(0)]], depth2d<float, access::sample> tint_symbol_4 [[texture(0)]], uint3 GlobalInvocationId [[thread_position_in_grid]]) {
+ tint_symbol_inner(GlobalInvocationId, tint_symbol_3, tint_symbol_4);
return;
}
diff --git a/test/bug/tint/870.spvasm.expected.msl b/test/bug/tint/870.spvasm.expected.msl
index cb5ce5f..1f0eed8 100644
--- a/test/bug/tint/870.spvasm.expected.msl
+++ b/test/bug/tint/870.spvasm.expected.msl
@@ -14,9 +14,9 @@
/* 0x0000 */ sspp962805860buildInformationS passthru;
};
-void main_1(const device x_B4_BuildInformation& sspp962805860buildInformation) {
+void main_1(const device x_B4_BuildInformation* const tint_symbol_1) {
tint_array_wrapper orientation = {};
- tint_array_wrapper const x_23 = sspp962805860buildInformation.passthru.orientation;
+ tint_array_wrapper const x_23 = (*(tint_symbol_1)).passthru.orientation;
orientation.arr[0] = x_23.arr[0u];
orientation.arr[1] = x_23.arr[1u];
orientation.arr[2] = x_23.arr[2u];
@@ -26,8 +26,8 @@
return;
}
-fragment void tint_symbol(const device x_B4_BuildInformation& sspp962805860buildInformation [[buffer(0)]]) {
- main_1(sspp962805860buildInformation);
+fragment void tint_symbol(const device x_B4_BuildInformation* tint_symbol_2 [[buffer(0)]]) {
+ main_1(tint_symbol_2);
return;
}
diff --git a/test/bug/tint/913.wgsl.expected.msl b/test/bug/tint/913.wgsl.expected.msl
index aa299f6..e4875e8 100644
--- a/test/bug/tint/913.wgsl.expected.msl
+++ b/test/bug/tint/913.wgsl.expected.msl
@@ -16,22 +16,22 @@
return (fabs((value - expect)) < 0.001f);
}
-void tint_symbol_inner(constant Uniforms& uniforms, device OutputBuf& output, uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2) {
+void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_1, texture2d<float, access::sample> tint_symbol_2, const constant Uniforms* const tint_symbol_3, device OutputBuf* const tint_symbol_4) {
int2 const srcSize = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height());
int2 const dstSize = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
uint2 const dstTexCoord = uint2(uint3(GlobalInvocationID).xy);
float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
bool success = true;
- if (((((dstTexCoord[0] < uniforms.dstCopyOrigin[0]) || (dstTexCoord[1] < uniforms.dstCopyOrigin[1])) || (dstTexCoord[0] >= (uniforms.dstCopyOrigin[0] + uniforms.copySize[0]))) || (dstTexCoord[1] >= (uniforms.dstCopyOrigin[1] + uniforms.copySize[1])))) {
+ if (((((dstTexCoord[0] < (*(tint_symbol_3)).dstCopyOrigin[0]) || (dstTexCoord[1] < (*(tint_symbol_3)).dstCopyOrigin[1])) || (dstTexCoord[0] >= ((*(tint_symbol_3)).dstCopyOrigin[0] + (*(tint_symbol_3)).copySize[0]))) || (dstTexCoord[1] >= ((*(tint_symbol_3)).dstCopyOrigin[1] + (*(tint_symbol_3)).copySize[1])))) {
success = (success && all((tint_symbol_2.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
} else {
- uint2 srcTexCoord = ((dstTexCoord - uniforms.dstCopyOrigin) + uniforms.srcCopyOrigin);
- if ((uniforms.dstTextureFlipY == 1u)) {
+ uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_3)).dstCopyOrigin) + (*(tint_symbol_3)).srcCopyOrigin);
+ if (((*(tint_symbol_3)).dstTextureFlipY == 1u)) {
srcTexCoord[1] = ((uint(srcSize[1]) - srcTexCoord[1]) - 1u);
}
float4 const srcColor = tint_symbol_1.read(uint2(int2(srcTexCoord)), 0);
float4 const dstColor = tint_symbol_2.read(uint2(int2(dstTexCoord)), 0);
- if ((uniforms.channelCount == 2u)) {
+ if (((*(tint_symbol_3)).channelCount == 2u)) {
success = ((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1]));
} else {
success = ((((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1])) && aboutEqual(dstColor[2], srcColor[2])) && aboutEqual(dstColor[3], srcColor[3]));
@@ -39,14 +39,14 @@
}
uint const outputIndex = ((GlobalInvocationID[1] * uint(dstSize[0])) + GlobalInvocationID[0]);
if (success) {
- output.result[outputIndex] = 1u;
+ (*(tint_symbol_4)).result[outputIndex] = 1u;
} else {
- output.result[outputIndex] = 0u;
+ (*(tint_symbol_4)).result[outputIndex] = 0u;
}
}
-kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_3 [[texture(0)]], texture2d<float, access::sample> tint_symbol_4 [[texture(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]], constant Uniforms& uniforms [[buffer(0)]], device OutputBuf& output [[buffer(1)]]) {
- tint_symbol_inner(uniforms, output, GlobalInvocationID, tint_symbol_3, tint_symbol_4);
+kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_5 [[texture(0)]], texture2d<float, access::sample> tint_symbol_6 [[texture(1)]], const constant Uniforms* tint_symbol_7 [[buffer(0)]], device OutputBuf* tint_symbol_8 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
+ tint_symbol_inner(GlobalInvocationID, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8);
return;
}
diff --git a/test/bug/tint/914.wgsl.expected.msl b/test/bug/tint/914.wgsl.expected.msl
index d0f5a3e..a6830e2 100644
--- a/test/bug/tint/914.wgsl.expected.msl
+++ b/test/bug/tint/914.wgsl.expected.msl
@@ -27,42 +27,42 @@
constant uint TileAOuter = 64u;
constant uint TileBOuter = 64u;
constant uint TileInner = 64u;
-float mm_readA(constant Uniforms& uniforms, const device Matrix& firstMatrix, uint row, uint col) {
- if (((row < uniforms.dimAOuter) && (col < uniforms.dimInner))) {
- float const result = firstMatrix.numbers[((row * uniforms.dimInner) + col)];
+float mm_readA(uint row, uint col, const constant Uniforms* const tint_symbol_1, const device Matrix* const tint_symbol_2) {
+ if (((row < (*(tint_symbol_1)).dimAOuter) && (col < (*(tint_symbol_1)).dimInner))) {
+ float const result = (*(tint_symbol_2)).numbers[((row * (*(tint_symbol_1)).dimInner) + col)];
return result;
}
return 0.0f;
}
-float mm_readB(constant Uniforms& uniforms, const device Matrix& secondMatrix, uint row, uint col) {
- if (((row < uniforms.dimInner) && (col < uniforms.dimBOuter))) {
- float const result = secondMatrix.numbers[((row * uniforms.dimBOuter) + col)];
+float mm_readB(uint row, uint col, const constant Uniforms* const tint_symbol_3, const device Matrix* const tint_symbol_4) {
+ if (((row < (*(tint_symbol_3)).dimInner) && (col < (*(tint_symbol_3)).dimBOuter))) {
+ float const result = (*(tint_symbol_4)).numbers[((row * (*(tint_symbol_3)).dimBOuter) + col)];
return result;
}
return 0.0f;
}
-void mm_write(constant Uniforms& uniforms, device Matrix& resultMatrix, uint row, uint col, float value) {
- if (((row < uniforms.dimAOuter) && (col < uniforms.dimBOuter))) {
- uint const index = (col + (row * uniforms.dimBOuter));
- resultMatrix.numbers[index] = value;
+void mm_write(uint row, uint col, float value, const constant Uniforms* const tint_symbol_5, device Matrix* const tint_symbol_6) {
+ if (((row < (*(tint_symbol_5)).dimAOuter) && (col < (*(tint_symbol_5)).dimBOuter))) {
+ uint const index = (col + (row * (*(tint_symbol_5)).dimBOuter));
+ (*(tint_symbol_6)).numbers[index] = value;
}
}
-void tint_symbol_inner(constant Uniforms& uniforms, const device Matrix& firstMatrix, const device Matrix& secondMatrix, device Matrix& resultMatrix, uint3 local_id, uint3 global_id, uint local_invocation_index, threadgroup tint_array_wrapper* const tint_symbol_1, threadgroup tint_array_wrapper* const tint_symbol_2) {
+void tint_symbol_inner(uint3 local_id, uint3 global_id, uint local_invocation_index, threadgroup tint_array_wrapper* const tint_symbol_7, threadgroup tint_array_wrapper* const tint_symbol_8, const constant Uniforms* const tint_symbol_9, const device Matrix* const tint_symbol_10, const device Matrix* const tint_symbol_11, device Matrix* const tint_symbol_12) {
for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 256u)) {
uint const i = (idx / 64u);
uint const i_1 = (idx % 64u);
- (*(tint_symbol_1)).arr[i].arr[i_1] = float();
- (*(tint_symbol_2)).arr[i].arr[i_1] = float();
+ (*(tint_symbol_7)).arr[i].arr[i_1] = float();
+ (*(tint_symbol_8)).arr[i].arr[i_1] = float();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
uint const tileRow = (local_id[1] * RowPerThread);
uint const tileCol = (local_id[0] * ColPerThread);
uint const globalRow = (global_id[1] * RowPerThread);
uint const globalCol = (global_id[0] * ColPerThread);
- uint const numTiles = (((uniforms.dimInner - 1u) / TileInner) + 1u);
+ uint const numTiles = ((((*(tint_symbol_9)).dimInner - 1u) / TileInner) + 1u);
tint_array_wrapper_2 acc = {};
float ACached = 0.0f;
tint_array_wrapper_3 BCached = {};
@@ -78,23 +78,23 @@
for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
uint const inputRow = (tileRow + innerRow);
uint const inputCol = (tileColA + innerCol);
- (*(tint_symbol_1)).arr[inputRow].arr[inputCol] = mm_readA(uniforms, firstMatrix, (globalRow + innerRow), ((t * TileInner) + inputCol));
+ (*(tint_symbol_7)).arr[inputRow].arr[inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol), tint_symbol_9, tint_symbol_10);
}
}
for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
uint const inputRow = (tileRowB + innerRow);
uint const inputCol = (tileCol + innerCol);
- (*(tint_symbol_2)).arr[innerCol].arr[inputCol] = mm_readB(uniforms, secondMatrix, ((t * TileInner) + inputRow), (globalCol + innerCol));
+ (*(tint_symbol_8)).arr[innerCol].arr[inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol), tint_symbol_9, tint_symbol_11);
}
}
threadgroup_barrier(mem_flags::mem_threadgroup);
for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
- BCached.arr[inner] = (*(tint_symbol_2)).arr[k].arr[(tileCol + inner)];
+ BCached.arr[inner] = (*(tint_symbol_8)).arr[k].arr[(tileCol + inner)];
}
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
- ACached = (*(tint_symbol_1)).arr[(tileRow + innerRow)].arr[k];
+ ACached = (*(tint_symbol_7)).arr[(tileRow + innerRow)].arr[k];
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
uint const index = ((innerRow * ColPerThread) + innerCol);
acc.arr[index] = (acc.arr[index] + (ACached * BCached.arr[innerCol]));
@@ -106,15 +106,15 @@
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
uint const index = ((innerRow * ColPerThread) + innerCol);
- mm_write(uniforms, resultMatrix, (globalRow + innerRow), (globalCol + innerCol), acc.arr[index]);
+ mm_write((globalRow + innerRow), (globalCol + innerCol), acc.arr[index], tint_symbol_9, tint_symbol_12);
}
}
}
-kernel void tint_symbol(uint3 local_id [[thread_position_in_threadgroup]], uint3 global_id [[thread_position_in_grid]], uint local_invocation_index [[thread_index_in_threadgroup]], constant Uniforms& uniforms [[buffer(0)]], const device Matrix& firstMatrix [[buffer(2)]], const device Matrix& secondMatrix [[buffer(3)]], device Matrix& resultMatrix [[buffer(1)]]) {
- threadgroup tint_array_wrapper tint_symbol_3;
- threadgroup tint_array_wrapper tint_symbol_4;
- tint_symbol_inner(uniforms, firstMatrix, secondMatrix, resultMatrix, local_id, global_id, local_invocation_index, &(tint_symbol_3), &(tint_symbol_4));
+kernel void tint_symbol(const constant Uniforms* tint_symbol_15 [[buffer(0)]], const device Matrix* tint_symbol_16 [[buffer(2)]], const device Matrix* tint_symbol_17 [[buffer(3)]], device Matrix* tint_symbol_18 [[buffer(1)]], uint3 local_id [[thread_position_in_threadgroup]], uint3 global_id [[thread_position_in_grid]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
+ threadgroup tint_array_wrapper tint_symbol_13;
+ threadgroup tint_array_wrapper tint_symbol_14;
+ tint_symbol_inner(local_id, global_id, local_invocation_index, &(tint_symbol_13), &(tint_symbol_14), tint_symbol_15, tint_symbol_16, tint_symbol_17, tint_symbol_18);
return;
}
diff --git a/test/bug/tint/922.wgsl.expected.msl b/test/bug/tint/922.wgsl.expected.msl
index c1aa861..992c587 100644
--- a/test/bug/tint/922.wgsl.expected.msl
+++ b/test/bug/tint/922.wgsl.expected.msl
@@ -222,77 +222,77 @@
return x_e12;
}
-void main1(constant ub_PacketParams& global2, constant ub_SceneParams& global, constant ub_MaterialParams& global1, thread float* const tint_symbol_5, thread float3* const tint_symbol_6, thread float4* const tint_symbol_7, thread float4* const tint_symbol_8, thread float4* const tint_symbol_9, thread float3* const tint_symbol_10, thread float2* const tint_symbol_11, thread float2* const tint_symbol_12) {
+void main1(thread float* const tint_symbol_5, const constant ub_PacketParams* const tint_symbol_6, thread float3* const tint_symbol_7, const constant ub_SceneParams* const tint_symbol_8, thread float4* const tint_symbol_9, thread float4* const tint_symbol_10, thread float4* const tint_symbol_11, const constant ub_MaterialParams* const tint_symbol_12, thread float3* const tint_symbol_13, thread float2* const tint_symbol_14, thread float2* const tint_symbol_15) {
Mat4x3_ t_PosMtx = {};
float2 t_TexSpaceCoord = 0.0f;
float const x_e15 = *(tint_symbol_5);
- Mat4x3_ const x_e18 = global2.u_PosMtx.arr[int(x_e15)];
+ Mat4x3_ const x_e18 = (*(tint_symbol_6)).u_PosMtx.arr[int(x_e15)];
t_PosMtx = x_e18;
Mat4x3_ const x_e23 = t_PosMtx;
Mat4x4_ const x_e24 = x_Mat4x4_1(x_e23);
- float3 const x_e25 = *(tint_symbol_6);
+ float3 const x_e25 = *(tint_symbol_7);
Mat4x3_ const x_e29 = t_PosMtx;
Mat4x4_ const x_e30 = x_Mat4x4_1(x_e29);
- float3 const x_e31 = *(tint_symbol_6);
+ float3 const x_e31 = *(tint_symbol_7);
float4 const x_e34 = Mul(x_e30, float4(x_e31, 1.0f));
- Mat4x4_ const x_e35 = global.u_Projection;
+ Mat4x4_ const x_e35 = (*(tint_symbol_8)).u_Projection;
Mat4x3_ const x_e37 = t_PosMtx;
Mat4x4_ const x_e38 = x_Mat4x4_1(x_e37);
- float3 const x_e39 = *(tint_symbol_6);
+ float3 const x_e39 = *(tint_symbol_7);
Mat4x3_ const x_e43 = t_PosMtx;
Mat4x4_ const x_e44 = x_Mat4x4_1(x_e43);
- float3 const x_e45 = *(tint_symbol_6);
+ float3 const x_e45 = *(tint_symbol_7);
float4 const x_e48 = Mul(x_e44, float4(x_e45, 1.0f));
float4 const x_e49 = Mul(x_e35, x_e48);
- *(tint_symbol_7) = x_e49;
- float4 const x_e50 = *(tint_symbol_8);
- *(tint_symbol_9) = x_e50;
- float4 const x_e52 = global1.u_Misc0_;
+ *(tint_symbol_9) = x_e49;
+ float4 const x_e50 = *(tint_symbol_10);
+ *(tint_symbol_11) = x_e50;
+ float4 const x_e52 = (*(tint_symbol_12)).u_Misc0_;
if ((x_e52[0] == 2.0f)) {
{
- float3 const x_e59 = *(tint_symbol_10);
- Mat4x2_ const x_e64 = global1.u_TexMtx.arr[0];
- float3 const x_e65 = *(tint_symbol_10);
+ float3 const x_e59 = *(tint_symbol_13);
+ Mat4x2_ const x_e64 = (*(tint_symbol_12)).u_TexMtx.arr[0];
+ float3 const x_e65 = *(tint_symbol_13);
float2 const x_e68 = Mul2(x_e64, float4(x_e65, 1.0f));
- *(tint_symbol_11) = float2(x_e68).xy;
+ *(tint_symbol_14) = float2(x_e68).xy;
return;
}
} else {
{
- float2 const x_e73 = *(tint_symbol_12);
- Mat4x2_ const x_e79 = global1.u_TexMtx.arr[0];
- float2 const x_e80 = *(tint_symbol_12);
+ float2 const x_e73 = *(tint_symbol_15);
+ Mat4x2_ const x_e79 = (*(tint_symbol_12)).u_TexMtx.arr[0];
+ float2 const x_e80 = *(tint_symbol_15);
float2 const x_e84 = Mul2(x_e79, float4(x_e80, 1.0f, 1.0f));
- *(tint_symbol_11) = float2(x_e84).xy;
+ *(tint_symbol_14) = float2(x_e84).xy;
return;
}
}
}
-VertexOutput tint_symbol_inner(constant ub_PacketParams& global2, constant ub_SceneParams& global, constant ub_MaterialParams& global1, float3 a_Position, float2 a_UV, float4 a_Color, float3 a_Normal, float a_PosMtxIdx, thread float3* const tint_symbol_13, thread float2* const tint_symbol_14, thread float4* const tint_symbol_15, thread float3* const tint_symbol_16, thread float* const tint_symbol_17, thread float4* const tint_symbol_18, thread float4* const tint_symbol_19, thread float2* const tint_symbol_20) {
- *(tint_symbol_13) = a_Position;
- *(tint_symbol_14) = a_UV;
- *(tint_symbol_15) = a_Color;
- *(tint_symbol_16) = a_Normal;
- *(tint_symbol_17) = a_PosMtxIdx;
- main1(global2, global, global1, tint_symbol_17, tint_symbol_13, tint_symbol_18, tint_symbol_15, tint_symbol_19, tint_symbol_16, tint_symbol_20, tint_symbol_14);
- float4 const x_e11 = *(tint_symbol_19);
- float2 const x_e13 = *(tint_symbol_20);
- float4 const x_e15 = *(tint_symbol_18);
+VertexOutput tint_symbol_inner(float3 a_Position, float2 a_UV, float4 a_Color, float3 a_Normal, float a_PosMtxIdx, thread float3* const tint_symbol_16, thread float2* const tint_symbol_17, thread float4* const tint_symbol_18, thread float3* const tint_symbol_19, thread float* const tint_symbol_20, const constant ub_PacketParams* const tint_symbol_21, const constant ub_SceneParams* const tint_symbol_22, thread float4* const tint_symbol_23, thread float4* const tint_symbol_24, const constant ub_MaterialParams* const tint_symbol_25, thread float2* const tint_symbol_26) {
+ *(tint_symbol_16) = a_Position;
+ *(tint_symbol_17) = a_UV;
+ *(tint_symbol_18) = a_Color;
+ *(tint_symbol_19) = a_Normal;
+ *(tint_symbol_20) = a_PosMtxIdx;
+ main1(tint_symbol_20, tint_symbol_21, tint_symbol_16, tint_symbol_22, tint_symbol_23, tint_symbol_18, tint_symbol_24, tint_symbol_25, tint_symbol_19, tint_symbol_26, tint_symbol_17);
+ float4 const x_e11 = *(tint_symbol_24);
+ float2 const x_e13 = *(tint_symbol_26);
+ float4 const x_e15 = *(tint_symbol_23);
VertexOutput const tint_symbol_4 = {.v_Color=x_e11, .v_TexCoord=x_e13, .member=x_e15};
return tint_symbol_4;
}
-vertex tint_symbol_3 tint_symbol(tint_symbol_2 tint_symbol_1 [[stage_in]], constant ub_PacketParams& global2 [[buffer(0)]], constant ub_SceneParams& global [[buffer(1)]], constant ub_MaterialParams& global1 [[buffer(2)]]) {
- thread float3 tint_symbol_21 = 0.0f;
- thread float2 tint_symbol_22 = 0.0f;
- thread float4 tint_symbol_23 = 0.0f;
- thread float3 tint_symbol_24 = 0.0f;
- thread float tint_symbol_25 = 0.0f;
- thread float4 tint_symbol_26 = 0.0f;
- thread float4 tint_symbol_27 = 0.0f;
+vertex tint_symbol_3 tint_symbol(const constant ub_PacketParams* tint_symbol_32 [[buffer(0)]], const constant ub_SceneParams* tint_symbol_33 [[buffer(1)]], const constant ub_MaterialParams* tint_symbol_36 [[buffer(2)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+ thread float3 tint_symbol_27 = 0.0f;
thread float2 tint_symbol_28 = 0.0f;
- VertexOutput const inner_result = tint_symbol_inner(global2, global, global1, tint_symbol_1.a_Position, tint_symbol_1.a_UV, tint_symbol_1.a_Color, tint_symbol_1.a_Normal, tint_symbol_1.a_PosMtxIdx, &(tint_symbol_21), &(tint_symbol_22), &(tint_symbol_23), &(tint_symbol_24), &(tint_symbol_25), &(tint_symbol_26), &(tint_symbol_27), &(tint_symbol_28));
+ thread float4 tint_symbol_29 = 0.0f;
+ thread float3 tint_symbol_30 = 0.0f;
+ thread float tint_symbol_31 = 0.0f;
+ thread float4 tint_symbol_34 = 0.0f;
+ thread float4 tint_symbol_35 = 0.0f;
+ thread float2 tint_symbol_37 = 0.0f;
+ VertexOutput const inner_result = tint_symbol_inner(tint_symbol_1.a_Position, tint_symbol_1.a_UV, tint_symbol_1.a_Color, tint_symbol_1.a_Normal, tint_symbol_1.a_PosMtxIdx, &(tint_symbol_27), &(tint_symbol_28), &(tint_symbol_29), &(tint_symbol_30), &(tint_symbol_31), tint_symbol_32, tint_symbol_33, &(tint_symbol_34), &(tint_symbol_35), tint_symbol_36, &(tint_symbol_37));
tint_symbol_3 wrapper_result = {};
wrapper_result.v_Color = inner_result.v_Color;
wrapper_result.v_TexCoord = inner_result.v_TexCoord;
diff --git a/test/bug/tint/926.wgsl.expected.msl b/test/bug/tint/926.wgsl.expected.msl
index b433b57..8da55f6 100644
--- a/test/bug/tint/926.wgsl.expected.msl
+++ b/test/bug/tint/926.wgsl.expected.msl
@@ -5,13 +5,13 @@
/* 0x0000 */ atomic_uint vertexCount;
};
-void computeMain_inner(device DrawIndirectArgs& drawOut, uint3 global_id, thread uint* const tint_symbol) {
- uint const firstVertex = atomic_fetch_add_explicit(&(drawOut.vertexCount), *(tint_symbol), memory_order_relaxed);
+void computeMain_inner(uint3 global_id, device DrawIndirectArgs* const tint_symbol, thread uint* const tint_symbol_1) {
+ uint const firstVertex = atomic_fetch_add_explicit(&((*(tint_symbol)).vertexCount), *(tint_symbol_1), memory_order_relaxed);
}
-kernel void computeMain(uint3 global_id [[thread_position_in_grid]], device DrawIndirectArgs& drawOut [[buffer(0)]]) {
- thread uint tint_symbol_1 = 0u;
- computeMain_inner(drawOut, global_id, &(tint_symbol_1));
+kernel void computeMain(device DrawIndirectArgs* tint_symbol_2 [[buffer(0)]], uint3 global_id [[thread_position_in_grid]]) {
+ thread uint tint_symbol_3 = 0u;
+ computeMain_inner(global_id, tint_symbol_2, &(tint_symbol_3));
return;
}
diff --git a/test/bug/tint/942.wgsl.expected.msl b/test/bug/tint/942.wgsl.expected.msl
index 510cfec..519443a 100644
--- a/test/bug/tint/942.wgsl.expected.msl
+++ b/test/bug/tint/942.wgsl.expected.msl
@@ -15,48 +15,48 @@
tint_array_wrapper_1 arr[4];
};
-void tint_symbol_inner(constant Params& params, constant Flip& flip, uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocation_index, threadgroup tint_array_wrapper* const tint_symbol_1, texture2d<float, access::sample> tint_symbol_2, sampler tint_symbol_3, texture2d<float, access::write> tint_symbol_4) {
+void tint_symbol_inner(uint3 WorkGroupID, uint3 LocalInvocationID, uint local_invocation_index, threadgroup tint_array_wrapper* const tint_symbol_1, const constant Params* const tint_symbol_2, texture2d<float, access::sample> tint_symbol_3, const constant Flip* const tint_symbol_4, sampler tint_symbol_5, texture2d<float, access::write> tint_symbol_6) {
for(uint idx = local_invocation_index; (idx < 1024u); idx = (idx + 64u)) {
uint const i_1 = (idx / 256u);
uint const i_2 = (idx % 256u);
(*(tint_symbol_1)).arr[i_1].arr[i_2] = float3();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
- uint const filterOffset = ((params.filterDim - 1u) / 2u);
- int2 const dims = int2(tint_symbol_2.get_width(0), tint_symbol_2.get_height(0));
- int2 const baseIndex = as_type<int2>((as_type<uint2>(int2(((uint3(WorkGroupID).xy * uint2(params.blockDim, 4u)) + (uint3(LocalInvocationID).xy * uint2(4u, 1u))))) - as_type<uint2>(int2(int(filterOffset), 0))));
+ uint const filterOffset = (((*(tint_symbol_2)).filterDim - 1u) / 2u);
+ int2 const dims = int2(tint_symbol_3.get_width(0), tint_symbol_3.get_height(0));
+ int2 const baseIndex = as_type<int2>((as_type<uint2>(int2(((uint3(WorkGroupID).xy * uint2((*(tint_symbol_2)).blockDim, 4u)) + (uint3(LocalInvocationID).xy * uint2(4u, 1u))))) - as_type<uint2>(int2(int(filterOffset), 0))));
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
int2 loadIndex = as_type<int2>((as_type<uint2>(baseIndex) + as_type<uint2>(int2(int(c), int(r)))));
- if ((flip.value != 0u)) {
+ if (((*(tint_symbol_4)).value != 0u)) {
loadIndex = int2(loadIndex).yx;
}
- (*(tint_symbol_1)).arr[r].arr[((4u * LocalInvocationID[0]) + c)] = float4(tint_symbol_2.sample(tint_symbol_3, ((float2(loadIndex) + float2(0.25f, 0.25f)) / float2(dims)), level(0.0f))).rgb;
+ (*(tint_symbol_1)).arr[r].arr[((4u * LocalInvocationID[0]) + c)] = float4(tint_symbol_3.sample(tint_symbol_5, ((float2(loadIndex) + float2(0.25f, 0.25f)) / float2(dims)), level(0.0f))).rgb;
}
}
threadgroup_barrier(mem_flags::mem_threadgroup);
for(uint r = 0u; (r < 4u); r = (r + 1u)) {
for(uint c = 0u; (c < 4u); c = (c + 1u)) {
int2 writeIndex = as_type<int2>((as_type<uint2>(baseIndex) + as_type<uint2>(int2(int(c), int(r)))));
- if ((flip.value != 0u)) {
+ if (((*(tint_symbol_4)).value != 0u)) {
writeIndex = int2(writeIndex).yx;
}
uint const center = ((4u * LocalInvocationID[0]) + c);
if ((((center >= filterOffset) && (center < (256u - filterOffset))) && all((writeIndex < dims)))) {
float3 acc = float3(0.0f, 0.0f, 0.0f);
- for(uint f = 0u; (f < params.filterDim); f = (f + 1u)) {
+ for(uint f = 0u; (f < (*(tint_symbol_2)).filterDim); f = (f + 1u)) {
uint i = ((center + f) - filterOffset);
- acc = (acc + ((1.0f / float(params.filterDim)) * (*(tint_symbol_1)).arr[r].arr[i]));
+ acc = (acc + ((1.0f / float((*(tint_symbol_2)).filterDim)) * (*(tint_symbol_1)).arr[r].arr[i]));
}
- tint_symbol_4.write(float4(acc, 1.0f), uint2(writeIndex));
+ tint_symbol_6.write(float4(acc, 1.0f), uint2(writeIndex));
}
}
}
}
-kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_6 [[texture(0)]], sampler tint_symbol_7 [[sampler(0)]], texture2d<float, access::write> tint_symbol_8 [[texture(1)]], uint3 WorkGroupID [[threadgroup_position_in_grid]], uint3 LocalInvocationID [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]], constant Params& params [[buffer(0)]], constant Flip& flip [[buffer(1)]]) {
- threadgroup tint_array_wrapper tint_symbol_5;
- tint_symbol_inner(params, flip, WorkGroupID, LocalInvocationID, local_invocation_index, &(tint_symbol_5), tint_symbol_6, tint_symbol_7, tint_symbol_8);
+kernel void tint_symbol(const constant Params* tint_symbol_8 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_9 [[texture(0)]], const constant Flip* tint_symbol_10 [[buffer(1)]], sampler tint_symbol_11 [[sampler(0)]], texture2d<float, access::write> tint_symbol_12 [[texture(1)]], uint3 WorkGroupID [[threadgroup_position_in_grid]], uint3 LocalInvocationID [[thread_position_in_threadgroup]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
+ threadgroup tint_array_wrapper tint_symbol_7;
+ tint_symbol_inner(WorkGroupID, LocalInvocationID, local_invocation_index, &(tint_symbol_7), tint_symbol_8, tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12);
return;
}
diff --git a/test/bug/tint/943.spvasm.expected.msl b/test/bug/tint/943.spvasm.expected.msl
index d3178ac..99ab48c 100644
--- a/test/bug/tint/943.spvasm.expected.msl
+++ b/test/bug/tint/943.spvasm.expected.msl
@@ -53,28 +53,28 @@
return x_88;
}
-float mm_readA_i1_i1_(constant Uniforms& x_48, const device ssbA& x_165, thread int* const row, thread int* const col, thread int* const tint_symbol_2, thread int* const tint_symbol_3, thread int* const tint_symbol_4) {
+float mm_readA_i1_i1_(thread int* const row, thread int* const col, const constant Uniforms* const tint_symbol_2, thread int* const tint_symbol_3, thread int* const tint_symbol_4, thread int* const tint_symbol_5, const device ssbA* const tint_symbol_6) {
int batchASize = 0;
int2 param_10 = 0;
int2 param_11 = 0;
float x_430 = 0.0f;
- int const x_417 = x_48.aShape[1];
- int const x_419 = x_48.aShape[2];
+ int const x_417 = (*(tint_symbol_2)).aShape[1];
+ int const x_419 = (*(tint_symbol_2)).aShape[2];
batchASize = as_type<int>((as_type<uint>(x_417) * as_type<uint>(x_419)));
int const x_421 = *(row);
int const x_422 = *(col);
- int const x_424 = *(tint_symbol_2);
- int const x_425 = *(tint_symbol_3);
+ int const x_424 = *(tint_symbol_3);
+ int const x_425 = *(tint_symbol_4);
param_10 = int2(x_421, x_422);
param_11 = int2(x_424, x_425);
bool const x_429 = coordsInBounds_vi2_vi2_(&(param_10), &(param_11));
if (x_429) {
- int const x_438 = *(tint_symbol_4);
+ int const x_438 = *(tint_symbol_5);
int const x_439 = batchASize;
int const x_441 = *(row);
- int const x_442 = *(tint_symbol_3);
+ int const x_442 = *(tint_symbol_4);
int const x_445 = *(col);
- float const x_448 = x_165.A[as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_438) * as_type<uint>(x_439)))) + as_type<uint>(as_type<int>((as_type<uint>(x_441) * as_type<uint>(x_442))))))) + as_type<uint>(x_445)))];
+ float const x_448 = (*(tint_symbol_6)).A[as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_438) * as_type<uint>(x_439)))) + as_type<uint>(as_type<int>((as_type<uint>(x_441) * as_type<uint>(x_442))))))) + as_type<uint>(x_445)))];
x_430 = x_448;
} else {
x_430 = 0.0f;
@@ -83,28 +83,28 @@
return x_450;
}
-float mm_readB_i1_i1_(constant Uniforms& x_48, const device ssbB& x_185, thread int* const row_1, thread int* const col_1, thread int* const tint_symbol_5, thread int* const tint_symbol_6, thread int* const tint_symbol_7) {
+float mm_readB_i1_i1_(thread int* const row_1, thread int* const col_1, const constant Uniforms* const tint_symbol_7, thread int* const tint_symbol_8, thread int* const tint_symbol_9, thread int* const tint_symbol_10, const device ssbB* const tint_symbol_11) {
int batchBSize = 0;
int2 param_12 = 0;
int2 param_13 = 0;
float x_468 = 0.0f;
- int const x_455 = x_48.bShape[1];
- int const x_457 = x_48.bShape[2];
+ int const x_455 = (*(tint_symbol_7)).bShape[1];
+ int const x_457 = (*(tint_symbol_7)).bShape[2];
batchBSize = as_type<int>((as_type<uint>(x_455) * as_type<uint>(x_457)));
int const x_459 = *(row_1);
int const x_460 = *(col_1);
- int const x_462 = *(tint_symbol_5);
- int const x_463 = *(tint_symbol_6);
+ int const x_462 = *(tint_symbol_8);
+ int const x_463 = *(tint_symbol_9);
param_12 = int2(x_459, x_460);
param_13 = int2(x_462, x_463);
bool const x_467 = coordsInBounds_vi2_vi2_(&(param_12), &(param_13));
if (x_467) {
- int const x_475 = *(tint_symbol_7);
+ int const x_475 = *(tint_symbol_10);
int const x_476 = batchBSize;
int const x_478 = *(row_1);
- int const x_479 = *(tint_symbol_6);
+ int const x_479 = *(tint_symbol_9);
int const x_482 = *(col_1);
- float const x_485 = x_185.B[as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_475) * as_type<uint>(x_476)))) + as_type<uint>(as_type<int>((as_type<uint>(x_478) * as_type<uint>(x_479))))))) + as_type<uint>(x_482)))];
+ float const x_485 = (*(tint_symbol_11)).B[as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_475) * as_type<uint>(x_476)))) + as_type<uint>(as_type<int>((as_type<uint>(x_478) * as_type<uint>(x_479))))))) + as_type<uint>(x_482)))];
x_468 = x_485;
} else {
x_468 = 0.0f;
@@ -113,21 +113,21 @@
return x_487;
}
-int getOutputFlatIndex_vi3_(constant Uniforms& x_48, thread int3* const coords) {
+int getOutputFlatIndex_vi3_(thread int3* const coords, const constant Uniforms* const tint_symbol_12) {
int3 const x_99 = *(coords);
- int const x_105 = x_48.outShapeStrides[0];
- int const x_107 = x_48.outShapeStrides[1];
+ int const x_105 = (*(tint_symbol_12)).outShapeStrides[0];
+ int const x_107 = (*(tint_symbol_12)).outShapeStrides[1];
return int(dot(float3(x_99), float3(int3(x_105, x_107, 1))));
}
-void setOutput_i1_f1_(device ssbOut& x_54, thread int* const flatIndex, thread float* const value) {
+void setOutput_i1_f1_(thread int* const flatIndex, thread float* const value, device ssbOut* const tint_symbol_13) {
int const x_95 = *(flatIndex);
float const x_96 = *(value);
- x_54.result[x_95] = x_96;
+ (*(tint_symbol_13)).result[x_95] = x_96;
return;
}
-void setOutput_i1_i1_i1_f1_(constant Uniforms& x_48, device ssbOut& x_54, thread int* const d0, thread int* const d1, thread int* const d2, thread float* const value_1) {
+void setOutput_i1_i1_i1_f1_(thread int* const d0, thread int* const d1, thread int* const d2, thread float* const value_1, const constant Uniforms* const tint_symbol_14, device ssbOut* const tint_symbol_15) {
int flatIndex_1 = 0;
int3 param = 0;
int param_1 = 0;
@@ -136,27 +136,27 @@
int const x_116 = *(d1);
int const x_117 = *(d2);
param = int3(x_115, x_116, x_117);
- int const x_120 = getOutputFlatIndex_vi3_(x_48, &(param));
+ int const x_120 = getOutputFlatIndex_vi3_(&(param), tint_symbol_14);
flatIndex_1 = x_120;
int const x_122 = flatIndex_1;
param_1 = x_122;
float const x_124 = *(value_1);
param_2 = x_124;
- setOutput_i1_f1_(x_54, &(param_1), &(param_2));
+ setOutput_i1_f1_(&(param_1), &(param_2), tint_symbol_15);
return;
}
-void mm_write_i1_i1_f1_(constant Uniforms& x_48, device ssbOut& x_54, thread int* const row_2, thread int* const col_2, thread float* const value_2, thread int* const tint_symbol_8) {
+void mm_write_i1_i1_f1_(thread int* const row_2, thread int* const col_2, thread float* const value_2, thread int* const tint_symbol_16, const constant Uniforms* const tint_symbol_17, device ssbOut* const tint_symbol_18) {
int3 outCoord = 0;
int param_14 = 0;
int param_15 = 0;
int param_16 = 0;
float param_17 = 0.0f;
- int const x_491 = *(tint_symbol_8);
+ int const x_491 = *(tint_symbol_16);
int const x_492 = *(row_2);
int const x_493 = *(col_2);
outCoord = int3(x_491, x_492, x_493);
- int const x_496 = *(tint_symbol_8);
+ int const x_496 = *(tint_symbol_16);
param_14 = x_496;
int const x_498 = *(row_2);
param_15 = x_498;
@@ -164,11 +164,11 @@
param_16 = x_500;
float const x_502 = *(value_2);
param_17 = x_502;
- setOutput_i1_i1_i1_f1_(x_48, x_54, &(param_14), &(param_15), &(param_16), &(param_17));
+ setOutput_i1_i1_i1_f1_(&(param_14), &(param_15), &(param_16), &(param_17), tint_symbol_17, tint_symbol_18);
return;
}
-void mm_matMul_i1_i1_i1_(constant Uniforms& x_48, const device ssbA& x_165, const device ssbB& x_185, device ssbOut& x_54, thread int* const dimAOuter, thread int* const dimInner, thread int* const dimBOuter, thread uint3* const tint_symbol_9, thread uint3* const tint_symbol_10, thread int* const tint_symbol_11, thread int* const tint_symbol_12, thread int* const tint_symbol_13, threadgroup tint_array_wrapper* const tint_symbol_14, thread int* const tint_symbol_15, threadgroup tint_array_wrapper_2* const tint_symbol_16) {
+void mm_matMul_i1_i1_i1_(thread int* const dimAOuter, thread int* const dimInner, thread int* const dimBOuter, thread uint3* const tint_symbol_19, thread uint3* const tint_symbol_20, const constant Uniforms* const tint_symbol_21, thread int* const tint_symbol_22, thread int* const tint_symbol_23, thread int* const tint_symbol_24, const device ssbA* const tint_symbol_25, threadgroup tint_array_wrapper* const tint_symbol_26, thread int* const tint_symbol_27, const device ssbB* const tint_symbol_28, threadgroup tint_array_wrapper_2* const tint_symbol_29, device ssbOut* const tint_symbol_30) {
int tileRow = 0;
int tileCol = 0;
int globalRow = 0;
@@ -203,13 +203,13 @@
int param_7 = 0;
int param_8 = 0;
float param_9 = 0.0f;
- uint const x_132 = (*(tint_symbol_9))[1];
+ uint const x_132 = (*(tint_symbol_19))[1];
tileRow = as_type<int>((as_type<uint>(as_type<int>(x_132)) * as_type<uint>(1)));
- uint const x_137 = (*(tint_symbol_9))[0];
+ uint const x_137 = (*(tint_symbol_19))[0];
tileCol = as_type<int>((as_type<uint>(as_type<int>(x_137)) * as_type<uint>(1)));
- uint const x_143 = (*(tint_symbol_10))[1];
+ uint const x_143 = (*(tint_symbol_20))[1];
globalRow = as_type<int>((as_type<uint>(as_type<int>(x_143)) * as_type<uint>(1)));
- uint const x_148 = (*(tint_symbol_10))[0];
+ uint const x_148 = (*(tint_symbol_20))[0];
globalCol = as_type<int>((as_type<uint>(as_type<int>(x_148)) * as_type<uint>(1)));
int const x_152 = *(dimInner);
numTiles = as_type<int>((as_type<uint>((as_type<int>((as_type<uint>(x_152) - as_type<uint>(1))) / 64)) + as_type<uint>(1)));
@@ -240,9 +240,9 @@
innerRow = as_type<int>((as_type<uint>(x_183) + as_type<uint>(1)));
}
}
- uint const x_187 = (*(tint_symbol_9))[0];
+ uint const x_187 = (*(tint_symbol_19))[0];
tileColA = as_type<int>((as_type<uint>(as_type<int>(x_187)) * as_type<uint>(64)));
- uint const x_192 = (*(tint_symbol_9))[1];
+ uint const x_192 = (*(tint_symbol_19))[1];
tileRowB = as_type<int>((as_type<uint>(as_type<int>(x_192)) * as_type<uint>(1)));
t = 0;
while (true) {
@@ -280,8 +280,8 @@
int const x_240 = inputCol;
param_3 = as_type<int>((as_type<uint>(x_235) + as_type<uint>(x_236)));
param_4 = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_238) * as_type<uint>(64)))) + as_type<uint>(x_240)));
- float const x_244 = mm_readA_i1_i1_(x_48, x_165, &(param_3), &(param_4), tint_symbol_11, tint_symbol_12, tint_symbol_13);
- (*(tint_symbol_14)).arr[x_233].arr[x_234] = x_244;
+ float const x_244 = mm_readA_i1_i1_(&(param_3), &(param_4), tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_24, tint_symbol_25);
+ (*(tint_symbol_26)).arr[x_233].arr[x_234] = x_244;
{
int const x_247 = innerCol_1;
innerCol_1 = as_type<int>((as_type<uint>(x_247) + as_type<uint>(1)));
@@ -320,8 +320,8 @@
int const x_285 = innerCol_2;
param_5 = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(x_280) * as_type<uint>(64)))) + as_type<uint>(x_282)));
param_6 = as_type<int>((as_type<uint>(x_284) + as_type<uint>(x_285)));
- float const x_289 = mm_readB_i1_i1_(x_48, x_185, &(param_5), &(param_6), tint_symbol_12, tint_symbol_15, tint_symbol_13);
- (*(tint_symbol_16)).arr[x_278].arr[x_279] = x_289;
+ float const x_289 = mm_readB_i1_i1_(&(param_5), &(param_6), tint_symbol_21, tint_symbol_23, tint_symbol_27, tint_symbol_24, tint_symbol_28);
+ (*(tint_symbol_29)).arr[x_278].arr[x_279] = x_289;
{
int const x_291 = innerCol_2;
innerCol_2 = as_type<int>((as_type<uint>(x_291) + as_type<uint>(1)));
@@ -351,7 +351,7 @@
int const x_315 = k;
int const x_316 = tileCol;
int const x_317 = inner;
- float const x_320 = (*(tint_symbol_16)).arr[x_315].arr[as_type<int>((as_type<uint>(x_316) + as_type<uint>(x_317)))];
+ float const x_320 = (*(tint_symbol_29)).arr[x_315].arr[as_type<int>((as_type<uint>(x_316) + as_type<uint>(x_317)))];
BCached.arr[x_314] = x_320;
{
int const x_322 = inner;
@@ -368,7 +368,7 @@
int const x_333 = tileRow;
int const x_334 = innerRow_3;
int const x_336 = k;
- float const x_338 = (*(tint_symbol_14)).arr[as_type<int>((as_type<uint>(x_333) + as_type<uint>(x_334)))].arr[x_336];
+ float const x_338 = (*(tint_symbol_26)).arr[as_type<int>((as_type<uint>(x_333) + as_type<uint>(x_334)))].arr[x_336];
ACached = x_338;
innerCol_3 = 0;
while (true) {
@@ -445,7 +445,7 @@
param_8 = as_type<int>((as_type<uint>(x_400) + as_type<uint>(x_401)));
float const x_409 = acc.arr[x_403].arr[x_404];
param_9 = x_409;
- mm_write_i1_i1_f1_(x_48, x_54, &(param_7), &(param_8), &(param_9), tint_symbol_13);
+ mm_write_i1_i1_f1_(&(param_7), &(param_8), &(param_9), tint_symbol_24, tint_symbol_21, tint_symbol_30);
}
{
int const x_411 = innerCol_4;
@@ -460,55 +460,55 @@
return;
}
-void main_1(constant Uniforms& x_48, const device ssbA& x_165, const device ssbB& x_185, device ssbOut& x_54, thread int* const tint_symbol_17, thread int* const tint_symbol_18, thread int* const tint_symbol_19, thread uint3* const tint_symbol_20, thread int* const tint_symbol_21, thread uint3* const tint_symbol_22, threadgroup tint_array_wrapper* const tint_symbol_23, threadgroup tint_array_wrapper_2* const tint_symbol_24) {
+void main_1(const constant Uniforms* const tint_symbol_31, thread int* const tint_symbol_32, thread int* const tint_symbol_33, thread int* const tint_symbol_34, thread uint3* const tint_symbol_35, thread int* const tint_symbol_36, thread uint3* const tint_symbol_37, const device ssbA* const tint_symbol_38, threadgroup tint_array_wrapper* const tint_symbol_39, const device ssbB* const tint_symbol_40, threadgroup tint_array_wrapper_2* const tint_symbol_41, device ssbOut* const tint_symbol_42) {
int param_18 = 0;
int param_19 = 0;
int param_20 = 0;
- int const x_67 = x_48.aShape[1];
- *(tint_symbol_17) = x_67;
- int const x_71 = x_48.aShape[2];
- *(tint_symbol_18) = x_71;
- int const x_75 = x_48.bShape[2];
- *(tint_symbol_19) = x_75;
- uint const x_505 = (*(tint_symbol_20))[2];
- *(tint_symbol_21) = as_type<int>(x_505);
- int const x_508 = *(tint_symbol_17);
+ int const x_67 = (*(tint_symbol_31)).aShape[1];
+ *(tint_symbol_32) = x_67;
+ int const x_71 = (*(tint_symbol_31)).aShape[2];
+ *(tint_symbol_33) = x_71;
+ int const x_75 = (*(tint_symbol_31)).bShape[2];
+ *(tint_symbol_34) = x_75;
+ uint const x_505 = (*(tint_symbol_35))[2];
+ *(tint_symbol_36) = as_type<int>(x_505);
+ int const x_508 = *(tint_symbol_32);
param_18 = x_508;
- int const x_510 = *(tint_symbol_18);
+ int const x_510 = *(tint_symbol_33);
param_19 = x_510;
- int const x_512 = *(tint_symbol_19);
+ int const x_512 = *(tint_symbol_34);
param_20 = x_512;
- mm_matMul_i1_i1_i1_(x_48, x_165, x_185, x_54, &(param_18), &(param_19), &(param_20), tint_symbol_22, tint_symbol_20, tint_symbol_17, tint_symbol_18, tint_symbol_21, tint_symbol_23, tint_symbol_19, tint_symbol_24);
+ mm_matMul_i1_i1_i1_(&(param_18), &(param_19), &(param_20), tint_symbol_37, tint_symbol_35, tint_symbol_31, tint_symbol_32, tint_symbol_33, tint_symbol_36, tint_symbol_38, tint_symbol_39, tint_symbol_34, tint_symbol_40, tint_symbol_41, tint_symbol_42);
return;
}
-void tint_symbol_1_inner(constant Uniforms& x_48, const device ssbA& x_165, const device ssbB& x_185, device ssbOut& x_54, uint3 gl_LocalInvocationID_param, uint3 gl_GlobalInvocationID_param, uint local_invocation_index, threadgroup tint_array_wrapper_2* const tint_symbol_25, threadgroup tint_array_wrapper* const tint_symbol_26, thread uint3* const tint_symbol_27, thread uint3* const tint_symbol_28, thread int* const tint_symbol_29, thread int* const tint_symbol_30, thread int* const tint_symbol_31, thread int* const tint_symbol_32) {
+void tint_symbol_1_inner(uint3 gl_LocalInvocationID_param, uint3 gl_GlobalInvocationID_param, uint local_invocation_index, threadgroup tint_array_wrapper_2* const tint_symbol_43, threadgroup tint_array_wrapper* const tint_symbol_44, thread uint3* const tint_symbol_45, thread uint3* const tint_symbol_46, const constant Uniforms* const tint_symbol_47, thread int* const tint_symbol_48, thread int* const tint_symbol_49, thread int* const tint_symbol_50, thread int* const tint_symbol_51, const device ssbA* const tint_symbol_52, const device ssbB* const tint_symbol_53, device ssbOut* const tint_symbol_54) {
{
uint const i_1 = local_invocation_index;
uint const i_2 = (local_invocation_index % 1u);
- (*(tint_symbol_25)).arr[i_1].arr[i_2] = float();
+ (*(tint_symbol_43)).arr[i_1].arr[i_2] = float();
}
for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 64u)) {
uint const i = (idx / 64u);
uint const i_1 = (idx % 64u);
- (*(tint_symbol_26)).arr[i].arr[i_1] = float();
+ (*(tint_symbol_44)).arr[i].arr[i_1] = float();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
- *(tint_symbol_27) = gl_LocalInvocationID_param;
- *(tint_symbol_28) = gl_GlobalInvocationID_param;
- main_1(x_48, x_165, x_185, x_54, tint_symbol_29, tint_symbol_30, tint_symbol_31, tint_symbol_28, tint_symbol_32, tint_symbol_27, tint_symbol_26, tint_symbol_25);
+ *(tint_symbol_45) = gl_LocalInvocationID_param;
+ *(tint_symbol_46) = gl_GlobalInvocationID_param;
+ main_1(tint_symbol_47, tint_symbol_48, tint_symbol_49, tint_symbol_50, tint_symbol_46, tint_symbol_51, tint_symbol_45, tint_symbol_52, tint_symbol_44, tint_symbol_53, tint_symbol_43, tint_symbol_54);
}
-kernel void tint_symbol_1(uint3 gl_LocalInvocationID_param [[thread_position_in_threadgroup]], uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], uint local_invocation_index [[thread_index_in_threadgroup]], constant Uniforms& x_48 [[buffer(0)]], const device ssbA& x_165 [[buffer(2)]], const device ssbB& x_185 [[buffer(3)]], device ssbOut& x_54 [[buffer(1)]]) {
- threadgroup tint_array_wrapper_2 tint_symbol_33;
- threadgroup tint_array_wrapper tint_symbol_34;
- thread uint3 tint_symbol_35 = 0u;
- thread uint3 tint_symbol_36 = 0u;
- thread int tint_symbol_37 = 0;
- thread int tint_symbol_38 = 0;
- thread int tint_symbol_39 = 0;
- thread int tint_symbol_40 = 0;
- tint_symbol_1_inner(x_48, x_165, x_185, x_54, gl_LocalInvocationID_param, gl_GlobalInvocationID_param, local_invocation_index, &(tint_symbol_33), &(tint_symbol_34), &(tint_symbol_35), &(tint_symbol_36), &(tint_symbol_37), &(tint_symbol_38), &(tint_symbol_39), &(tint_symbol_40));
+kernel void tint_symbol_1(const constant Uniforms* tint_symbol_59 [[buffer(0)]], const device ssbA* tint_symbol_64 [[buffer(2)]], const device ssbB* tint_symbol_65 [[buffer(3)]], device ssbOut* tint_symbol_66 [[buffer(1)]], uint3 gl_LocalInvocationID_param [[thread_position_in_threadgroup]], uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
+ threadgroup tint_array_wrapper_2 tint_symbol_55;
+ threadgroup tint_array_wrapper tint_symbol_56;
+ thread uint3 tint_symbol_57 = 0u;
+ thread uint3 tint_symbol_58 = 0u;
+ thread int tint_symbol_60 = 0;
+ thread int tint_symbol_61 = 0;
+ thread int tint_symbol_62 = 0;
+ thread int tint_symbol_63 = 0;
+ tint_symbol_1_inner(gl_LocalInvocationID_param, gl_GlobalInvocationID_param, local_invocation_index, &(tint_symbol_55), &(tint_symbol_56), &(tint_symbol_57), &(tint_symbol_58), tint_symbol_59, &(tint_symbol_60), &(tint_symbol_61), &(tint_symbol_62), &(tint_symbol_63), tint_symbol_64, tint_symbol_65, tint_symbol_66);
return;
}
diff --git a/test/bug/tint/948.wgsl.expected.msl b/test/bug/tint/948.wgsl.expected.msl
index 711b38f..a249fab 100644
--- a/test/bug/tint/948.wgsl.expected.msl
+++ b/test/bug/tint/948.wgsl.expected.msl
@@ -40,21 +40,21 @@
float4 glFragColor_1 [[color(0)]];
};
-float4x4 getFrameData_f1_(constant LeftOver& x_20, thread float* const frameID, texture2d<float, access::sample> tint_symbol_5, sampler tint_symbol_6) {
+float4x4 getFrameData_f1_(thread float* const frameID, const constant LeftOver* const tint_symbol_5, texture2d<float, access::sample> tint_symbol_6, sampler tint_symbol_7) {
float fX = 0.0f;
float const x_15 = *(frameID);
- float const x_25 = x_20.spriteCount;
+ float const x_25 = (*(tint_symbol_5)).spriteCount;
fX = (x_15 / x_25);
float const x_37 = fX;
- float4 const x_40 = tint_symbol_5.sample(tint_symbol_6, float2(x_37, 0.0f), bias(0.0f));
+ float4 const x_40 = tint_symbol_6.sample(tint_symbol_7, float2(x_37, 0.0f), bias(0.0f));
float const x_44 = fX;
- float4 const x_47 = tint_symbol_5.sample(tint_symbol_6, 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;
- float4 const x_54 = tint_symbol_5.sample(tint_symbol_6, 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.0f, 0.0f, 0.0f)[0], float4(0.0f, 0.0f, 0.0f, 0.0f)[1], float4(0.0f, 0.0f, 0.0f, 0.0f)[2], float4(0.0f, 0.0f, 0.0f, 0.0f)[3]));
}
-void main_1(constant LeftOver& x_20, thread float2* const tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, sampler tint_symbol_9, texture2d<float, access::sample> tint_symbol_10, texture2d<float, access::sample> tint_symbol_11, sampler tint_symbol_12, thread float* const tint_symbol_13, texture2d<float, access::sample> tint_symbol_14, sampler tint_symbol_15, texture2d<float, access::sample> tint_symbol_16, sampler tint_symbol_17, thread float4* const tint_symbol_18) {
+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, thread float* const tint_symbol_15, 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) {
float4 color = 0.0f;
float2 tileUV = 0.0f;
float2 tileID = 0.0f;
@@ -74,17 +74,17 @@
float alpha = 0.0f;
float3 mixed = 0.0f;
color = float4(0.0f, 0.0f, 0.0f, 0.0f);
- float2 const x_86 = *(tint_symbol_7);
+ float2 const x_86 = *(tint_symbol_8);
tileUV = fract(x_86);
float const x_91 = tileUV[1];
tileUV[1] = (1.0f - x_91);
- float2 const x_95 = *(tint_symbol_7);
+ float2 const x_95 = *(tint_symbol_8);
tileID = floor(x_95);
- float2 const x_101 = x_20.spriteMapSize;
+ float2 const x_101 = (*(tint_symbol_9)).spriteMapSize;
sheetUnits = (float2(1.0f, 1.0f) / x_101);
- float const x_106 = x_20.spriteCount;
+ float const x_106 = (*(tint_symbol_9)).spriteCount;
spriteUnits = (1.0f / x_106);
- float2 const x_111 = x_20.stageSize;
+ float2 const x_111 = (*(tint_symbol_9)).stageSize;
stageUnits = (float2(1.0f, 1.0f) / x_111);
i = 0;
while (true) {
@@ -97,15 +97,15 @@
switch(x_126) {
case 1: {
float2 const x_150 = tileID;
- float2 const x_154 = x_20.stageSize;
- float4 const x_156 = tint_symbol_8.sample(tint_symbol_9, ((x_150 + float2(0.5f, 0.5f)) / x_154), bias(0.0f));
+ float2 const x_154 = (*(tint_symbol_9)).stageSize;
+ float4 const x_156 = tint_symbol_10.sample(tint_symbol_11, ((x_150 + float2(0.5f, 0.5f)) / x_154), bias(0.0f));
frameID_1 = x_156[0];
break;
}
case 0: {
float2 const x_136 = tileID;
- float2 const x_140 = x_20.stageSize;
- float4 const x_142 = tint_symbol_10.sample(tint_symbol_9, ((x_136 + float2(0.5f, 0.5f)) / x_140), bias(0.0f));
+ float2 const x_140 = (*(tint_symbol_9)).stageSize;
+ float4 const x_142 = tint_symbol_12.sample(tint_symbol_11, ((x_136 + float2(0.5f, 0.5f)) / x_140), bias(0.0f));
frameID_1 = x_142[0];
break;
}
@@ -114,14 +114,14 @@
}
}
float const x_166 = frameID_1;
- float const x_169 = x_20.spriteCount;
- float4 const x_172 = tint_symbol_11.sample(tint_symbol_12, float2(((x_166 + 0.5f) / x_169), 0.0f), bias(0.0f));
+ float const x_169 = (*(tint_symbol_9)).spriteCount;
+ float4 const x_172 = tint_symbol_13.sample(tint_symbol_14, float2(((x_166 + 0.5f) / x_169), 0.0f), bias(0.0f));
animationData = x_172;
float const x_174 = animationData[1];
if ((x_174 > 0.0f)) {
- float const x_181 = x_20.time;
+ float const x_181 = (*(tint_symbol_9)).time;
float const x_184 = animationData[2];
- *(tint_symbol_13) = fmod((x_181 * x_184), 1.0f);
+ *(tint_symbol_15) = fmod((x_181 * x_184), 1.0f);
f = 0.0f;
while (true) {
float const x_193 = f;
@@ -130,16 +130,16 @@
break;
}
float const x_197 = animationData[1];
- float const x_198 = *(tint_symbol_13);
+ float const x_198 = *(tint_symbol_15);
if ((x_197 > x_198)) {
float const x_203 = animationData[0];
frameID_1 = x_203;
break;
}
float const x_208 = frameID_1;
- float const x_211 = x_20.spriteCount;
+ float const x_211 = (*(tint_symbol_9)).spriteCount;
float const x_214 = f;
- float4 const x_217 = tint_symbol_11.sample(tint_symbol_12, float2(((x_208 + 0.5f) / x_211), (0.125f * x_214)), bias(0.0f));
+ float4 const x_217 = tint_symbol_13.sample(tint_symbol_14, float2(((x_208 + 0.5f) / x_211), (0.125f * x_214)), bias(0.0f));
animationData = x_217;
{
float const x_218 = f;
@@ -149,10 +149,10 @@
}
float const x_222 = frameID_1;
param = (x_222 + 0.5f);
- float4x4 const x_225 = getFrameData_f1_(x_20, &(param), tint_symbol_14, tint_symbol_15);
+ float4x4 const x_225 = getFrameData_f1_(&(param), tint_symbol_9, tint_symbol_16, tint_symbol_17);
frameData = x_225;
float4 const x_228 = frameData[0];
- float2 const x_231 = x_20.spriteMapSize;
+ float2 const x_231 = (*(tint_symbol_9)).spriteMapSize;
frameSize = (float2(x_228[3], x_228[2]) / x_231);
float4 const x_235 = frameData[0];
float2 const x_237 = sheetUnits;
@@ -170,13 +170,13 @@
float2 const x_263 = tileUV;
float2 const x_264 = frameSize;
float2 const x_266 = offset_1;
- float4 const x_268 = tint_symbol_16.sample(tint_symbol_17, ((x_263 * x_264) + x_266));
+ float4 const x_268 = tint_symbol_18.sample(tint_symbol_19, ((x_263 * x_264) + x_266));
color = x_268;
} else {
float2 const x_274 = tileUV;
float2 const x_275 = frameSize;
float2 const x_277 = offset_1;
- float4 const x_279 = tint_symbol_16.sample(tint_symbol_17, ((x_274 * x_275) + x_277));
+ float4 const x_279 = tint_symbol_18.sample(tint_symbol_19, ((x_274 * x_275) + x_277));
nc = x_279;
float const x_283 = color[3];
float const x_285 = nc[3];
@@ -194,38 +194,38 @@
i = as_type<int>((as_type<uint>(x_304) + as_type<uint>(1)));
}
}
- float3 const x_310 = x_20.colorMul;
+ float3 const x_310 = (*(tint_symbol_9)).colorMul;
float4 const x_311 = color;
float3 const x_313 = (float3(x_311[0], x_311[1], x_311[2]) * x_310);
float4 const x_314 = color;
color = float4(x_313[0], x_313[1], x_313[2], x_314[3]);
float4 const x_318 = color;
- *(tint_symbol_18) = x_318;
+ *(tint_symbol_20) = x_318;
return;
}
-main_out tint_symbol_inner(constant LeftOver& x_20, float2 tUV_param, float2 tileID_1_param, float2 levelUnits_param, float2 stageUnits_1_param, float3 vPosition_param, float2 vUV_param, thread float2* const tint_symbol_19, thread float2* const tint_symbol_20, thread float2* const tint_symbol_21, thread float2* const tint_symbol_22, thread float3* const tint_symbol_23, thread float2* const tint_symbol_24, texture2d<float, access::sample> tint_symbol_25, sampler tint_symbol_26, texture2d<float, access::sample> tint_symbol_27, texture2d<float, access::sample> tint_symbol_28, sampler tint_symbol_29, thread float* const tint_symbol_30, texture2d<float, access::sample> tint_symbol_31, sampler tint_symbol_32, texture2d<float, access::sample> tint_symbol_33, sampler tint_symbol_34, thread float4* const tint_symbol_35) {
- *(tint_symbol_19) = tUV_param;
- *(tint_symbol_20) = tileID_1_param;
- *(tint_symbol_21) = levelUnits_param;
- *(tint_symbol_22) = stageUnits_1_param;
- *(tint_symbol_23) = vPosition_param;
- *(tint_symbol_24) = vUV_param;
- main_1(x_20, tint_symbol_19, tint_symbol_25, tint_symbol_26, tint_symbol_27, tint_symbol_28, tint_symbol_29, tint_symbol_30, tint_symbol_31, tint_symbol_32, tint_symbol_33, tint_symbol_34, tint_symbol_35);
- main_out const tint_symbol_4 = {.glFragColor_1=*(tint_symbol_35)};
+main_out tint_symbol_inner(float2 tUV_param, float2 tileID_1_param, float2 levelUnits_param, float2 stageUnits_1_param, float3 vPosition_param, float2 vUV_param, thread float2* const tint_symbol_21, thread float2* const tint_symbol_22, thread float2* const tint_symbol_23, thread float2* const tint_symbol_24, thread float3* const tint_symbol_25, thread float2* const tint_symbol_26, const constant LeftOver* const tint_symbol_27, texture2d<float, access::sample> tint_symbol_28, sampler tint_symbol_29, texture2d<float, access::sample> tint_symbol_30, texture2d<float, access::sample> tint_symbol_31, sampler tint_symbol_32, thread float* const tint_symbol_33, texture2d<float, access::sample> tint_symbol_34, sampler tint_symbol_35, texture2d<float, access::sample> tint_symbol_36, sampler tint_symbol_37, thread float4* const tint_symbol_38) {
+ *(tint_symbol_21) = tUV_param;
+ *(tint_symbol_22) = tileID_1_param;
+ *(tint_symbol_23) = levelUnits_param;
+ *(tint_symbol_24) = stageUnits_1_param;
+ *(tint_symbol_25) = vPosition_param;
+ *(tint_symbol_26) = vUV_param;
+ main_1(tint_symbol_21, tint_symbol_27, tint_symbol_28, tint_symbol_29, tint_symbol_30, tint_symbol_31, tint_symbol_32, tint_symbol_33, tint_symbol_34, tint_symbol_35, tint_symbol_36, tint_symbol_37, tint_symbol_38);
+ main_out const tint_symbol_4 = {.glFragColor_1=*(tint_symbol_38)};
return tint_symbol_4;
}
-fragment tint_symbol_3 tint_symbol(texture2d<float, access::sample> tint_symbol_42 [[texture(0)]], sampler tint_symbol_43 [[sampler(0)]], texture2d<float, access::sample> tint_symbol_44 [[texture(1)]], texture2d<float, access::sample> tint_symbol_45 [[texture(2)]], sampler tint_symbol_46 [[sampler(1)]], texture2d<float, access::sample> tint_symbol_48 [[texture(3)]], sampler tint_symbol_49 [[sampler(2)]], texture2d<float, access::sample> tint_symbol_50 [[texture(4)]], sampler tint_symbol_51 [[sampler(3)]], tint_symbol_2 tint_symbol_1 [[stage_in]], constant LeftOver& x_20 [[buffer(0)]]) {
- thread float2 tint_symbol_36 = 0.0f;
- thread float2 tint_symbol_37 = 0.0f;
- thread float2 tint_symbol_38 = 0.0f;
+fragment tint_symbol_3 tint_symbol(const constant LeftOver* tint_symbol_45 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_46 [[texture(0)]], sampler tint_symbol_47 [[sampler(0)]], texture2d<float, access::sample> tint_symbol_48 [[texture(1)]], texture2d<float, access::sample> tint_symbol_49 [[texture(2)]], sampler tint_symbol_50 [[sampler(1)]], texture2d<float, access::sample> tint_symbol_52 [[texture(3)]], sampler tint_symbol_53 [[sampler(2)]], texture2d<float, access::sample> tint_symbol_54 [[texture(4)]], sampler tint_symbol_55 [[sampler(3)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
thread float2 tint_symbol_39 = 0.0f;
- thread float3 tint_symbol_40 = 0.0f;
+ thread float2 tint_symbol_40 = 0.0f;
thread float2 tint_symbol_41 = 0.0f;
- thread float tint_symbol_47 = 0.0f;
- thread float4 tint_symbol_52 = 0.0f;
- main_out const inner_result = tint_symbol_inner(x_20, tint_symbol_1.tUV_param, tint_symbol_1.tileID_1_param, tint_symbol_1.levelUnits_param, tint_symbol_1.stageUnits_1_param, tint_symbol_1.vPosition_param, tint_symbol_1.vUV_param, &(tint_symbol_36), &(tint_symbol_37), &(tint_symbol_38), &(tint_symbol_39), &(tint_symbol_40), &(tint_symbol_41), tint_symbol_42, tint_symbol_43, tint_symbol_44, tint_symbol_45, tint_symbol_46, &(tint_symbol_47), tint_symbol_48, tint_symbol_49, tint_symbol_50, tint_symbol_51, &(tint_symbol_52));
+ thread float2 tint_symbol_42 = 0.0f;
+ thread float3 tint_symbol_43 = 0.0f;
+ thread float2 tint_symbol_44 = 0.0f;
+ thread float tint_symbol_51 = 0.0f;
+ thread float4 tint_symbol_56 = 0.0f;
+ main_out const inner_result = tint_symbol_inner(tint_symbol_1.tUV_param, tint_symbol_1.tileID_1_param, tint_symbol_1.levelUnits_param, tint_symbol_1.stageUnits_1_param, tint_symbol_1.vPosition_param, tint_symbol_1.vUV_param, &(tint_symbol_39), &(tint_symbol_40), &(tint_symbol_41), &(tint_symbol_42), &(tint_symbol_43), &(tint_symbol_44), tint_symbol_45, tint_symbol_46, tint_symbol_47, tint_symbol_48, tint_symbol_49, tint_symbol_50, &(tint_symbol_51), tint_symbol_52, tint_symbol_53, tint_symbol_54, tint_symbol_55, &(tint_symbol_56));
tint_symbol_3 wrapper_result = {};
wrapper_result.glFragColor_1 = inner_result.glFragColor_1;
return wrapper_result;
diff --git a/test/bug/tint/949.wgsl.expected.msl b/test/bug/tint/949.wgsl.expected.msl
index c3a16ec..6180838 100644
--- a/test/bug/tint/949.wgsl.expected.msl
+++ b/test/bug/tint/949.wgsl.expected.msl
@@ -182,7 +182,7 @@
return x_245;
}
-void main_1(constant LeftOver& x_269, constant Light0& light0, thread float* const tint_symbol_5, thread float3* const tint_symbol_6, thread float2* const tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, sampler tint_symbol_9, thread float4* const tint_symbol_10, thread bool* const tint_symbol_11, thread float2* const tint_symbol_12, thread float4* const tint_symbol_13, texture2d<float, access::sample> tint_symbol_14, sampler tint_symbol_15, thread float4* const tint_symbol_16) {
+void main_1(thread float* const tint_symbol_5, thread float3* const tint_symbol_6, thread float2* const tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, sampler tint_symbol_9, const constant LeftOver* const tint_symbol_10, thread float4* const tint_symbol_11, thread bool* const tint_symbol_12, thread float2* const tint_symbol_13, thread float4* const tint_symbol_14, texture2d<float, access::sample> tint_symbol_15, sampler tint_symbol_16, const constant Light0* const tint_symbol_17, thread float4* const tint_symbol_18) {
float4 tempTextureRead = 0.0f;
float3 rgb = 0.0f;
float3 output5 = 0.0f;
@@ -242,33 +242,33 @@
float4 const x_262 = tint_symbol_8.sample(tint_symbol_9, x_261);
tempTextureRead = x_262;
float4 const x_264 = tempTextureRead;
- float const x_273 = x_269.textureInfoName;
+ float const x_273 = (*(tint_symbol_10)).textureInfoName;
rgb = (float3(x_264[0], x_264[1], x_264[2]) * x_273);
- float3 const x_279 = x_269.u_cameraPosition;
- float4 const x_282 = *(tint_symbol_10);
+ float3 const x_279 = (*(tint_symbol_10)).u_cameraPosition;
+ float4 const x_282 = *(tint_symbol_11);
output5 = normalize((x_279 - float3(x_282[0], x_282[1], x_282[2])));
output4 = float4(0.0f, 0.0f, 0.0f, 0.0f);
uvOffset = float2(0.0f, 0.0f);
- float const x_292 = x_269.u_bumpStrength;
+ float const x_292 = (*(tint_symbol_10)).u_bumpStrength;
normalScale = (1.0f / x_292);
- bool const x_298 = *(tint_symbol_11);
+ bool const x_298 = *(tint_symbol_12);
if (x_298) {
- float2 const x_303 = *(tint_symbol_12);
+ float2 const x_303 = *(tint_symbol_13);
x_299 = x_303;
} else {
- float2 const x_305 = *(tint_symbol_12);
+ float2 const x_305 = *(tint_symbol_13);
x_299 = -(x_305);
}
float2 const x_307 = x_299;
TBNUV = x_307;
- float4 const x_310 = *(tint_symbol_13);
+ float4 const x_310 = *(tint_symbol_14);
float const x_312 = normalScale;
param_3 = (float3(x_310[0], x_310[1], x_310[2]) * x_312);
- float4 const x_317 = *(tint_symbol_10);
+ float4 const x_317 = *(tint_symbol_11);
param_4 = float3(x_317[0], x_317[1], x_317[2]);
float2 const x_320 = TBNUV;
param_5 = x_320;
- float2 const x_324 = x_269.tangentSpaceParameter0;
+ float2 const x_324 = (*(tint_symbol_10)).tangentSpaceParameter0;
param_6 = x_324;
float3x3 const x_325 = cotangent_frame_vf3_vf3_vf2_vf2_(&(param_3), &(param_4), &(param_5), &(param_6));
TBN = x_325;
@@ -282,7 +282,7 @@
float3x3 const x_337 = invTBN;
float3 const x_338 = output5;
parallaxLimit = (length(float2(x_334[0], x_334[1])) / ((x_337 * -(x_338)))[2]);
- float const x_345 = x_269.u_parallaxScale;
+ float const x_345 = (*(tint_symbol_10)).u_parallaxScale;
float const x_346 = parallaxLimit;
parallaxLimit = (x_346 * x_345);
float3x3 const x_349 = invTBN;
@@ -295,7 +295,7 @@
float3x3 const x_361 = invTBN;
float3 const x_362 = output5;
float3x3 const x_365 = invTBN;
- float4 const x_366 = *(tint_symbol_13);
+ float4 const x_366 = *(tint_symbol_14);
numSamples = (15.0f + (dot((x_361 * -(x_362)), (x_365 * float3(x_366[0], x_366[1], x_366[2]))) * -11.0f));
float const x_374 = numSamples;
stepSize = (1.0f / x_374);
@@ -311,7 +311,7 @@
} else {
break;
}
- float2 const x_394 = *(tint_symbol_12);
+ float2 const x_394 = *(tint_symbol_13);
float2 const x_395 = vCurrOffset;
float4 const x_397 = tint_symbol_8.sample(tint_symbol_9, (x_394 + x_395));
currSampledHeight = x_397[3];
@@ -357,10 +357,10 @@
parallaxOcclusion_0 = x_444;
float2 const x_445 = parallaxOcclusion_0;
uvOffset = x_445;
- float2 const x_449 = *(tint_symbol_12);
+ float2 const x_449 = *(tint_symbol_13);
float2 const x_450 = uvOffset;
float4 const x_452 = tint_symbol_8.sample(tint_symbol_9, (x_449 + x_450));
- float const x_454 = x_269.u_bumpStrength;
+ float const x_454 = (*(tint_symbol_10)).u_bumpStrength;
float3x3 const x_457 = TBN;
param_8 = x_457;
param_9 = float3(x_452[0], x_452[1], x_452[2]);
@@ -368,16 +368,16 @@
float3 const x_461 = perturbNormal_mf33_vf3_f1_(&(param_8), &(param_9), &(param_10));
float4 const x_462 = output4;
output4 = float4(x_461[0], x_461[1], x_461[2], x_462[3]);
- float2 const x_465 = *(tint_symbol_12);
+ float2 const x_465 = *(tint_symbol_13);
float2 const x_466 = uvOffset;
output6 = (x_465 + x_466);
float2 const x_474 = output6;
- float4 const x_475 = tint_symbol_14.sample(tint_symbol_15, x_474);
+ float4 const x_475 = tint_symbol_15.sample(tint_symbol_16, x_474);
tempTextureRead1 = x_475;
float4 const x_477 = tempTextureRead1;
rgb1 = float3(x_477[0], x_477[1], x_477[2]);
- float3 const x_481 = x_269.u_cameraPosition;
- float4 const x_482 = *(tint_symbol_10);
+ float3 const x_481 = (*(tint_symbol_10)).u_cameraPosition;
+ float4 const x_482 = *(tint_symbol_11);
viewDirectionW_1 = normalize((x_481 - float3(x_482[0], x_482[1], x_482[2])));
shadow = 1.0f;
float const x_488 = *(tint_symbol_5);
@@ -390,13 +390,13 @@
param_11 = x_501;
float3 const x_503 = normalW;
param_12 = x_503;
- float4 const x_507 = light0.vLightData;
+ float4 const x_507 = (*(tint_symbol_17)).vLightData;
param_13 = x_507;
- float4 const x_510 = light0.vLightDiffuse;
+ float4 const x_510 = (*(tint_symbol_17)).vLightDiffuse;
param_14 = float3(x_510[0], x_510[1], x_510[2]);
- float4 const x_514 = light0.vLightSpecular;
+ float4 const x_514 = (*(tint_symbol_17)).vLightSpecular;
param_15 = float3(x_514[0], x_514[1], x_514[2]);
- float3 const x_518 = light0.vLightGround;
+ float3 const x_518 = (*(tint_symbol_17)).vLightGround;
param_16 = x_518;
float const x_520 = glossiness_1;
param_17 = x_520;
@@ -421,31 +421,31 @@
float3 const x_544 = specularOutput;
output3 = (x_543 + x_544);
float3 const x_548 = output3;
- *(tint_symbol_16) = float4(x_548[0], x_548[1], x_548[2], 1.0f);
+ *(tint_symbol_18) = float4(x_548[0], x_548[1], x_548[2], 1.0f);
return;
}
-main_out tint_symbol_inner(constant LeftOver& x_269, constant Light0& light0, float2 vMainuv_param, float4 v_output1_param, bool gl_FrontFacing_param, float2 v_uv_param, float4 v_output2_param, thread float2* const tint_symbol_17, thread float4* const tint_symbol_18, thread bool* const tint_symbol_19, thread float2* const tint_symbol_20, thread float4* const tint_symbol_21, thread float* const tint_symbol_22, thread float3* const tint_symbol_23, texture2d<float, access::sample> tint_symbol_24, sampler tint_symbol_25, texture2d<float, access::sample> tint_symbol_26, sampler tint_symbol_27, thread float4* const tint_symbol_28) {
- *(tint_symbol_17) = vMainuv_param;
- *(tint_symbol_18) = v_output1_param;
- *(tint_symbol_19) = gl_FrontFacing_param;
- *(tint_symbol_20) = v_uv_param;
- *(tint_symbol_21) = v_output2_param;
- main_1(x_269, light0, tint_symbol_22, tint_symbol_23, tint_symbol_17, tint_symbol_24, tint_symbol_25, tint_symbol_18, tint_symbol_19, tint_symbol_20, tint_symbol_21, tint_symbol_26, tint_symbol_27, tint_symbol_28);
- main_out const tint_symbol_4 = {.glFragColor_1=*(tint_symbol_28)};
+main_out tint_symbol_inner(float2 vMainuv_param, float4 v_output1_param, bool gl_FrontFacing_param, float2 v_uv_param, float4 v_output2_param, thread float2* const tint_symbol_19, thread float4* const tint_symbol_20, thread bool* const tint_symbol_21, thread float2* const tint_symbol_22, thread float4* const tint_symbol_23, thread float* const tint_symbol_24, thread float3* const tint_symbol_25, texture2d<float, access::sample> tint_symbol_26, sampler tint_symbol_27, const constant LeftOver* const tint_symbol_28, texture2d<float, access::sample> tint_symbol_29, sampler tint_symbol_30, const constant Light0* const tint_symbol_31, thread float4* const tint_symbol_32) {
+ *(tint_symbol_19) = vMainuv_param;
+ *(tint_symbol_20) = v_output1_param;
+ *(tint_symbol_21) = gl_FrontFacing_param;
+ *(tint_symbol_22) = v_uv_param;
+ *(tint_symbol_23) = v_output2_param;
+ main_1(tint_symbol_24, tint_symbol_25, tint_symbol_19, tint_symbol_26, tint_symbol_27, tint_symbol_28, tint_symbol_20, tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_29, tint_symbol_30, tint_symbol_31, tint_symbol_32);
+ main_out const tint_symbol_4 = {.glFragColor_1=*(tint_symbol_32)};
return tint_symbol_4;
}
-fragment tint_symbol_3 tint_symbol(texture2d<float, access::sample> tint_symbol_36 [[texture(0)]], sampler tint_symbol_37 [[sampler(0)]], texture2d<float, access::sample> tint_symbol_38 [[texture(1)]], sampler tint_symbol_39 [[sampler(1)]], bool gl_FrontFacing_param [[front_facing]], tint_symbol_2 tint_symbol_1 [[stage_in]], constant LeftOver& x_269 [[buffer(0)]], constant Light0& light0 [[buffer(1)]]) {
- thread float2 tint_symbol_29 = 0.0f;
- thread float4 tint_symbol_30 = 0.0f;
- thread bool tint_symbol_31 = false;
- thread float2 tint_symbol_32 = 0.0f;
- thread float4 tint_symbol_33 = 0.0f;
- thread float tint_symbol_34 = 0.0f;
- thread float3 tint_symbol_35 = 0.0f;
- thread float4 tint_symbol_40 = 0.0f;
- main_out const inner_result = tint_symbol_inner(x_269, light0, tint_symbol_1.vMainuv_param, tint_symbol_1.v_output1_param, gl_FrontFacing_param, tint_symbol_1.v_uv_param, tint_symbol_1.v_output2_param, &(tint_symbol_29), &(tint_symbol_30), &(tint_symbol_31), &(tint_symbol_32), &(tint_symbol_33), &(tint_symbol_34), &(tint_symbol_35), tint_symbol_36, tint_symbol_37, tint_symbol_38, tint_symbol_39, &(tint_symbol_40));
+fragment tint_symbol_3 tint_symbol(texture2d<float, access::sample> tint_symbol_40 [[texture(0)]], sampler tint_symbol_41 [[sampler(0)]], const constant LeftOver* tint_symbol_42 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_43 [[texture(1)]], sampler tint_symbol_44 [[sampler(1)]], const constant Light0* tint_symbol_45 [[buffer(1)]], bool gl_FrontFacing_param [[front_facing]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
+ thread float2 tint_symbol_33 = 0.0f;
+ thread float4 tint_symbol_34 = 0.0f;
+ thread bool tint_symbol_35 = false;
+ thread float2 tint_symbol_36 = 0.0f;
+ thread float4 tint_symbol_37 = 0.0f;
+ thread float tint_symbol_38 = 0.0f;
+ thread float3 tint_symbol_39 = 0.0f;
+ thread float4 tint_symbol_46 = 0.0f;
+ main_out const inner_result = tint_symbol_inner(tint_symbol_1.vMainuv_param, tint_symbol_1.v_output1_param, gl_FrontFacing_param, tint_symbol_1.v_uv_param, tint_symbol_1.v_output2_param, &(tint_symbol_33), &(tint_symbol_34), &(tint_symbol_35), &(tint_symbol_36), &(tint_symbol_37), &(tint_symbol_38), &(tint_symbol_39), tint_symbol_40, tint_symbol_41, tint_symbol_42, tint_symbol_43, tint_symbol_44, tint_symbol_45, &(tint_symbol_46));
tint_symbol_3 wrapper_result = {};
wrapper_result.glFragColor_1 = inner_result.glFragColor_1;
return wrapper_result;
diff --git a/test/bug/tint/951.spvasm.expected.msl b/test/bug/tint/951.spvasm.expected.msl
index 57b22d3..9234ca5 100644
--- a/test/bug/tint/951.spvasm.expected.msl
+++ b/test/bug/tint/951.spvasm.expected.msl
@@ -15,9 +15,9 @@
/* 0x0010 */ int size;
};
-float getAAtOutCoords_(const device ssbA& x_20, thread uint3* const tint_symbol_2) {
+float getAAtOutCoords_(thread uint3* const tint_symbol_2, const device ssbA* const tint_symbol_3) {
uint const x_42 = (*(tint_symbol_2))[0];
- float const x_44 = x_20.A[x_42];
+ float const x_44 = (*(tint_symbol_3)).A[x_42];
return x_44;
}
@@ -30,25 +30,25 @@
return log(x_55);
}
-void setOutput_i1_f1_(device ssbOut& x_16, thread int* const flatIndex, thread float* const value) {
+void setOutput_i1_f1_(thread int* const flatIndex, thread float* const value, device ssbOut* const tint_symbol_4) {
int const x_27 = *(flatIndex);
float const x_28 = *(value);
- x_16.result[x_27] = x_28;
+ (*(tint_symbol_4)).result[x_27] = x_28;
return;
}
-void main_1(constant Uniforms& x_24, const device ssbA& x_20, device ssbOut& x_16, thread uint3* const tint_symbol_3) {
+void main_1(thread uint3* const tint_symbol_5, const constant Uniforms* const tint_symbol_6, const device ssbA* const tint_symbol_7, device ssbOut* const tint_symbol_8) {
int index = 0;
float a_1 = 0.0f;
float param = 0.0f;
int param_1 = 0;
float param_2 = 0.0f;
- uint const x_61 = (*(tint_symbol_3))[0];
+ uint const x_61 = (*(tint_symbol_5))[0];
index = as_type<int>(x_61);
int const x_63 = index;
- int const x_70 = x_24.size;
+ int const x_70 = (*(tint_symbol_6)).size;
if ((x_63 < x_70)) {
- float const x_75 = getAAtOutCoords_(x_20, tint_symbol_3);
+ float const x_75 = getAAtOutCoords_(tint_symbol_5, tint_symbol_7);
a_1 = x_75;
float const x_77 = a_1;
param = x_77;
@@ -56,19 +56,19 @@
int const x_80 = index;
param_1 = x_80;
param_2 = x_78;
- setOutput_i1_f1_(x_16, &(param_1), &(param_2));
+ setOutput_i1_f1_(&(param_1), &(param_2), tint_symbol_8);
}
return;
}
-void tint_symbol_1_inner(constant Uniforms& x_24, const device ssbA& x_20, device ssbOut& x_16, uint3 gl_GlobalInvocationID_param, thread uint3* const tint_symbol_4) {
- *(tint_symbol_4) = gl_GlobalInvocationID_param;
- main_1(x_24, x_20, x_16, tint_symbol_4);
+void tint_symbol_1_inner(uint3 gl_GlobalInvocationID_param, thread uint3* const tint_symbol_9, const constant Uniforms* const tint_symbol_10, const device ssbA* const tint_symbol_11, device ssbOut* const tint_symbol_12) {
+ *(tint_symbol_9) = gl_GlobalInvocationID_param;
+ main_1(tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12);
}
-kernel void tint_symbol_1(uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], constant Uniforms& x_24 [[buffer(0)]], const device ssbA& x_20 [[buffer(2)]], device ssbOut& x_16 [[buffer(1)]]) {
- thread uint3 tint_symbol_5 = 0u;
- tint_symbol_1_inner(x_24, x_20, x_16, gl_GlobalInvocationID_param, &(tint_symbol_5));
+kernel void tint_symbol_1(const constant Uniforms* tint_symbol_14 [[buffer(0)]], const device ssbA* tint_symbol_15 [[buffer(2)]], device ssbOut* tint_symbol_16 [[buffer(1)]], uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]]) {
+ thread uint3 tint_symbol_13 = 0u;
+ tint_symbol_1_inner(gl_GlobalInvocationID_param, &(tint_symbol_13), tint_symbol_14, tint_symbol_15, tint_symbol_16);
return;
}
diff --git a/test/bug/tint/959.wgsl.expected.msl b/test/bug/tint/959.wgsl.expected.msl
index 30bcc72..2c8f075 100644
--- a/test/bug/tint/959.wgsl.expected.msl
+++ b/test/bug/tint/959.wgsl.expected.msl
@@ -2,10 +2,10 @@
using namespace metal;
struct S {
- /* 0x0000 */ float a;
+ float a;
};
-fragment void tint_symbol(texture2d<float, access::sample> tint_symbol_1 [[texture(0)]], texture2d<float, access::sample> tint_symbol_2 [[texture(1)]], texture2d<float, access::sample> tint_symbol_3 [[texture(2)]], texture2d<float, access::sample> tint_symbol_4 [[texture(3)]], texture2d<float, access::sample> tint_symbol_5 [[texture(4)]], texture2d<float, access::sample> tint_symbol_6 [[texture(5)]], texture2d<float, access::sample> tint_symbol_7 [[texture(6)]], texture2d<float, access::sample> tint_symbol_8 [[texture(7)]], depth2d<float, access::sample> tint_symbol_9 [[texture(8)]], depth2d<float, access::sample> tint_symbol_10 [[texture(9)]], depth2d<float, access::sample> tint_symbol_11 [[texture(10)]], depth2d<float, access::sample> tint_symbol_12 [[texture(11)]], depth2d<float, access::sample> tint_symbol_13 [[texture(12)]], depth2d<float, access::sample> tint_symbol_14 [[texture(13)]], depth2d<float, access::sample> tint_symbol_15 [[texture(14)]], depth2d<float, access::sample> tint_symbol_16 [[texture(15)]], sampler tint_symbol_17 [[sampler(0)]], sampler tint_symbol_18 [[sampler(1)]], sampler tint_symbol_19 [[sampler(2)]], sampler tint_symbol_20 [[sampler(3)]], sampler tint_symbol_21 [[sampler(4)]], sampler tint_symbol_22 [[sampler(5)]], sampler tint_symbol_23 [[sampler(6)]], sampler tint_symbol_24 [[sampler(7)]], sampler tint_symbol_25 [[sampler(8)]], sampler tint_symbol_26 [[sampler(9)]], sampler tint_symbol_27 [[sampler(10)]], sampler tint_symbol_28 [[sampler(11)]], sampler tint_symbol_29 [[sampler(12)]], sampler tint_symbol_30 [[sampler(13)]], sampler tint_symbol_31 [[sampler(14)]], sampler tint_symbol_32 [[sampler(15)]]) {
+fragment void tint_symbol() {
return;
}
diff --git a/test/bug/tint/977.spvasm.expected.msl b/test/bug/tint/977.spvasm.expected.msl
index c729f30..22e9078 100644
--- a/test/bug/tint/977.spvasm.expected.msl
+++ b/test/bug/tint/977.spvasm.expected.msl
@@ -5,15 +5,15 @@
/* 0x0000 */ float numbers[1];
};
struct FirstMatrix {
- /* 0x0000 */ float numbers[1];
+ float numbers[1];
};
struct SecondMatrix {
- /* 0x0000 */ float numbers[1];
+ float numbers[1];
};
struct Uniforms {
- /* 0x0000 */ float tint_symbol;
- /* 0x0004 */ int sizeA;
- /* 0x0008 */ int sizeB;
+ float tint_symbol;
+ int sizeA;
+ int sizeB;
};
float binaryOperation_f1_f1_(thread float* const a, thread float* const b) {
@@ -37,7 +37,7 @@
return x_41;
}
-void main_1(device ResultMatrix& resultMatrix, thread uint3* const tint_symbol_2) {
+void main_1(thread uint3* const tint_symbol_2, device ResultMatrix* const tint_symbol_3) {
int index = 0;
int a_1 = 0;
float param = 0.0f;
@@ -49,18 +49,18 @@
param = -4.0f;
param_1 = -3.0f;
float const x_68 = binaryOperation_f1_f1_(&(param), &(param_1));
- resultMatrix.numbers[x_63] = x_68;
+ (*(tint_symbol_3)).numbers[x_63] = x_68;
return;
}
-void tint_symbol_1_inner(device ResultMatrix& resultMatrix, uint3 gl_GlobalInvocationID_param, thread uint3* const tint_symbol_3) {
- *(tint_symbol_3) = gl_GlobalInvocationID_param;
- main_1(resultMatrix, tint_symbol_3);
+void tint_symbol_1_inner(uint3 gl_GlobalInvocationID_param, thread uint3* const tint_symbol_4, device ResultMatrix* const tint_symbol_5) {
+ *(tint_symbol_4) = gl_GlobalInvocationID_param;
+ main_1(tint_symbol_4, tint_symbol_5);
}
-kernel void tint_symbol_1(uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]], device ResultMatrix& resultMatrix [[buffer(0)]]) {
- thread uint3 tint_symbol_4 = 0u;
- tint_symbol_1_inner(resultMatrix, gl_GlobalInvocationID_param, &(tint_symbol_4));
+kernel void tint_symbol_1(device ResultMatrix* tint_symbol_7 [[buffer(0)]], uint3 gl_GlobalInvocationID_param [[thread_position_in_grid]]) {
+ thread uint3 tint_symbol_6 = 0u;
+ tint_symbol_1_inner(gl_GlobalInvocationID_param, &(tint_symbol_6), tint_symbol_7);
return;
}
diff --git a/test/bug/tint/980.wgsl.expected.msl b/test/bug/tint/980.wgsl.expected.msl
index 4c9c071..499b542 100644
--- a/test/bug/tint/980.wgsl.expected.msl
+++ b/test/bug/tint/980.wgsl.expected.msl
@@ -23,12 +23,12 @@
return normalize(normal);
}
-void tint_symbol_inner(device S& io, uint idx) {
- io.v = Bad(io.i, io.v);
+void tint_symbol_inner(uint idx, device S* const tint_symbol_1) {
+ (*(tint_symbol_1)).v = Bad((*(tint_symbol_1)).i, (*(tint_symbol_1)).v);
}
-kernel void tint_symbol(uint idx [[thread_index_in_threadgroup]], device S& io [[buffer(0)]]) {
- tint_symbol_inner(io, idx);
+kernel void tint_symbol(device S* tint_symbol_2 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
+ tint_symbol_inner(idx, tint_symbol_2);
return;
}
diff --git a/test/bug/tint/993.wgsl.expected.msl b/test/bug/tint/993.wgsl.expected.msl
index feb676a..c09cfed 100644
--- a/test/bug/tint/993.wgsl.expected.msl
+++ b/test/bug/tint/993.wgsl.expected.msl
@@ -14,12 +14,12 @@
/* 0x0000 */ tint_array_wrapper data;
};
-int runTest(constant Constants& constants, device TestData& s) {
- return atomic_load_explicit(&(s.data.arr[(0u + uint(constants.zero))]), memory_order_relaxed);
+int runTest(device TestData* const tint_symbol_1, const constant Constants* const tint_symbol_2) {
+ return atomic_load_explicit(&((*(tint_symbol_1)).data.arr[(0u + uint((*(tint_symbol_2)).zero))]), memory_order_relaxed);
}
-kernel void tint_symbol(constant Constants& constants [[buffer(0)]], device Result& result [[buffer(1)]], device TestData& s [[buffer(2)]]) {
- result.value = uint(runTest(constants, s));
+kernel void tint_symbol(device Result* tint_symbol_3 [[buffer(1)]], device TestData* tint_symbol_4 [[buffer(2)]], const constant Constants* tint_symbol_5 [[buffer(0)]]) {
+ (*(tint_symbol_3)).value = uint(runTest(tint_symbol_4, tint_symbol_5));
return;
}
diff --git a/test/bug/tint/998.wgsl.expected.msl b/test/bug/tint/998.wgsl.expected.msl
index 1c6fc8b..3cbf551 100644
--- a/test/bug/tint/998.wgsl.expected.msl
+++ b/test/bug/tint/998.wgsl.expected.msl
@@ -5,7 +5,7 @@
/* 0x0000 */ uint zero;
};
struct Result {
- /* 0x0000 */ uint value;
+ uint value;
};
struct tint_array_wrapper {
uint arr[3];
@@ -14,9 +14,9 @@
tint_array_wrapper data;
};
-kernel void tint_symbol(constant Constants& constants [[buffer(0)]]) {
+kernel void tint_symbol(const constant Constants* tint_symbol_2 [[buffer(0)]]) {
thread S tint_symbol_1 = {};
- tint_symbol_1.data.arr[constants.zero] = 0u;
+ tint_symbol_1.data.arr[(*(tint_symbol_2)).zero] = 0u;
return;
}
diff --git a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.msl b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.msl
index 409b87b..6d656c9 100644
--- a/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.msl
+++ b/test/expressions/binary/mul/mat3x2-vec3/f32.wgsl.expected.msl
@@ -19,8 +19,8 @@
/* 0x002c */ int8_t tint_pad_1[4];
};
-fragment void tint_symbol_1(constant S& data [[buffer(0)]]) {
- float2 const x = (data.tint_symbol * data.vector);
+fragment void tint_symbol_1(const constant S* tint_symbol_2 [[buffer(0)]]) {
+ float2 const x = ((*(tint_symbol_2)).tint_symbol * (*(tint_symbol_2)).vector);
return;
}
diff --git a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.msl b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.msl
index edbe463..afbe420 100644
--- a/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.msl
+++ b/test/expressions/binary/mul/mat3x3-vec3/f32.wgsl.expected.msl
@@ -18,8 +18,8 @@
/* 0x003c */ int8_t tint_pad[4];
};
-fragment void tint_symbol_1(constant S& data [[buffer(0)]]) {
- float3 const x = (data.tint_symbol * data.vector);
+fragment void tint_symbol_1(const constant S* tint_symbol_2 [[buffer(0)]]) {
+ float3 const x = ((*(tint_symbol_2)).tint_symbol * (*(tint_symbol_2)).vector);
return;
}
diff --git a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.msl b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.msl
index d4a9b71..b4412e9 100644
--- a/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.msl
+++ b/test/expressions/binary/mul/vec3-mat3x3/f32.wgsl.expected.msl
@@ -18,8 +18,8 @@
/* 0x003c */ int8_t tint_pad[4];
};
-fragment void tint_symbol_1(constant S& data [[buffer(0)]]) {
- float3 const x = (data.vector * data.tint_symbol);
+fragment void tint_symbol_1(const constant S* tint_symbol_2 [[buffer(0)]]) {
+ float3 const x = ((*(tint_symbol_2)).vector * (*(tint_symbol_2)).tint_symbol);
return;
}
diff --git a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.msl b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.msl
index bb2e75f..5a320cf 100644
--- a/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.msl
+++ b/test/expressions/binary/mul/vec3-mat4x3/f32.wgsl.expected.msl
@@ -18,8 +18,8 @@
/* 0x004c */ int8_t tint_pad[4];
};
-fragment void tint_symbol_1(constant S& data [[buffer(0)]]) {
- float4 const x = (data.vector * data.tint_symbol);
+fragment void tint_symbol_1(const constant S* tint_symbol_2 [[buffer(0)]]) {
+ float4 const x = ((*(tint_symbol_2)).vector * (*(tint_symbol_2)).tint_symbol);
return;
}
diff --git a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl
index b38da02..070734e 100644
--- a/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl
+++ b/test/expressions/swizzle/read/packed_vec3/f32.wgsl.expected.msl
@@ -17,127 +17,127 @@
/* 0x000c */ int8_t tint_pad[4];
};
-void f(constant S& U) {
- float3 v = U.v;
- float x = U.v[0];
- float y = U.v[1];
- float z = U.v[2];
- float2 xx = float3(U.v).xx;
- float2 xy = float3(U.v).xy;
- float2 xz = float3(U.v).xz;
- float2 yx = float3(U.v).yx;
- float2 yy = float3(U.v).yy;
- float2 yz = float3(U.v).yz;
- float2 zx = float3(U.v).zx;
- float2 zy = float3(U.v).zy;
- float2 zz = float3(U.v).zz;
- float3 xxx = float3(U.v).xxx;
- float3 xxy = float3(U.v).xxy;
- float3 xxz = float3(U.v).xxz;
- float3 xyx = float3(U.v).xyx;
- float3 xyy = float3(U.v).xyy;
- float3 xyz = float3(U.v).xyz;
- float3 xzx = float3(U.v).xzx;
- float3 xzy = float3(U.v).xzy;
- float3 xzz = float3(U.v).xzz;
- float3 yxx = float3(U.v).yxx;
- float3 yxy = float3(U.v).yxy;
- float3 yxz = float3(U.v).yxz;
- float3 yyx = float3(U.v).yyx;
- float3 yyy = float3(U.v).yyy;
- float3 yyz = float3(U.v).yyz;
- float3 yzx = float3(U.v).yzx;
- float3 yzy = float3(U.v).yzy;
- float3 yzz = float3(U.v).yzz;
- float3 zxx = float3(U.v).zxx;
- float3 zxy = float3(U.v).zxy;
- float3 zxz = float3(U.v).zxz;
- float3 zyx = float3(U.v).zyx;
- float3 zyy = float3(U.v).zyy;
- float3 zyz = float3(U.v).zyz;
- float3 zzx = float3(U.v).zzx;
- float3 zzy = float3(U.v).zzy;
- float3 zzz = float3(U.v).zzz;
- float4 xxxx = float3(U.v).xxxx;
- float4 xxxy = float3(U.v).xxxy;
- float4 xxxz = float3(U.v).xxxz;
- float4 xxyx = float3(U.v).xxyx;
- float4 xxyy = float3(U.v).xxyy;
- float4 xxyz = float3(U.v).xxyz;
- float4 xxzx = float3(U.v).xxzx;
- float4 xxzy = float3(U.v).xxzy;
- float4 xxzz = float3(U.v).xxzz;
- float4 xyxx = float3(U.v).xyxx;
- float4 xyxy = float3(U.v).xyxy;
- float4 xyxz = float3(U.v).xyxz;
- float4 xyyx = float3(U.v).xyyx;
- float4 xyyy = float3(U.v).xyyy;
- float4 xyyz = float3(U.v).xyyz;
- float4 xyzx = float3(U.v).xyzx;
- float4 xyzy = float3(U.v).xyzy;
- float4 xyzz = float3(U.v).xyzz;
- float4 xzxx = float3(U.v).xzxx;
- float4 xzxy = float3(U.v).xzxy;
- float4 xzxz = float3(U.v).xzxz;
- float4 xzyx = float3(U.v).xzyx;
- float4 xzyy = float3(U.v).xzyy;
- float4 xzyz = float3(U.v).xzyz;
- float4 xzzx = float3(U.v).xzzx;
- float4 xzzy = float3(U.v).xzzy;
- float4 xzzz = float3(U.v).xzzz;
- float4 yxxx = float3(U.v).yxxx;
- float4 yxxy = float3(U.v).yxxy;
- float4 yxxz = float3(U.v).yxxz;
- float4 yxyx = float3(U.v).yxyx;
- float4 yxyy = float3(U.v).yxyy;
- float4 yxyz = float3(U.v).yxyz;
- float4 yxzx = float3(U.v).yxzx;
- float4 yxzy = float3(U.v).yxzy;
- float4 yxzz = float3(U.v).yxzz;
- float4 yyxx = float3(U.v).yyxx;
- float4 yyxy = float3(U.v).yyxy;
- float4 yyxz = float3(U.v).yyxz;
- float4 yyyx = float3(U.v).yyyx;
- float4 yyyy = float3(U.v).yyyy;
- float4 yyyz = float3(U.v).yyyz;
- float4 yyzx = float3(U.v).yyzx;
- float4 yyzy = float3(U.v).yyzy;
- float4 yyzz = float3(U.v).yyzz;
- float4 yzxx = float3(U.v).yzxx;
- float4 yzxy = float3(U.v).yzxy;
- float4 yzxz = float3(U.v).yzxz;
- float4 yzyx = float3(U.v).yzyx;
- float4 yzyy = float3(U.v).yzyy;
- float4 yzyz = float3(U.v).yzyz;
- float4 yzzx = float3(U.v).yzzx;
- float4 yzzy = float3(U.v).yzzy;
- float4 yzzz = float3(U.v).yzzz;
- float4 zxxx = float3(U.v).zxxx;
- float4 zxxy = float3(U.v).zxxy;
- float4 zxxz = float3(U.v).zxxz;
- float4 zxyx = float3(U.v).zxyx;
- float4 zxyy = float3(U.v).zxyy;
- float4 zxyz = float3(U.v).zxyz;
- float4 zxzx = float3(U.v).zxzx;
- float4 zxzy = float3(U.v).zxzy;
- float4 zxzz = float3(U.v).zxzz;
- float4 zyxx = float3(U.v).zyxx;
- float4 zyxy = float3(U.v).zyxy;
- float4 zyxz = float3(U.v).zyxz;
- float4 zyyx = float3(U.v).zyyx;
- float4 zyyy = float3(U.v).zyyy;
- float4 zyyz = float3(U.v).zyyz;
- float4 zyzx = float3(U.v).zyzx;
- float4 zyzy = float3(U.v).zyzy;
- float4 zyzz = float3(U.v).zyzz;
- float4 zzxx = float3(U.v).zzxx;
- float4 zzxy = float3(U.v).zzxy;
- float4 zzxz = float3(U.v).zzxz;
- float4 zzyx = float3(U.v).zzyx;
- float4 zzyy = float3(U.v).zzyy;
- float4 zzyz = float3(U.v).zzyz;
- float4 zzzx = float3(U.v).zzzx;
- float4 zzzy = float3(U.v).zzzy;
- float4 zzzz = float3(U.v).zzzz;
+void f(const constant S* const tint_symbol) {
+ float3 v = (*(tint_symbol)).v;
+ float x = (*(tint_symbol)).v[0];
+ float y = (*(tint_symbol)).v[1];
+ float z = (*(tint_symbol)).v[2];
+ float2 xx = float3((*(tint_symbol)).v).xx;
+ float2 xy = float3((*(tint_symbol)).v).xy;
+ float2 xz = float3((*(tint_symbol)).v).xz;
+ float2 yx = float3((*(tint_symbol)).v).yx;
+ float2 yy = float3((*(tint_symbol)).v).yy;
+ float2 yz = float3((*(tint_symbol)).v).yz;
+ float2 zx = float3((*(tint_symbol)).v).zx;
+ float2 zy = float3((*(tint_symbol)).v).zy;
+ float2 zz = float3((*(tint_symbol)).v).zz;
+ float3 xxx = float3((*(tint_symbol)).v).xxx;
+ float3 xxy = float3((*(tint_symbol)).v).xxy;
+ float3 xxz = float3((*(tint_symbol)).v).xxz;
+ float3 xyx = float3((*(tint_symbol)).v).xyx;
+ float3 xyy = float3((*(tint_symbol)).v).xyy;
+ float3 xyz = float3((*(tint_symbol)).v).xyz;
+ float3 xzx = float3((*(tint_symbol)).v).xzx;
+ float3 xzy = float3((*(tint_symbol)).v).xzy;
+ float3 xzz = float3((*(tint_symbol)).v).xzz;
+ float3 yxx = float3((*(tint_symbol)).v).yxx;
+ float3 yxy = float3((*(tint_symbol)).v).yxy;
+ float3 yxz = float3((*(tint_symbol)).v).yxz;
+ float3 yyx = float3((*(tint_symbol)).v).yyx;
+ float3 yyy = float3((*(tint_symbol)).v).yyy;
+ float3 yyz = float3((*(tint_symbol)).v).yyz;
+ float3 yzx = float3((*(tint_symbol)).v).yzx;
+ float3 yzy = float3((*(tint_symbol)).v).yzy;
+ float3 yzz = float3((*(tint_symbol)).v).yzz;
+ float3 zxx = float3((*(tint_symbol)).v).zxx;
+ float3 zxy = float3((*(tint_symbol)).v).zxy;
+ float3 zxz = float3((*(tint_symbol)).v).zxz;
+ float3 zyx = float3((*(tint_symbol)).v).zyx;
+ float3 zyy = float3((*(tint_symbol)).v).zyy;
+ float3 zyz = float3((*(tint_symbol)).v).zyz;
+ float3 zzx = float3((*(tint_symbol)).v).zzx;
+ float3 zzy = float3((*(tint_symbol)).v).zzy;
+ float3 zzz = float3((*(tint_symbol)).v).zzz;
+ float4 xxxx = float3((*(tint_symbol)).v).xxxx;
+ float4 xxxy = float3((*(tint_symbol)).v).xxxy;
+ float4 xxxz = float3((*(tint_symbol)).v).xxxz;
+ float4 xxyx = float3((*(tint_symbol)).v).xxyx;
+ float4 xxyy = float3((*(tint_symbol)).v).xxyy;
+ float4 xxyz = float3((*(tint_symbol)).v).xxyz;
+ float4 xxzx = float3((*(tint_symbol)).v).xxzx;
+ float4 xxzy = float3((*(tint_symbol)).v).xxzy;
+ float4 xxzz = float3((*(tint_symbol)).v).xxzz;
+ float4 xyxx = float3((*(tint_symbol)).v).xyxx;
+ float4 xyxy = float3((*(tint_symbol)).v).xyxy;
+ float4 xyxz = float3((*(tint_symbol)).v).xyxz;
+ float4 xyyx = float3((*(tint_symbol)).v).xyyx;
+ float4 xyyy = float3((*(tint_symbol)).v).xyyy;
+ float4 xyyz = float3((*(tint_symbol)).v).xyyz;
+ float4 xyzx = float3((*(tint_symbol)).v).xyzx;
+ float4 xyzy = float3((*(tint_symbol)).v).xyzy;
+ float4 xyzz = float3((*(tint_symbol)).v).xyzz;
+ float4 xzxx = float3((*(tint_symbol)).v).xzxx;
+ float4 xzxy = float3((*(tint_symbol)).v).xzxy;
+ float4 xzxz = float3((*(tint_symbol)).v).xzxz;
+ float4 xzyx = float3((*(tint_symbol)).v).xzyx;
+ float4 xzyy = float3((*(tint_symbol)).v).xzyy;
+ float4 xzyz = float3((*(tint_symbol)).v).xzyz;
+ float4 xzzx = float3((*(tint_symbol)).v).xzzx;
+ float4 xzzy = float3((*(tint_symbol)).v).xzzy;
+ float4 xzzz = float3((*(tint_symbol)).v).xzzz;
+ float4 yxxx = float3((*(tint_symbol)).v).yxxx;
+ float4 yxxy = float3((*(tint_symbol)).v).yxxy;
+ float4 yxxz = float3((*(tint_symbol)).v).yxxz;
+ float4 yxyx = float3((*(tint_symbol)).v).yxyx;
+ float4 yxyy = float3((*(tint_symbol)).v).yxyy;
+ float4 yxyz = float3((*(tint_symbol)).v).yxyz;
+ float4 yxzx = float3((*(tint_symbol)).v).yxzx;
+ float4 yxzy = float3((*(tint_symbol)).v).yxzy;
+ float4 yxzz = float3((*(tint_symbol)).v).yxzz;
+ float4 yyxx = float3((*(tint_symbol)).v).yyxx;
+ float4 yyxy = float3((*(tint_symbol)).v).yyxy;
+ float4 yyxz = float3((*(tint_symbol)).v).yyxz;
+ float4 yyyx = float3((*(tint_symbol)).v).yyyx;
+ float4 yyyy = float3((*(tint_symbol)).v).yyyy;
+ float4 yyyz = float3((*(tint_symbol)).v).yyyz;
+ float4 yyzx = float3((*(tint_symbol)).v).yyzx;
+ float4 yyzy = float3((*(tint_symbol)).v).yyzy;
+ float4 yyzz = float3((*(tint_symbol)).v).yyzz;
+ float4 yzxx = float3((*(tint_symbol)).v).yzxx;
+ float4 yzxy = float3((*(tint_symbol)).v).yzxy;
+ float4 yzxz = float3((*(tint_symbol)).v).yzxz;
+ float4 yzyx = float3((*(tint_symbol)).v).yzyx;
+ float4 yzyy = float3((*(tint_symbol)).v).yzyy;
+ float4 yzyz = float3((*(tint_symbol)).v).yzyz;
+ float4 yzzx = float3((*(tint_symbol)).v).yzzx;
+ float4 yzzy = float3((*(tint_symbol)).v).yzzy;
+ float4 yzzz = float3((*(tint_symbol)).v).yzzz;
+ float4 zxxx = float3((*(tint_symbol)).v).zxxx;
+ float4 zxxy = float3((*(tint_symbol)).v).zxxy;
+ float4 zxxz = float3((*(tint_symbol)).v).zxxz;
+ float4 zxyx = float3((*(tint_symbol)).v).zxyx;
+ float4 zxyy = float3((*(tint_symbol)).v).zxyy;
+ float4 zxyz = float3((*(tint_symbol)).v).zxyz;
+ float4 zxzx = float3((*(tint_symbol)).v).zxzx;
+ float4 zxzy = float3((*(tint_symbol)).v).zxzy;
+ float4 zxzz = float3((*(tint_symbol)).v).zxzz;
+ float4 zyxx = float3((*(tint_symbol)).v).zyxx;
+ float4 zyxy = float3((*(tint_symbol)).v).zyxy;
+ float4 zyxz = float3((*(tint_symbol)).v).zyxz;
+ float4 zyyx = float3((*(tint_symbol)).v).zyyx;
+ float4 zyyy = float3((*(tint_symbol)).v).zyyy;
+ float4 zyyz = float3((*(tint_symbol)).v).zyyz;
+ float4 zyzx = float3((*(tint_symbol)).v).zyzx;
+ float4 zyzy = float3((*(tint_symbol)).v).zyzy;
+ float4 zyzz = float3((*(tint_symbol)).v).zyzz;
+ float4 zzxx = float3((*(tint_symbol)).v).zzxx;
+ float4 zzxy = float3((*(tint_symbol)).v).zzxy;
+ float4 zzxz = float3((*(tint_symbol)).v).zzxz;
+ float4 zzyx = float3((*(tint_symbol)).v).zzyx;
+ float4 zzyy = float3((*(tint_symbol)).v).zzyy;
+ float4 zzyz = float3((*(tint_symbol)).v).zzyz;
+ float4 zzzx = float3((*(tint_symbol)).v).zzzx;
+ float4 zzzy = float3((*(tint_symbol)).v).zzzy;
+ float4 zzzz = float3((*(tint_symbol)).v).zzzz;
}
diff --git a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl
index c308b3c..d396d1f 100644
--- a/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl
+++ b/test/expressions/swizzle/read/packed_vec3/i32.wgsl.expected.msl
@@ -6,127 +6,127 @@
/* 0x000c */ int8_t tint_pad[4];
};
-void f(constant S& U) {
- int3 v = U.v;
- int x = U.v[0];
- int y = U.v[1];
- int z = U.v[2];
- int2 xx = int3(U.v).xx;
- int2 xy = int3(U.v).xy;
- int2 xz = int3(U.v).xz;
- int2 yx = int3(U.v).yx;
- int2 yy = int3(U.v).yy;
- int2 yz = int3(U.v).yz;
- int2 zx = int3(U.v).zx;
- int2 zy = int3(U.v).zy;
- int2 zz = int3(U.v).zz;
- int3 xxx = int3(U.v).xxx;
- int3 xxy = int3(U.v).xxy;
- int3 xxz = int3(U.v).xxz;
- int3 xyx = int3(U.v).xyx;
- int3 xyy = int3(U.v).xyy;
- int3 xyz = int3(U.v).xyz;
- int3 xzx = int3(U.v).xzx;
- int3 xzy = int3(U.v).xzy;
- int3 xzz = int3(U.v).xzz;
- int3 yxx = int3(U.v).yxx;
- int3 yxy = int3(U.v).yxy;
- int3 yxz = int3(U.v).yxz;
- int3 yyx = int3(U.v).yyx;
- int3 yyy = int3(U.v).yyy;
- int3 yyz = int3(U.v).yyz;
- int3 yzx = int3(U.v).yzx;
- int3 yzy = int3(U.v).yzy;
- int3 yzz = int3(U.v).yzz;
- int3 zxx = int3(U.v).zxx;
- int3 zxy = int3(U.v).zxy;
- int3 zxz = int3(U.v).zxz;
- int3 zyx = int3(U.v).zyx;
- int3 zyy = int3(U.v).zyy;
- int3 zyz = int3(U.v).zyz;
- int3 zzx = int3(U.v).zzx;
- int3 zzy = int3(U.v).zzy;
- int3 zzz = int3(U.v).zzz;
- int4 xxxx = int3(U.v).xxxx;
- int4 xxxy = int3(U.v).xxxy;
- int4 xxxz = int3(U.v).xxxz;
- int4 xxyx = int3(U.v).xxyx;
- int4 xxyy = int3(U.v).xxyy;
- int4 xxyz = int3(U.v).xxyz;
- int4 xxzx = int3(U.v).xxzx;
- int4 xxzy = int3(U.v).xxzy;
- int4 xxzz = int3(U.v).xxzz;
- int4 xyxx = int3(U.v).xyxx;
- int4 xyxy = int3(U.v).xyxy;
- int4 xyxz = int3(U.v).xyxz;
- int4 xyyx = int3(U.v).xyyx;
- int4 xyyy = int3(U.v).xyyy;
- int4 xyyz = int3(U.v).xyyz;
- int4 xyzx = int3(U.v).xyzx;
- int4 xyzy = int3(U.v).xyzy;
- int4 xyzz = int3(U.v).xyzz;
- int4 xzxx = int3(U.v).xzxx;
- int4 xzxy = int3(U.v).xzxy;
- int4 xzxz = int3(U.v).xzxz;
- int4 xzyx = int3(U.v).xzyx;
- int4 xzyy = int3(U.v).xzyy;
- int4 xzyz = int3(U.v).xzyz;
- int4 xzzx = int3(U.v).xzzx;
- int4 xzzy = int3(U.v).xzzy;
- int4 xzzz = int3(U.v).xzzz;
- int4 yxxx = int3(U.v).yxxx;
- int4 yxxy = int3(U.v).yxxy;
- int4 yxxz = int3(U.v).yxxz;
- int4 yxyx = int3(U.v).yxyx;
- int4 yxyy = int3(U.v).yxyy;
- int4 yxyz = int3(U.v).yxyz;
- int4 yxzx = int3(U.v).yxzx;
- int4 yxzy = int3(U.v).yxzy;
- int4 yxzz = int3(U.v).yxzz;
- int4 yyxx = int3(U.v).yyxx;
- int4 yyxy = int3(U.v).yyxy;
- int4 yyxz = int3(U.v).yyxz;
- int4 yyyx = int3(U.v).yyyx;
- int4 yyyy = int3(U.v).yyyy;
- int4 yyyz = int3(U.v).yyyz;
- int4 yyzx = int3(U.v).yyzx;
- int4 yyzy = int3(U.v).yyzy;
- int4 yyzz = int3(U.v).yyzz;
- int4 yzxx = int3(U.v).yzxx;
- int4 yzxy = int3(U.v).yzxy;
- int4 yzxz = int3(U.v).yzxz;
- int4 yzyx = int3(U.v).yzyx;
- int4 yzyy = int3(U.v).yzyy;
- int4 yzyz = int3(U.v).yzyz;
- int4 yzzx = int3(U.v).yzzx;
- int4 yzzy = int3(U.v).yzzy;
- int4 yzzz = int3(U.v).yzzz;
- int4 zxxx = int3(U.v).zxxx;
- int4 zxxy = int3(U.v).zxxy;
- int4 zxxz = int3(U.v).zxxz;
- int4 zxyx = int3(U.v).zxyx;
- int4 zxyy = int3(U.v).zxyy;
- int4 zxyz = int3(U.v).zxyz;
- int4 zxzx = int3(U.v).zxzx;
- int4 zxzy = int3(U.v).zxzy;
- int4 zxzz = int3(U.v).zxzz;
- int4 zyxx = int3(U.v).zyxx;
- int4 zyxy = int3(U.v).zyxy;
- int4 zyxz = int3(U.v).zyxz;
- int4 zyyx = int3(U.v).zyyx;
- int4 zyyy = int3(U.v).zyyy;
- int4 zyyz = int3(U.v).zyyz;
- int4 zyzx = int3(U.v).zyzx;
- int4 zyzy = int3(U.v).zyzy;
- int4 zyzz = int3(U.v).zyzz;
- int4 zzxx = int3(U.v).zzxx;
- int4 zzxy = int3(U.v).zzxy;
- int4 zzxz = int3(U.v).zzxz;
- int4 zzyx = int3(U.v).zzyx;
- int4 zzyy = int3(U.v).zzyy;
- int4 zzyz = int3(U.v).zzyz;
- int4 zzzx = int3(U.v).zzzx;
- int4 zzzy = int3(U.v).zzzy;
- int4 zzzz = int3(U.v).zzzz;
+void f(const constant S* const tint_symbol) {
+ int3 v = (*(tint_symbol)).v;
+ int x = (*(tint_symbol)).v[0];
+ int y = (*(tint_symbol)).v[1];
+ int z = (*(tint_symbol)).v[2];
+ int2 xx = int3((*(tint_symbol)).v).xx;
+ int2 xy = int3((*(tint_symbol)).v).xy;
+ int2 xz = int3((*(tint_symbol)).v).xz;
+ int2 yx = int3((*(tint_symbol)).v).yx;
+ int2 yy = int3((*(tint_symbol)).v).yy;
+ int2 yz = int3((*(tint_symbol)).v).yz;
+ int2 zx = int3((*(tint_symbol)).v).zx;
+ int2 zy = int3((*(tint_symbol)).v).zy;
+ int2 zz = int3((*(tint_symbol)).v).zz;
+ int3 xxx = int3((*(tint_symbol)).v).xxx;
+ int3 xxy = int3((*(tint_symbol)).v).xxy;
+ int3 xxz = int3((*(tint_symbol)).v).xxz;
+ int3 xyx = int3((*(tint_symbol)).v).xyx;
+ int3 xyy = int3((*(tint_symbol)).v).xyy;
+ int3 xyz = int3((*(tint_symbol)).v).xyz;
+ int3 xzx = int3((*(tint_symbol)).v).xzx;
+ int3 xzy = int3((*(tint_symbol)).v).xzy;
+ int3 xzz = int3((*(tint_symbol)).v).xzz;
+ int3 yxx = int3((*(tint_symbol)).v).yxx;
+ int3 yxy = int3((*(tint_symbol)).v).yxy;
+ int3 yxz = int3((*(tint_symbol)).v).yxz;
+ int3 yyx = int3((*(tint_symbol)).v).yyx;
+ int3 yyy = int3((*(tint_symbol)).v).yyy;
+ int3 yyz = int3((*(tint_symbol)).v).yyz;
+ int3 yzx = int3((*(tint_symbol)).v).yzx;
+ int3 yzy = int3((*(tint_symbol)).v).yzy;
+ int3 yzz = int3((*(tint_symbol)).v).yzz;
+ int3 zxx = int3((*(tint_symbol)).v).zxx;
+ int3 zxy = int3((*(tint_symbol)).v).zxy;
+ int3 zxz = int3((*(tint_symbol)).v).zxz;
+ int3 zyx = int3((*(tint_symbol)).v).zyx;
+ int3 zyy = int3((*(tint_symbol)).v).zyy;
+ int3 zyz = int3((*(tint_symbol)).v).zyz;
+ int3 zzx = int3((*(tint_symbol)).v).zzx;
+ int3 zzy = int3((*(tint_symbol)).v).zzy;
+ int3 zzz = int3((*(tint_symbol)).v).zzz;
+ int4 xxxx = int3((*(tint_symbol)).v).xxxx;
+ int4 xxxy = int3((*(tint_symbol)).v).xxxy;
+ int4 xxxz = int3((*(tint_symbol)).v).xxxz;
+ int4 xxyx = int3((*(tint_symbol)).v).xxyx;
+ int4 xxyy = int3((*(tint_symbol)).v).xxyy;
+ int4 xxyz = int3((*(tint_symbol)).v).xxyz;
+ int4 xxzx = int3((*(tint_symbol)).v).xxzx;
+ int4 xxzy = int3((*(tint_symbol)).v).xxzy;
+ int4 xxzz = int3((*(tint_symbol)).v).xxzz;
+ int4 xyxx = int3((*(tint_symbol)).v).xyxx;
+ int4 xyxy = int3((*(tint_symbol)).v).xyxy;
+ int4 xyxz = int3((*(tint_symbol)).v).xyxz;
+ int4 xyyx = int3((*(tint_symbol)).v).xyyx;
+ int4 xyyy = int3((*(tint_symbol)).v).xyyy;
+ int4 xyyz = int3((*(tint_symbol)).v).xyyz;
+ int4 xyzx = int3((*(tint_symbol)).v).xyzx;
+ int4 xyzy = int3((*(tint_symbol)).v).xyzy;
+ int4 xyzz = int3((*(tint_symbol)).v).xyzz;
+ int4 xzxx = int3((*(tint_symbol)).v).xzxx;
+ int4 xzxy = int3((*(tint_symbol)).v).xzxy;
+ int4 xzxz = int3((*(tint_symbol)).v).xzxz;
+ int4 xzyx = int3((*(tint_symbol)).v).xzyx;
+ int4 xzyy = int3((*(tint_symbol)).v).xzyy;
+ int4 xzyz = int3((*(tint_symbol)).v).xzyz;
+ int4 xzzx = int3((*(tint_symbol)).v).xzzx;
+ int4 xzzy = int3((*(tint_symbol)).v).xzzy;
+ int4 xzzz = int3((*(tint_symbol)).v).xzzz;
+ int4 yxxx = int3((*(tint_symbol)).v).yxxx;
+ int4 yxxy = int3((*(tint_symbol)).v).yxxy;
+ int4 yxxz = int3((*(tint_symbol)).v).yxxz;
+ int4 yxyx = int3((*(tint_symbol)).v).yxyx;
+ int4 yxyy = int3((*(tint_symbol)).v).yxyy;
+ int4 yxyz = int3((*(tint_symbol)).v).yxyz;
+ int4 yxzx = int3((*(tint_symbol)).v).yxzx;
+ int4 yxzy = int3((*(tint_symbol)).v).yxzy;
+ int4 yxzz = int3((*(tint_symbol)).v).yxzz;
+ int4 yyxx = int3((*(tint_symbol)).v).yyxx;
+ int4 yyxy = int3((*(tint_symbol)).v).yyxy;
+ int4 yyxz = int3((*(tint_symbol)).v).yyxz;
+ int4 yyyx = int3((*(tint_symbol)).v).yyyx;
+ int4 yyyy = int3((*(tint_symbol)).v).yyyy;
+ int4 yyyz = int3((*(tint_symbol)).v).yyyz;
+ int4 yyzx = int3((*(tint_symbol)).v).yyzx;
+ int4 yyzy = int3((*(tint_symbol)).v).yyzy;
+ int4 yyzz = int3((*(tint_symbol)).v).yyzz;
+ int4 yzxx = int3((*(tint_symbol)).v).yzxx;
+ int4 yzxy = int3((*(tint_symbol)).v).yzxy;
+ int4 yzxz = int3((*(tint_symbol)).v).yzxz;
+ int4 yzyx = int3((*(tint_symbol)).v).yzyx;
+ int4 yzyy = int3((*(tint_symbol)).v).yzyy;
+ int4 yzyz = int3((*(tint_symbol)).v).yzyz;
+ int4 yzzx = int3((*(tint_symbol)).v).yzzx;
+ int4 yzzy = int3((*(tint_symbol)).v).yzzy;
+ int4 yzzz = int3((*(tint_symbol)).v).yzzz;
+ int4 zxxx = int3((*(tint_symbol)).v).zxxx;
+ int4 zxxy = int3((*(tint_symbol)).v).zxxy;
+ int4 zxxz = int3((*(tint_symbol)).v).zxxz;
+ int4 zxyx = int3((*(tint_symbol)).v).zxyx;
+ int4 zxyy = int3((*(tint_symbol)).v).zxyy;
+ int4 zxyz = int3((*(tint_symbol)).v).zxyz;
+ int4 zxzx = int3((*(tint_symbol)).v).zxzx;
+ int4 zxzy = int3((*(tint_symbol)).v).zxzy;
+ int4 zxzz = int3((*(tint_symbol)).v).zxzz;
+ int4 zyxx = int3((*(tint_symbol)).v).zyxx;
+ int4 zyxy = int3((*(tint_symbol)).v).zyxy;
+ int4 zyxz = int3((*(tint_symbol)).v).zyxz;
+ int4 zyyx = int3((*(tint_symbol)).v).zyyx;
+ int4 zyyy = int3((*(tint_symbol)).v).zyyy;
+ int4 zyyz = int3((*(tint_symbol)).v).zyyz;
+ int4 zyzx = int3((*(tint_symbol)).v).zyzx;
+ int4 zyzy = int3((*(tint_symbol)).v).zyzy;
+ int4 zyzz = int3((*(tint_symbol)).v).zyzz;
+ int4 zzxx = int3((*(tint_symbol)).v).zzxx;
+ int4 zzxy = int3((*(tint_symbol)).v).zzxy;
+ int4 zzxz = int3((*(tint_symbol)).v).zzxz;
+ int4 zzyx = int3((*(tint_symbol)).v).zzyx;
+ int4 zzyy = int3((*(tint_symbol)).v).zzyy;
+ int4 zzyz = int3((*(tint_symbol)).v).zzyz;
+ int4 zzzx = int3((*(tint_symbol)).v).zzzx;
+ int4 zzzy = int3((*(tint_symbol)).v).zzzy;
+ int4 zzzz = int3((*(tint_symbol)).v).zzzz;
}
diff --git a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl
index d3ff2d4..8f6a4a6 100644
--- a/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl
+++ b/test/expressions/swizzle/read/packed_vec3/u32.wgsl.expected.msl
@@ -6,127 +6,127 @@
/* 0x000c */ int8_t tint_pad[4];
};
-void f(constant S& U) {
- uint3 v = U.v;
- uint x = U.v[0];
- uint y = U.v[1];
- uint z = U.v[2];
- uint2 xx = uint3(U.v).xx;
- uint2 xy = uint3(U.v).xy;
- uint2 xz = uint3(U.v).xz;
- uint2 yx = uint3(U.v).yx;
- uint2 yy = uint3(U.v).yy;
- uint2 yz = uint3(U.v).yz;
- uint2 zx = uint3(U.v).zx;
- uint2 zy = uint3(U.v).zy;
- uint2 zz = uint3(U.v).zz;
- uint3 xxx = uint3(U.v).xxx;
- uint3 xxy = uint3(U.v).xxy;
- uint3 xxz = uint3(U.v).xxz;
- uint3 xyx = uint3(U.v).xyx;
- uint3 xyy = uint3(U.v).xyy;
- uint3 xyz = uint3(U.v).xyz;
- uint3 xzx = uint3(U.v).xzx;
- uint3 xzy = uint3(U.v).xzy;
- uint3 xzz = uint3(U.v).xzz;
- uint3 yxx = uint3(U.v).yxx;
- uint3 yxy = uint3(U.v).yxy;
- uint3 yxz = uint3(U.v).yxz;
- uint3 yyx = uint3(U.v).yyx;
- uint3 yyy = uint3(U.v).yyy;
- uint3 yyz = uint3(U.v).yyz;
- uint3 yzx = uint3(U.v).yzx;
- uint3 yzy = uint3(U.v).yzy;
- uint3 yzz = uint3(U.v).yzz;
- uint3 zxx = uint3(U.v).zxx;
- uint3 zxy = uint3(U.v).zxy;
- uint3 zxz = uint3(U.v).zxz;
- uint3 zyx = uint3(U.v).zyx;
- uint3 zyy = uint3(U.v).zyy;
- uint3 zyz = uint3(U.v).zyz;
- uint3 zzx = uint3(U.v).zzx;
- uint3 zzy = uint3(U.v).zzy;
- uint3 zzz = uint3(U.v).zzz;
- uint4 xxxx = uint3(U.v).xxxx;
- uint4 xxxy = uint3(U.v).xxxy;
- uint4 xxxz = uint3(U.v).xxxz;
- uint4 xxyx = uint3(U.v).xxyx;
- uint4 xxyy = uint3(U.v).xxyy;
- uint4 xxyz = uint3(U.v).xxyz;
- uint4 xxzx = uint3(U.v).xxzx;
- uint4 xxzy = uint3(U.v).xxzy;
- uint4 xxzz = uint3(U.v).xxzz;
- uint4 xyxx = uint3(U.v).xyxx;
- uint4 xyxy = uint3(U.v).xyxy;
- uint4 xyxz = uint3(U.v).xyxz;
- uint4 xyyx = uint3(U.v).xyyx;
- uint4 xyyy = uint3(U.v).xyyy;
- uint4 xyyz = uint3(U.v).xyyz;
- uint4 xyzx = uint3(U.v).xyzx;
- uint4 xyzy = uint3(U.v).xyzy;
- uint4 xyzz = uint3(U.v).xyzz;
- uint4 xzxx = uint3(U.v).xzxx;
- uint4 xzxy = uint3(U.v).xzxy;
- uint4 xzxz = uint3(U.v).xzxz;
- uint4 xzyx = uint3(U.v).xzyx;
- uint4 xzyy = uint3(U.v).xzyy;
- uint4 xzyz = uint3(U.v).xzyz;
- uint4 xzzx = uint3(U.v).xzzx;
- uint4 xzzy = uint3(U.v).xzzy;
- uint4 xzzz = uint3(U.v).xzzz;
- uint4 yxxx = uint3(U.v).yxxx;
- uint4 yxxy = uint3(U.v).yxxy;
- uint4 yxxz = uint3(U.v).yxxz;
- uint4 yxyx = uint3(U.v).yxyx;
- uint4 yxyy = uint3(U.v).yxyy;
- uint4 yxyz = uint3(U.v).yxyz;
- uint4 yxzx = uint3(U.v).yxzx;
- uint4 yxzy = uint3(U.v).yxzy;
- uint4 yxzz = uint3(U.v).yxzz;
- uint4 yyxx = uint3(U.v).yyxx;
- uint4 yyxy = uint3(U.v).yyxy;
- uint4 yyxz = uint3(U.v).yyxz;
- uint4 yyyx = uint3(U.v).yyyx;
- uint4 yyyy = uint3(U.v).yyyy;
- uint4 yyyz = uint3(U.v).yyyz;
- uint4 yyzx = uint3(U.v).yyzx;
- uint4 yyzy = uint3(U.v).yyzy;
- uint4 yyzz = uint3(U.v).yyzz;
- uint4 yzxx = uint3(U.v).yzxx;
- uint4 yzxy = uint3(U.v).yzxy;
- uint4 yzxz = uint3(U.v).yzxz;
- uint4 yzyx = uint3(U.v).yzyx;
- uint4 yzyy = uint3(U.v).yzyy;
- uint4 yzyz = uint3(U.v).yzyz;
- uint4 yzzx = uint3(U.v).yzzx;
- uint4 yzzy = uint3(U.v).yzzy;
- uint4 yzzz = uint3(U.v).yzzz;
- uint4 zxxx = uint3(U.v).zxxx;
- uint4 zxxy = uint3(U.v).zxxy;
- uint4 zxxz = uint3(U.v).zxxz;
- uint4 zxyx = uint3(U.v).zxyx;
- uint4 zxyy = uint3(U.v).zxyy;
- uint4 zxyz = uint3(U.v).zxyz;
- uint4 zxzx = uint3(U.v).zxzx;
- uint4 zxzy = uint3(U.v).zxzy;
- uint4 zxzz = uint3(U.v).zxzz;
- uint4 zyxx = uint3(U.v).zyxx;
- uint4 zyxy = uint3(U.v).zyxy;
- uint4 zyxz = uint3(U.v).zyxz;
- uint4 zyyx = uint3(U.v).zyyx;
- uint4 zyyy = uint3(U.v).zyyy;
- uint4 zyyz = uint3(U.v).zyyz;
- uint4 zyzx = uint3(U.v).zyzx;
- uint4 zyzy = uint3(U.v).zyzy;
- uint4 zyzz = uint3(U.v).zyzz;
- uint4 zzxx = uint3(U.v).zzxx;
- uint4 zzxy = uint3(U.v).zzxy;
- uint4 zzxz = uint3(U.v).zzxz;
- uint4 zzyx = uint3(U.v).zzyx;
- uint4 zzyy = uint3(U.v).zzyy;
- uint4 zzyz = uint3(U.v).zzyz;
- uint4 zzzx = uint3(U.v).zzzx;
- uint4 zzzy = uint3(U.v).zzzy;
- uint4 zzzz = uint3(U.v).zzzz;
+void f(const constant S* const tint_symbol) {
+ uint3 v = (*(tint_symbol)).v;
+ uint x = (*(tint_symbol)).v[0];
+ uint y = (*(tint_symbol)).v[1];
+ uint z = (*(tint_symbol)).v[2];
+ uint2 xx = uint3((*(tint_symbol)).v).xx;
+ uint2 xy = uint3((*(tint_symbol)).v).xy;
+ uint2 xz = uint3((*(tint_symbol)).v).xz;
+ uint2 yx = uint3((*(tint_symbol)).v).yx;
+ uint2 yy = uint3((*(tint_symbol)).v).yy;
+ uint2 yz = uint3((*(tint_symbol)).v).yz;
+ uint2 zx = uint3((*(tint_symbol)).v).zx;
+ uint2 zy = uint3((*(tint_symbol)).v).zy;
+ uint2 zz = uint3((*(tint_symbol)).v).zz;
+ uint3 xxx = uint3((*(tint_symbol)).v).xxx;
+ uint3 xxy = uint3((*(tint_symbol)).v).xxy;
+ uint3 xxz = uint3((*(tint_symbol)).v).xxz;
+ uint3 xyx = uint3((*(tint_symbol)).v).xyx;
+ uint3 xyy = uint3((*(tint_symbol)).v).xyy;
+ uint3 xyz = uint3((*(tint_symbol)).v).xyz;
+ uint3 xzx = uint3((*(tint_symbol)).v).xzx;
+ uint3 xzy = uint3((*(tint_symbol)).v).xzy;
+ uint3 xzz = uint3((*(tint_symbol)).v).xzz;
+ uint3 yxx = uint3((*(tint_symbol)).v).yxx;
+ uint3 yxy = uint3((*(tint_symbol)).v).yxy;
+ uint3 yxz = uint3((*(tint_symbol)).v).yxz;
+ uint3 yyx = uint3((*(tint_symbol)).v).yyx;
+ uint3 yyy = uint3((*(tint_symbol)).v).yyy;
+ uint3 yyz = uint3((*(tint_symbol)).v).yyz;
+ uint3 yzx = uint3((*(tint_symbol)).v).yzx;
+ uint3 yzy = uint3((*(tint_symbol)).v).yzy;
+ uint3 yzz = uint3((*(tint_symbol)).v).yzz;
+ uint3 zxx = uint3((*(tint_symbol)).v).zxx;
+ uint3 zxy = uint3((*(tint_symbol)).v).zxy;
+ uint3 zxz = uint3((*(tint_symbol)).v).zxz;
+ uint3 zyx = uint3((*(tint_symbol)).v).zyx;
+ uint3 zyy = uint3((*(tint_symbol)).v).zyy;
+ uint3 zyz = uint3((*(tint_symbol)).v).zyz;
+ uint3 zzx = uint3((*(tint_symbol)).v).zzx;
+ uint3 zzy = uint3((*(tint_symbol)).v).zzy;
+ uint3 zzz = uint3((*(tint_symbol)).v).zzz;
+ uint4 xxxx = uint3((*(tint_symbol)).v).xxxx;
+ uint4 xxxy = uint3((*(tint_symbol)).v).xxxy;
+ uint4 xxxz = uint3((*(tint_symbol)).v).xxxz;
+ uint4 xxyx = uint3((*(tint_symbol)).v).xxyx;
+ uint4 xxyy = uint3((*(tint_symbol)).v).xxyy;
+ uint4 xxyz = uint3((*(tint_symbol)).v).xxyz;
+ uint4 xxzx = uint3((*(tint_symbol)).v).xxzx;
+ uint4 xxzy = uint3((*(tint_symbol)).v).xxzy;
+ uint4 xxzz = uint3((*(tint_symbol)).v).xxzz;
+ uint4 xyxx = uint3((*(tint_symbol)).v).xyxx;
+ uint4 xyxy = uint3((*(tint_symbol)).v).xyxy;
+ uint4 xyxz = uint3((*(tint_symbol)).v).xyxz;
+ uint4 xyyx = uint3((*(tint_symbol)).v).xyyx;
+ uint4 xyyy = uint3((*(tint_symbol)).v).xyyy;
+ uint4 xyyz = uint3((*(tint_symbol)).v).xyyz;
+ uint4 xyzx = uint3((*(tint_symbol)).v).xyzx;
+ uint4 xyzy = uint3((*(tint_symbol)).v).xyzy;
+ uint4 xyzz = uint3((*(tint_symbol)).v).xyzz;
+ uint4 xzxx = uint3((*(tint_symbol)).v).xzxx;
+ uint4 xzxy = uint3((*(tint_symbol)).v).xzxy;
+ uint4 xzxz = uint3((*(tint_symbol)).v).xzxz;
+ uint4 xzyx = uint3((*(tint_symbol)).v).xzyx;
+ uint4 xzyy = uint3((*(tint_symbol)).v).xzyy;
+ uint4 xzyz = uint3((*(tint_symbol)).v).xzyz;
+ uint4 xzzx = uint3((*(tint_symbol)).v).xzzx;
+ uint4 xzzy = uint3((*(tint_symbol)).v).xzzy;
+ uint4 xzzz = uint3((*(tint_symbol)).v).xzzz;
+ uint4 yxxx = uint3((*(tint_symbol)).v).yxxx;
+ uint4 yxxy = uint3((*(tint_symbol)).v).yxxy;
+ uint4 yxxz = uint3((*(tint_symbol)).v).yxxz;
+ uint4 yxyx = uint3((*(tint_symbol)).v).yxyx;
+ uint4 yxyy = uint3((*(tint_symbol)).v).yxyy;
+ uint4 yxyz = uint3((*(tint_symbol)).v).yxyz;
+ uint4 yxzx = uint3((*(tint_symbol)).v).yxzx;
+ uint4 yxzy = uint3((*(tint_symbol)).v).yxzy;
+ uint4 yxzz = uint3((*(tint_symbol)).v).yxzz;
+ uint4 yyxx = uint3((*(tint_symbol)).v).yyxx;
+ uint4 yyxy = uint3((*(tint_symbol)).v).yyxy;
+ uint4 yyxz = uint3((*(tint_symbol)).v).yyxz;
+ uint4 yyyx = uint3((*(tint_symbol)).v).yyyx;
+ uint4 yyyy = uint3((*(tint_symbol)).v).yyyy;
+ uint4 yyyz = uint3((*(tint_symbol)).v).yyyz;
+ uint4 yyzx = uint3((*(tint_symbol)).v).yyzx;
+ uint4 yyzy = uint3((*(tint_symbol)).v).yyzy;
+ uint4 yyzz = uint3((*(tint_symbol)).v).yyzz;
+ uint4 yzxx = uint3((*(tint_symbol)).v).yzxx;
+ uint4 yzxy = uint3((*(tint_symbol)).v).yzxy;
+ uint4 yzxz = uint3((*(tint_symbol)).v).yzxz;
+ uint4 yzyx = uint3((*(tint_symbol)).v).yzyx;
+ uint4 yzyy = uint3((*(tint_symbol)).v).yzyy;
+ uint4 yzyz = uint3((*(tint_symbol)).v).yzyz;
+ uint4 yzzx = uint3((*(tint_symbol)).v).yzzx;
+ uint4 yzzy = uint3((*(tint_symbol)).v).yzzy;
+ uint4 yzzz = uint3((*(tint_symbol)).v).yzzz;
+ uint4 zxxx = uint3((*(tint_symbol)).v).zxxx;
+ uint4 zxxy = uint3((*(tint_symbol)).v).zxxy;
+ uint4 zxxz = uint3((*(tint_symbol)).v).zxxz;
+ uint4 zxyx = uint3((*(tint_symbol)).v).zxyx;
+ uint4 zxyy = uint3((*(tint_symbol)).v).zxyy;
+ uint4 zxyz = uint3((*(tint_symbol)).v).zxyz;
+ uint4 zxzx = uint3((*(tint_symbol)).v).zxzx;
+ uint4 zxzy = uint3((*(tint_symbol)).v).zxzy;
+ uint4 zxzz = uint3((*(tint_symbol)).v).zxzz;
+ uint4 zyxx = uint3((*(tint_symbol)).v).zyxx;
+ uint4 zyxy = uint3((*(tint_symbol)).v).zyxy;
+ uint4 zyxz = uint3((*(tint_symbol)).v).zyxz;
+ uint4 zyyx = uint3((*(tint_symbol)).v).zyyx;
+ uint4 zyyy = uint3((*(tint_symbol)).v).zyyy;
+ uint4 zyyz = uint3((*(tint_symbol)).v).zyyz;
+ uint4 zyzx = uint3((*(tint_symbol)).v).zyzx;
+ uint4 zyzy = uint3((*(tint_symbol)).v).zyzy;
+ uint4 zyzz = uint3((*(tint_symbol)).v).zyzz;
+ uint4 zzxx = uint3((*(tint_symbol)).v).zzxx;
+ uint4 zzxy = uint3((*(tint_symbol)).v).zzxy;
+ uint4 zzxz = uint3((*(tint_symbol)).v).zzxz;
+ uint4 zzyx = uint3((*(tint_symbol)).v).zzyx;
+ uint4 zzyy = uint3((*(tint_symbol)).v).zzyy;
+ uint4 zzyz = uint3((*(tint_symbol)).v).zzyz;
+ uint4 zzzx = uint3((*(tint_symbol)).v).zzzx;
+ uint4 zzzy = uint3((*(tint_symbol)).v).zzzy;
+ uint4 zzzz = uint3((*(tint_symbol)).v).zzzz;
}
diff --git a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl
index 80ad293..e726778 100644
--- a/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl
+++ b/test/expressions/swizzle/write/packed_vec3/f32.wgsl.expected.msl
@@ -17,10 +17,10 @@
/* 0x000c */ int8_t tint_pad[4];
};
-void f(device S& U) {
- U.v = float3(1.0f, 2.0f, 3.0f);
- U.v[0] = 1.0f;
- U.v[1] = 2.0f;
- U.v[2] = 3.0f;
+void f(device S* const tint_symbol) {
+ (*(tint_symbol)).v = float3(1.0f, 2.0f, 3.0f);
+ (*(tint_symbol)).v[0] = 1.0f;
+ (*(tint_symbol)).v[1] = 2.0f;
+ (*(tint_symbol)).v[2] = 3.0f;
}
diff --git a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl
index 3a519e5..2bcecc1 100644
--- a/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl
+++ b/test/expressions/swizzle/write/packed_vec3/i32.wgsl.expected.msl
@@ -6,10 +6,10 @@
/* 0x000c */ int8_t tint_pad[4];
};
-void f(device S& U) {
- U.v = int3(1, 2, 3);
- U.v[0] = 1;
- U.v[1] = 2;
- U.v[2] = 3;
+void f(device S* const tint_symbol) {
+ (*(tint_symbol)).v = int3(1, 2, 3);
+ (*(tint_symbol)).v[0] = 1;
+ (*(tint_symbol)).v[1] = 2;
+ (*(tint_symbol)).v[2] = 3;
}
diff --git a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl
index b12b460..b55912d 100644
--- a/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl
+++ b/test/expressions/swizzle/write/packed_vec3/u32.wgsl.expected.msl
@@ -6,10 +6,10 @@
/* 0x000c */ int8_t tint_pad[4];
};
-void f(device S& U) {
- U.v = uint3(1u, 2u, 3u);
- U.v[0] = 1u;
- U.v[1] = 2u;
- U.v[2] = 3u;
+void f(device S* const tint_symbol) {
+ (*(tint_symbol)).v = uint3(1u, 2u, 3u);
+ (*(tint_symbol)).v[0] = 1u;
+ (*(tint_symbol)).v[1] = 2u;
+ (*(tint_symbol)).v[2] = 3u;
}
diff --git a/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.msl b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.msl
index 9c7e44c..28a8285 100644
--- a/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.msl
+++ b/test/intrinsics/arrayLength/complex_via_let.wgsl.expected.msl
@@ -5,11 +5,11 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct S {
- /* 0x0000 */ int a[1];
+ int a[1];
};
-kernel void tint_symbol(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- uint const l1 = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+kernel void tint_symbol(const constant tint_symbol_1* tint_symbol_3 [[buffer(30)]]) {
+ uint const l1 = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
return;
}
diff --git a/test/intrinsics/arrayLength/deprecated.wgsl.expected.msl b/test/intrinsics/arrayLength/deprecated.wgsl.expected.msl
index 40f5a45..90f1512 100644
--- a/test/intrinsics/arrayLength/deprecated.wgsl.expected.msl
+++ b/test/intrinsics/arrayLength/deprecated.wgsl.expected.msl
@@ -5,12 +5,12 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct S {
- /* 0x0000 */ int a[1];
+ int a[1];
};
-kernel void tint_symbol(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- uint const l1 = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
- uint const l2 = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+kernel void tint_symbol(const constant tint_symbol_1* tint_symbol_3 [[buffer(30)]]) {
+ uint const l1 = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
+ uint const l2 = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
return;
}
diff --git a/test/intrinsics/arrayLength/simple.wgsl.expected.msl b/test/intrinsics/arrayLength/simple.wgsl.expected.msl
index 9c7e44c..28a8285 100644
--- a/test/intrinsics/arrayLength/simple.wgsl.expected.msl
+++ b/test/intrinsics/arrayLength/simple.wgsl.expected.msl
@@ -5,11 +5,11 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct S {
- /* 0x0000 */ int a[1];
+ int a[1];
};
-kernel void tint_symbol(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- uint const l1 = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+kernel void tint_symbol(const constant tint_symbol_1* tint_symbol_3 [[buffer(30)]]) {
+ uint const l1 = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
return;
}
diff --git a/test/intrinsics/arrayLength/via_let.wgsl.expected.msl b/test/intrinsics/arrayLength/via_let.wgsl.expected.msl
index 9c7e44c..28a8285 100644
--- a/test/intrinsics/arrayLength/via_let.wgsl.expected.msl
+++ b/test/intrinsics/arrayLength/via_let.wgsl.expected.msl
@@ -5,11 +5,11 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct S {
- /* 0x0000 */ int a[1];
+ int a[1];
};
-kernel void tint_symbol(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- uint const l1 = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+kernel void tint_symbol(const constant tint_symbol_1* tint_symbol_3 [[buffer(30)]]) {
+ uint const l1 = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
return;
}
diff --git a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.msl b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.msl
index 9c7e44c..28a8285 100644
--- a/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.msl
+++ b/test/intrinsics/arrayLength/via_let_complex.wgsl.expected.msl
@@ -5,11 +5,11 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct S {
- /* 0x0000 */ int a[1];
+ int a[1];
};
-kernel void tint_symbol(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- uint const l1 = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+kernel void tint_symbol(const constant tint_symbol_1* tint_symbol_3 [[buffer(30)]]) {
+ uint const l1 = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
return;
}
diff --git a/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.msl b/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.msl
index dfb7484..8835e97 100644
--- a/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.msl
+++ b/test/intrinsics/gen/arrayLength/1588cd.wgsl.expected.msl
@@ -5,35 +5,35 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct SB_RO {
- /* 0x0000 */ int arg_0[1];
+ int arg_0[1];
};
struct tint_symbol {
float4 value [[position]];
};
-void arrayLength_1588cd(constant tint_symbol_1& tint_symbol_2) {
- uint res = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+void arrayLength_1588cd(const constant tint_symbol_1* const tint_symbol_3) {
+ uint res = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
}
-float4 vertex_main_inner(constant tint_symbol_1& tint_symbol_2) {
- arrayLength_1588cd(tint_symbol_2);
+float4 vertex_main_inner(const constant tint_symbol_1* const tint_symbol_4) {
+ arrayLength_1588cd(tint_symbol_4);
return float4();
}
-vertex tint_symbol vertex_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_2);
+vertex tint_symbol vertex_main(const constant tint_symbol_1* tint_symbol_5 [[buffer(30)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_5);
tint_symbol wrapper_result = {};
wrapper_result.value = inner_result;
return wrapper_result;
}
-fragment void fragment_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_1588cd(tint_symbol_2);
+fragment void fragment_main(const constant tint_symbol_1* tint_symbol_6 [[buffer(30)]]) {
+ arrayLength_1588cd(tint_symbol_6);
return;
}
-kernel void compute_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_1588cd(tint_symbol_2);
+kernel void compute_main(const constant tint_symbol_1* tint_symbol_7 [[buffer(30)]]) {
+ arrayLength_1588cd(tint_symbol_7);
return;
}
diff --git a/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.msl b/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.msl
index b5679b7..4fd3c1c 100644
--- a/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.msl
+++ b/test/intrinsics/gen/arrayLength/61b1c7.wgsl.expected.msl
@@ -5,35 +5,35 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct SB_RW {
- /* 0x0000 */ int arg_0[1];
+ int arg_0[1];
};
struct tint_symbol {
float4 value [[position]];
};
-void arrayLength_61b1c7(constant tint_symbol_1& tint_symbol_2) {
- uint res = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+void arrayLength_61b1c7(const constant tint_symbol_1* const tint_symbol_3) {
+ uint res = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
}
-float4 vertex_main_inner(constant tint_symbol_1& tint_symbol_2) {
- arrayLength_61b1c7(tint_symbol_2);
+float4 vertex_main_inner(const constant tint_symbol_1* const tint_symbol_4) {
+ arrayLength_61b1c7(tint_symbol_4);
return float4();
}
-vertex tint_symbol vertex_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_2);
+vertex tint_symbol vertex_main(const constant tint_symbol_1* tint_symbol_5 [[buffer(30)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_5);
tint_symbol wrapper_result = {};
wrapper_result.value = inner_result;
return wrapper_result;
}
-fragment void fragment_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_61b1c7(tint_symbol_2);
+fragment void fragment_main(const constant tint_symbol_1* tint_symbol_6 [[buffer(30)]]) {
+ arrayLength_61b1c7(tint_symbol_6);
return;
}
-kernel void compute_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_61b1c7(tint_symbol_2);
+kernel void compute_main(const constant tint_symbol_1* tint_symbol_7 [[buffer(30)]]) {
+ arrayLength_61b1c7(tint_symbol_7);
return;
}
diff --git a/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.msl b/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.msl
index 9ccd171..14f2e56 100644
--- a/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.msl
+++ b/test/intrinsics/gen/arrayLength/a0f5ca.wgsl.expected.msl
@@ -5,35 +5,35 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct SB_RO {
- /* 0x0000 */ float arg_0[1];
+ float arg_0[1];
};
struct tint_symbol {
float4 value [[position]];
};
-void arrayLength_a0f5ca(constant tint_symbol_1& tint_symbol_2) {
- uint res = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+void arrayLength_a0f5ca(const constant tint_symbol_1* const tint_symbol_3) {
+ uint res = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
}
-float4 vertex_main_inner(constant tint_symbol_1& tint_symbol_2) {
- arrayLength_a0f5ca(tint_symbol_2);
+float4 vertex_main_inner(const constant tint_symbol_1* const tint_symbol_4) {
+ arrayLength_a0f5ca(tint_symbol_4);
return float4();
}
-vertex tint_symbol vertex_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_2);
+vertex tint_symbol vertex_main(const constant tint_symbol_1* tint_symbol_5 [[buffer(30)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_5);
tint_symbol wrapper_result = {};
wrapper_result.value = inner_result;
return wrapper_result;
}
-fragment void fragment_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_a0f5ca(tint_symbol_2);
+fragment void fragment_main(const constant tint_symbol_1* tint_symbol_6 [[buffer(30)]]) {
+ arrayLength_a0f5ca(tint_symbol_6);
return;
}
-kernel void compute_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_a0f5ca(tint_symbol_2);
+kernel void compute_main(const constant tint_symbol_1* tint_symbol_7 [[buffer(30)]]) {
+ arrayLength_a0f5ca(tint_symbol_7);
return;
}
diff --git a/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.msl b/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.msl
index f35b0f4..dca2023 100644
--- a/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.msl
+++ b/test/intrinsics/gen/arrayLength/cdd123.wgsl.expected.msl
@@ -5,35 +5,35 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct SB_RW {
- /* 0x0000 */ float arg_0[1];
+ float arg_0[1];
};
struct tint_symbol {
float4 value [[position]];
};
-void arrayLength_cdd123(constant tint_symbol_1& tint_symbol_2) {
- uint res = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+void arrayLength_cdd123(const constant tint_symbol_1* const tint_symbol_3) {
+ uint res = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
}
-float4 vertex_main_inner(constant tint_symbol_1& tint_symbol_2) {
- arrayLength_cdd123(tint_symbol_2);
+float4 vertex_main_inner(const constant tint_symbol_1* const tint_symbol_4) {
+ arrayLength_cdd123(tint_symbol_4);
return float4();
}
-vertex tint_symbol vertex_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_2);
+vertex tint_symbol vertex_main(const constant tint_symbol_1* tint_symbol_5 [[buffer(30)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_5);
tint_symbol wrapper_result = {};
wrapper_result.value = inner_result;
return wrapper_result;
}
-fragment void fragment_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_cdd123(tint_symbol_2);
+fragment void fragment_main(const constant tint_symbol_1* tint_symbol_6 [[buffer(30)]]) {
+ arrayLength_cdd123(tint_symbol_6);
return;
}
-kernel void compute_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_cdd123(tint_symbol_2);
+kernel void compute_main(const constant tint_symbol_1* tint_symbol_7 [[buffer(30)]]) {
+ arrayLength_cdd123(tint_symbol_7);
return;
}
diff --git a/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.msl b/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.msl
index 2a68d7b..279dd8c 100644
--- a/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.msl
+++ b/test/intrinsics/gen/arrayLength/cfca0a.wgsl.expected.msl
@@ -5,35 +5,35 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct SB_RO {
- /* 0x0000 */ uint arg_0[1];
+ uint arg_0[1];
};
struct tint_symbol {
float4 value [[position]];
};
-void arrayLength_cfca0a(constant tint_symbol_1& tint_symbol_2) {
- uint res = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+void arrayLength_cfca0a(const constant tint_symbol_1* const tint_symbol_3) {
+ uint res = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
}
-float4 vertex_main_inner(constant tint_symbol_1& tint_symbol_2) {
- arrayLength_cfca0a(tint_symbol_2);
+float4 vertex_main_inner(const constant tint_symbol_1* const tint_symbol_4) {
+ arrayLength_cfca0a(tint_symbol_4);
return float4();
}
-vertex tint_symbol vertex_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_2);
+vertex tint_symbol vertex_main(const constant tint_symbol_1* tint_symbol_5 [[buffer(30)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_5);
tint_symbol wrapper_result = {};
wrapper_result.value = inner_result;
return wrapper_result;
}
-fragment void fragment_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_cfca0a(tint_symbol_2);
+fragment void fragment_main(const constant tint_symbol_1* tint_symbol_6 [[buffer(30)]]) {
+ arrayLength_cfca0a(tint_symbol_6);
return;
}
-kernel void compute_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_cfca0a(tint_symbol_2);
+kernel void compute_main(const constant tint_symbol_1* tint_symbol_7 [[buffer(30)]]) {
+ arrayLength_cfca0a(tint_symbol_7);
return;
}
diff --git a/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.msl b/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.msl
index 131e4ba..3570449 100644
--- a/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.msl
+++ b/test/intrinsics/gen/arrayLength/eb510f.wgsl.expected.msl
@@ -5,35 +5,35 @@
/* 0x0000 */ uint4 buffer_size[1];
};
struct SB_RW {
- /* 0x0000 */ uint arg_0[1];
+ uint arg_0[1];
};
struct tint_symbol {
float4 value [[position]];
};
-void arrayLength_eb510f(constant tint_symbol_1& tint_symbol_2) {
- uint res = ((tint_symbol_2.buffer_size[0u][0u] - 0u) / 4u);
+void arrayLength_eb510f(const constant tint_symbol_1* const tint_symbol_3) {
+ uint res = (((*(tint_symbol_3)).buffer_size[0u][0u] - 0u) / 4u);
}
-float4 vertex_main_inner(constant tint_symbol_1& tint_symbol_2) {
- arrayLength_eb510f(tint_symbol_2);
+float4 vertex_main_inner(const constant tint_symbol_1* const tint_symbol_4) {
+ arrayLength_eb510f(tint_symbol_4);
return float4();
}
-vertex tint_symbol vertex_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- float4 const inner_result = vertex_main_inner(tint_symbol_2);
+vertex tint_symbol vertex_main(const constant tint_symbol_1* tint_symbol_5 [[buffer(30)]]) {
+ float4 const inner_result = vertex_main_inner(tint_symbol_5);
tint_symbol wrapper_result = {};
wrapper_result.value = inner_result;
return wrapper_result;
}
-fragment void fragment_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_eb510f(tint_symbol_2);
+fragment void fragment_main(const constant tint_symbol_1* tint_symbol_6 [[buffer(30)]]) {
+ arrayLength_eb510f(tint_symbol_6);
return;
}
-kernel void compute_main(constant tint_symbol_1& tint_symbol_2 [[buffer(30)]]) {
- arrayLength_eb510f(tint_symbol_2);
+kernel void compute_main(const constant tint_symbol_1* tint_symbol_7 [[buffer(30)]]) {
+ arrayLength_eb510f(tint_symbol_7);
return;
}
diff --git a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.msl b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.msl
index 4d1bb52..4e58d98 100644
--- a/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicAdd/8a199a.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicAdd_8a199a(device SB_RW& sb_rw) {
- uint res = atomic_fetch_add_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicAdd_8a199a(device SB_RW* const tint_symbol) {
+ uint res = atomic_fetch_add_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAdd_8a199a(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicAdd_8a199a(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAdd_8a199a(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicAdd_8a199a(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.msl b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.msl
index a1e838a..e6c84ae 100644
--- a/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicAdd/d32fe4.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicAdd_d32fe4(device SB_RW& sb_rw) {
- int res = atomic_fetch_add_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicAdd_d32fe4(device SB_RW* const tint_symbol) {
+ int res = atomic_fetch_add_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAdd_d32fe4(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicAdd_d32fe4(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAdd_d32fe4(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicAdd_d32fe4(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.msl b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.msl
index d095ebb..0205287 100644
--- a/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicAnd/152966.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicAnd_152966(device SB_RW& sb_rw) {
- int res = atomic_fetch_and_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicAnd_152966(device SB_RW* const tint_symbol) {
+ int res = atomic_fetch_and_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAnd_152966(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicAnd_152966(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAnd_152966(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicAnd_152966(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.msl b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.msl
index b9ca1b0..62890e0 100644
--- a/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicAnd/85a8d9.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicAnd_85a8d9(device SB_RW& sb_rw) {
- uint res = atomic_fetch_and_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicAnd_85a8d9(device SB_RW* const tint_symbol) {
+ uint res = atomic_fetch_and_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAnd_85a8d9(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicAnd_85a8d9(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicAnd_85a8d9(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicAnd_85a8d9(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.msl b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.msl
index 37ea780..a7bb20c 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/12871c.wgsl.expected.msl
@@ -13,17 +13,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicCompareExchangeWeak_12871c(device SB_RW& sb_rw) {
- int2 res = atomicCompareExchangeWeak_1(&(sb_rw.arg_0), 1, 1);
+void atomicCompareExchangeWeak_12871c(device SB_RW* const tint_symbol) {
+ int2 res = atomicCompareExchangeWeak_1(&((*(tint_symbol)).arg_0), 1, 1);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicCompareExchangeWeak_12871c(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicCompareExchangeWeak_12871c(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicCompareExchangeWeak_12871c(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicCompareExchangeWeak_12871c(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.msl b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.msl
index 30fe03f..b3a827f 100644
--- a/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicCompareExchangeWeak/6673da.wgsl.expected.msl
@@ -13,17 +13,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicCompareExchangeWeak_6673da(device SB_RW& sb_rw) {
- uint2 res = atomicCompareExchangeWeak_1(&(sb_rw.arg_0), 1u, 1u);
+void atomicCompareExchangeWeak_6673da(device SB_RW* const tint_symbol) {
+ uint2 res = atomicCompareExchangeWeak_1(&((*(tint_symbol)).arg_0), 1u, 1u);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicCompareExchangeWeak_6673da(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicCompareExchangeWeak_6673da(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicCompareExchangeWeak_6673da(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicCompareExchangeWeak_6673da(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.msl b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.msl
index 248b62a..26886a5 100644
--- a/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicExchange/d59712.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicExchange_d59712(device SB_RW& sb_rw) {
- uint res = atomic_exchange_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicExchange_d59712(device SB_RW* const tint_symbol) {
+ uint res = atomic_exchange_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicExchange_d59712(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicExchange_d59712(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicExchange_d59712(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicExchange_d59712(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.msl b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.msl
index 9e0dd6b..736a844 100644
--- a/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicExchange/f2e22f.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicExchange_f2e22f(device SB_RW& sb_rw) {
- int res = atomic_exchange_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicExchange_f2e22f(device SB_RW* const tint_symbol) {
+ int res = atomic_exchange_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicExchange_f2e22f(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicExchange_f2e22f(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicExchange_f2e22f(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicExchange_f2e22f(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.msl b/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.msl
index 8cc7837..2335d0d 100644
--- a/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicLoad/0806ad.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicLoad_0806ad(device SB_RW& sb_rw) {
- int res = atomic_load_explicit(&(sb_rw.arg_0), memory_order_relaxed);
+void atomicLoad_0806ad(device SB_RW* const tint_symbol) {
+ int res = atomic_load_explicit(&((*(tint_symbol)).arg_0), memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicLoad_0806ad(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicLoad_0806ad(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicLoad_0806ad(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicLoad_0806ad(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.msl b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.msl
index aef98d3..e78624d 100644
--- a/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicLoad/fe6cc3.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicLoad_fe6cc3(device SB_RW& sb_rw) {
- uint res = atomic_load_explicit(&(sb_rw.arg_0), memory_order_relaxed);
+void atomicLoad_fe6cc3(device SB_RW* const tint_symbol) {
+ uint res = atomic_load_explicit(&((*(tint_symbol)).arg_0), memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicLoad_fe6cc3(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicLoad_fe6cc3(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicLoad_fe6cc3(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicLoad_fe6cc3(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.msl b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.msl
index 8d45595..78e9001 100644
--- a/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicMax/51b9be.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicMax_51b9be(device SB_RW& sb_rw) {
- uint res = atomic_fetch_max_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicMax_51b9be(device SB_RW* const tint_symbol) {
+ uint res = atomic_fetch_max_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMax_51b9be(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicMax_51b9be(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMax_51b9be(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicMax_51b9be(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.msl b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.msl
index 12babbd..aac6b99 100644
--- a/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicMax/92aa72.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicMax_92aa72(device SB_RW& sb_rw) {
- int res = atomic_fetch_max_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicMax_92aa72(device SB_RW* const tint_symbol) {
+ int res = atomic_fetch_max_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMax_92aa72(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicMax_92aa72(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMax_92aa72(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicMax_92aa72(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.msl b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.msl
index 5de8f10..f11f8cc 100644
--- a/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicMin/8e38dc.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicMin_8e38dc(device SB_RW& sb_rw) {
- int res = atomic_fetch_min_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicMin_8e38dc(device SB_RW* const tint_symbol) {
+ int res = atomic_fetch_min_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMin_8e38dc(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicMin_8e38dc(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMin_8e38dc(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicMin_8e38dc(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.msl b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.msl
index 04d9d54..129f24e 100644
--- a/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicMin/c67a74.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicMin_c67a74(device SB_RW& sb_rw) {
- uint res = atomic_fetch_min_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicMin_c67a74(device SB_RW* const tint_symbol) {
+ uint res = atomic_fetch_min_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMin_c67a74(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicMin_c67a74(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicMin_c67a74(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicMin_c67a74(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.msl b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.msl
index a711f2d..5ea3c50 100644
--- a/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicOr/5e95d4.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicOr_5e95d4(device SB_RW& sb_rw) {
- uint res = atomic_fetch_or_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicOr_5e95d4(device SB_RW* const tint_symbol) {
+ uint res = atomic_fetch_or_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicOr_5e95d4(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicOr_5e95d4(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicOr_5e95d4(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicOr_5e95d4(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.msl b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.msl
index 3602800..d25b8b2 100644
--- a/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicOr/8d96a0.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicOr_8d96a0(device SB_RW& sb_rw) {
- int res = atomic_fetch_or_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicOr_8d96a0(device SB_RW* const tint_symbol) {
+ int res = atomic_fetch_or_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicOr_8d96a0(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicOr_8d96a0(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicOr_8d96a0(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicOr_8d96a0(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.msl b/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.msl
index 24231c1..a7b06ef 100644
--- a/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicStore/cdc29e.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicStore_cdc29e(device SB_RW& sb_rw) {
- atomic_store_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicStore_cdc29e(device SB_RW* const tint_symbol) {
+ atomic_store_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicStore_cdc29e(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicStore_cdc29e(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicStore_cdc29e(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicStore_cdc29e(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.msl b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.msl
index 4d3c468..78ba885 100644
--- a/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicStore/d1e9a6.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicStore_d1e9a6(device SB_RW& sb_rw) {
- atomic_store_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicStore_d1e9a6(device SB_RW* const tint_symbol) {
+ atomic_store_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicStore_d1e9a6(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicStore_d1e9a6(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicStore_d1e9a6(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicStore_d1e9a6(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicSub/051100.wgsl.expected.msl b/test/intrinsics/gen/atomicSub/051100.wgsl.expected.msl
index 91ce0b1..ec11a66 100644
--- a/test/intrinsics/gen/atomicSub/051100.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicSub/051100.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicSub_051100(device SB_RW& sb_rw) {
- int res = atomic_fetch_sub_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicSub_051100(device SB_RW* const tint_symbol) {
+ int res = atomic_fetch_sub_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicSub_051100(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicSub_051100(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicSub_051100(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicSub_051100(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.msl b/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.msl
index bb53aaf..994a48e 100644
--- a/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicSub/15bfc9.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicSub_15bfc9(device SB_RW& sb_rw) {
- uint res = atomic_fetch_sub_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicSub_15bfc9(device SB_RW* const tint_symbol) {
+ uint res = atomic_fetch_sub_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicSub_15bfc9(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicSub_15bfc9(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicSub_15bfc9(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicSub_15bfc9(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.msl b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.msl
index c43fc6b..5967deb 100644
--- a/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicXor/54510e.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_uint arg_0;
};
-void atomicXor_54510e(device SB_RW& sb_rw) {
- uint res = atomic_fetch_xor_explicit(&(sb_rw.arg_0), 1u, memory_order_relaxed);
+void atomicXor_54510e(device SB_RW* const tint_symbol) {
+ uint res = atomic_fetch_xor_explicit(&((*(tint_symbol)).arg_0), 1u, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicXor_54510e(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicXor_54510e(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicXor_54510e(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicXor_54510e(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.msl b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.msl
index d48ee31..42040a3 100644
--- a/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.msl
+++ b/test/intrinsics/gen/atomicXor/c1b78c.wgsl.expected.msl
@@ -5,17 +5,17 @@
/* 0x0000 */ atomic_int arg_0;
};
-void atomicXor_c1b78c(device SB_RW& sb_rw) {
- int res = atomic_fetch_xor_explicit(&(sb_rw.arg_0), 1, memory_order_relaxed);
+void atomicXor_c1b78c(device SB_RW* const tint_symbol) {
+ int res = atomic_fetch_xor_explicit(&((*(tint_symbol)).arg_0), 1, memory_order_relaxed);
}
-fragment void fragment_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicXor_c1b78c(sb_rw);
+fragment void fragment_main(device SB_RW* tint_symbol_1 [[buffer(0)]]) {
+ atomicXor_c1b78c(tint_symbol_1);
return;
}
-kernel void compute_main(device SB_RW& sb_rw [[buffer(0)]]) {
- atomicXor_c1b78c(sb_rw);
+kernel void compute_main(device SB_RW* tint_symbol_2 [[buffer(0)]]) {
+ atomicXor_c1b78c(tint_symbol_2);
return;
}
diff --git a/test/intrinsics/ignore/runtime_array.wgsl.expected.msl b/test/intrinsics/ignore/runtime_array.wgsl.expected.msl
index e9f8a97..8be1139 100644
--- a/test/intrinsics/ignore/runtime_array.wgsl.expected.msl
+++ b/test/intrinsics/ignore/runtime_array.wgsl.expected.msl
@@ -9,8 +9,8 @@
/* 0x0000 */ int arr[1];
};
-kernel void tint_symbol(device S& s [[buffer(0)]]) {
- (void) s.arr;
+kernel void tint_symbol(device S* tint_symbol_1 [[buffer(0)]]) {
+ (void) (*(tint_symbol_1)).arr;
return;
}
diff --git a/test/intrinsics/ignore/storage_buffer.wgsl.expected.msl b/test/intrinsics/ignore/storage_buffer.wgsl.expected.msl
index f61d5a5..8fd6daa 100644
--- a/test/intrinsics/ignore/storage_buffer.wgsl.expected.msl
+++ b/test/intrinsics/ignore/storage_buffer.wgsl.expected.msl
@@ -13,9 +13,9 @@
/* 0x0000 */ int i;
};
-kernel void tint_symbol(device S& s [[buffer(0)]]) {
- (void) s;
- (void) s.i;
+kernel void tint_symbol(device S* tint_symbol_1 [[buffer(0)]]) {
+ (void) *(tint_symbol_1);
+ (void) (*(tint_symbol_1)).i;
return;
}
diff --git a/test/intrinsics/ignore/uniform_buffer.wgsl.expected.msl b/test/intrinsics/ignore/uniform_buffer.wgsl.expected.msl
index e9955b0..b3db6a6 100644
--- a/test/intrinsics/ignore/uniform_buffer.wgsl.expected.msl
+++ b/test/intrinsics/ignore/uniform_buffer.wgsl.expected.msl
@@ -13,9 +13,9 @@
/* 0x0000 */ int i;
};
-kernel void tint_symbol(constant S& u [[buffer(0)]]) {
- (void) u;
- (void) u.i;
+kernel void tint_symbol(const constant S* tint_symbol_1 [[buffer(0)]]) {
+ (void) *(tint_symbol_1);
+ (void) (*(tint_symbol_1)).i;
return;
}
diff --git a/test/layout/storage/mat2x2/f32.wgsl.expected.msl b/test/layout/storage/mat2x2/f32.wgsl.expected.msl
index 32de921..7188677 100644
--- a/test/layout/storage/mat2x2/f32.wgsl.expected.msl
+++ b/test/layout/storage/mat2x2/f32.wgsl.expected.msl
@@ -5,9 +5,9 @@
/* 0x0000 */ float2x2 m;
};
-kernel void f(device SSBO& ssbo [[buffer(0)]]) {
- float2x2 const v = ssbo.m;
- ssbo.m = v;
+kernel void f(device SSBO* tint_symbol [[buffer(0)]]) {
+ float2x2 const v = (*(tint_symbol)).m;
+ (*(tint_symbol)).m = v;
return;
}
diff --git a/test/layout/storage/mat2x2/stride/16.spvasm.expected.msl b/test/layout/storage/mat2x2/stride/16.spvasm.expected.msl
index bd77f40..ec498f4 100644
--- a/test/layout/storage/mat2x2/stride/16.spvasm.expected.msl
+++ b/test/layout/storage/mat2x2/stride/16.spvasm.expected.msl
@@ -21,14 +21,14 @@
return tint_symbol;
}
-void f_1(device SSBO& ssbo) {
- float2x2 const x_15 = arr_to_mat2x2_stride_16(ssbo.m);
- ssbo.m = mat2x2_stride_16_to_arr(x_15);
+void f_1(device SSBO* const tint_symbol_1) {
+ float2x2 const x_15 = arr_to_mat2x2_stride_16((*(tint_symbol_1)).m);
+ (*(tint_symbol_1)).m = mat2x2_stride_16_to_arr(x_15);
return;
}
-kernel void f(device SSBO& ssbo [[buffer(0)]]) {
- f_1(ssbo);
+kernel void f(device SSBO* tint_symbol_2 [[buffer(0)]]) {
+ f_1(tint_symbol_2);
return;
}
diff --git a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.msl b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.msl
index 2426a3d..ee2133d 100644
--- a/test/ptr_ref/load/local/ptr_storage.wgsl.expected.msl
+++ b/test/ptr_ref/load/local/ptr_storage.wgsl.expected.msl
@@ -5,8 +5,8 @@
/* 0x0000 */ int a;
};
-kernel void tint_symbol(device S& v [[buffer(0)]]) {
- int const use = as_type<int>((as_type<uint>(v.a) + as_type<uint>(1)));
+kernel void tint_symbol(device S* tint_symbol_1 [[buffer(0)]]) {
+ int const use = as_type<int>((as_type<uint>((*(tint_symbol_1)).a) + as_type<uint>(1)));
return;
}
diff --git a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.msl b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.msl
index 9c4e4e4..f86222b 100644
--- a/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.msl
+++ b/test/ptr_ref/load/local/ptr_uniform.wgsl.expected.msl
@@ -5,8 +5,8 @@
/* 0x0000 */ int a;
};
-kernel void tint_symbol(constant S& v [[buffer(0)]]) {
- int const use = as_type<int>((as_type<uint>(v.a) + as_type<uint>(1)));
+kernel void tint_symbol(const constant S* tint_symbol_1 [[buffer(0)]]) {
+ int const use = as_type<int>((as_type<uint>((*(tint_symbol_1)).a) + as_type<uint>(1)));
return;
}
diff --git a/test/samples/compute_boids.wgsl.expected.msl b/test/samples/compute_boids.wgsl.expected.msl
index 48252a3..e0fde9b 100644
--- a/test/samples/compute_boids.wgsl.expected.msl
+++ b/test/samples/compute_boids.wgsl.expected.msl
@@ -56,13 +56,13 @@
return wrapper_result_1;
}
-void comp_main_inner(constant SimParams& params, device Particles& particlesA, device Particles& particlesB, uint3 gl_GlobalInvocationID) {
+void comp_main_inner(uint3 gl_GlobalInvocationID, device Particles* const tint_symbol_4, const constant SimParams* const tint_symbol_5, device Particles* const tint_symbol_6) {
uint index = gl_GlobalInvocationID[0];
if ((index >= 5u)) {
return;
}
- float2 vPos = particlesA.particles.arr[index].pos;
- float2 vVel = particlesA.particles.arr[index].vel;
+ float2 vPos = (*(tint_symbol_4)).particles.arr[index].pos;
+ float2 vVel = (*(tint_symbol_4)).particles.arr[index].vel;
float2 cMass = float2(0.0f, 0.0f);
float2 cVel = float2(0.0f, 0.0f);
float2 colVel = float2(0.0f, 0.0f);
@@ -74,16 +74,16 @@
if ((i == index)) {
continue;
}
- pos = float2(particlesA.particles.arr[i].pos).xy;
- vel = float2(particlesA.particles.arr[i].vel).xy;
- if ((distance(pos, vPos) < params.rule1Distance)) {
+ pos = float2((*(tint_symbol_4)).particles.arr[i].pos).xy;
+ vel = float2((*(tint_symbol_4)).particles.arr[i].vel).xy;
+ if ((distance(pos, vPos) < (*(tint_symbol_5)).rule1Distance)) {
cMass = (cMass + pos);
cMassCount = as_type<int>((as_type<uint>(cMassCount) + as_type<uint>(1)));
}
- if ((distance(pos, vPos) < params.rule2Distance)) {
+ if ((distance(pos, vPos) < (*(tint_symbol_5)).rule2Distance)) {
colVel = (colVel - (pos - vPos));
}
- if ((distance(pos, vPos) < params.rule3Distance)) {
+ if ((distance(pos, vPos) < (*(tint_symbol_5)).rule3Distance)) {
cVel = (cVel + vel);
cVelCount = as_type<int>((as_type<uint>(cVelCount) + as_type<uint>(1)));
}
@@ -94,9 +94,9 @@
if ((cVelCount > 0)) {
cVel = (cVel / float2(float(cVelCount), float(cVelCount)));
}
- vVel = (((vVel + (cMass * params.rule1Scale)) + (colVel * params.rule2Scale)) + (cVel * params.rule3Scale));
+ vVel = (((vVel + (cMass * (*(tint_symbol_5)).rule1Scale)) + (colVel * (*(tint_symbol_5)).rule2Scale)) + (cVel * (*(tint_symbol_5)).rule3Scale));
vVel = (normalize(vVel) * clamp(length(vVel), 0.0f, 0.100000001f));
- vPos = (vPos + (vVel * params.deltaT));
+ vPos = (vPos + (vVel * (*(tint_symbol_5)).deltaT));
if ((vPos[0] < -1.0f)) {
vPos[0] = 1.0f;
}
@@ -109,12 +109,12 @@
if ((vPos[1] > 1.0f)) {
vPos[1] = -1.0f;
}
- particlesB.particles.arr[index].pos = vPos;
- particlesB.particles.arr[index].vel = vVel;
+ (*(tint_symbol_6)).particles.arr[index].pos = vPos;
+ (*(tint_symbol_6)).particles.arr[index].vel = vVel;
}
-kernel void comp_main(uint3 gl_GlobalInvocationID [[thread_position_in_grid]], constant SimParams& params [[buffer(0)]], device Particles& particlesA [[buffer(1)]], device Particles& particlesB [[buffer(2)]]) {
- comp_main_inner(params, particlesA, particlesB, gl_GlobalInvocationID);
+kernel void comp_main(device Particles* tint_symbol_7 [[buffer(1)]], const constant SimParams* tint_symbol_8 [[buffer(0)]], device Particles* tint_symbol_9 [[buffer(2)]], uint3 gl_GlobalInvocationID [[thread_position_in_grid]]) {
+ comp_main_inner(gl_GlobalInvocationID, tint_symbol_7, tint_symbol_8, tint_symbol_9);
return;
}
diff --git a/test/samples/cube.wgsl.expected.msl b/test/samples/cube.wgsl.expected.msl
index 1ce68b4..bcf2f8a 100644
--- a/test/samples/cube.wgsl.expected.msl
+++ b/test/samples/cube.wgsl.expected.msl
@@ -27,16 +27,16 @@
float4 value [[color(0)]];
};
-VertexOutput vtx_main_inner(constant Uniforms& uniforms, VertexInput input) {
+VertexOutput vtx_main_inner(VertexInput input, const constant Uniforms* const tint_symbol_7) {
VertexOutput output = {};
- output.Position = (uniforms.modelViewProjectionMatrix * input.cur_position);
+ output.Position = ((*(tint_symbol_7)).modelViewProjectionMatrix * input.cur_position);
output.vtxFragColor = input.color;
return output;
}
-vertex tint_symbol_2 vtx_main(tint_symbol_1 tint_symbol [[stage_in]], constant Uniforms& uniforms [[buffer(0)]]) {
+vertex tint_symbol_2 vtx_main(const constant Uniforms* tint_symbol_8 [[buffer(0)]], tint_symbol_1 tint_symbol [[stage_in]]) {
VertexInput const tint_symbol_6 = {.cur_position=tint_symbol.cur_position, .color=tint_symbol.color};
- VertexOutput const inner_result = vtx_main_inner(uniforms, tint_symbol_6);
+ VertexOutput const inner_result = vtx_main_inner(tint_symbol_6, tint_symbol_8);
tint_symbol_2 wrapper_result = {};
wrapper_result.vtxFragColor = inner_result.vtxFragColor;
wrapper_result.Position = inner_result.Position;
diff --git a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.msl b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.msl
index d1ae02a..6de6258 100644
--- a/test/shader_io/shared_struct_storage_buffer.wgsl.expected.msl
+++ b/test/shader_io/shared_struct_storage_buffer.wgsl.expected.msl
@@ -13,16 +13,16 @@
uint u [[user(locn1)]] [[flat]];
};
-void frag_main_inner(device S& output, S input) {
+void frag_main_inner(S input, device S* const tint_symbol_3) {
float const f = input.f;
uint const u = input.u;
float4 const v = input.v;
- output = input;
+ *(tint_symbol_3) = input;
}
-fragment void frag_main(float4 v [[position]], tint_symbol_1 tint_symbol [[stage_in]], device S& output [[buffer(0)]]) {
+fragment void frag_main(device S* tint_symbol_4 [[buffer(0)]], float4 v [[position]], tint_symbol_1 tint_symbol [[stage_in]]) {
S const tint_symbol_2 = {.f=tint_symbol.f, .u=tint_symbol.u, .v=v};
- frag_main_inner(output, tint_symbol_2);
+ frag_main_inner(tint_symbol_2, tint_symbol_4);
return;
}
diff --git a/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.msl b/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.msl
index 10d815f..2f29265 100644
--- a/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.msl
+++ b/test/statements/assign/phony/addr_of_non_constructable.wgsl.expected.msl
@@ -2,7 +2,7 @@
using namespace metal;
struct S {
- /* 0x0000 */ int arr[1];
+ int arr[1];
};
kernel void tint_symbol() {
diff --git a/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.msl b/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.msl
index 10d815f..2f29265 100644
--- a/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.msl
+++ b/test/statements/assign/phony/addr_of_runtime_array.wgsl.expected.msl
@@ -2,7 +2,7 @@
using namespace metal;
struct S {
- /* 0x0000 */ int arr[1];
+ int arr[1];
};
kernel void tint_symbol() {
diff --git a/test/statements/assign/phony/storage_buffer.wgsl.expected.msl b/test/statements/assign/phony/storage_buffer.wgsl.expected.msl
index 6da18d2..0a6675d 100644
--- a/test/statements/assign/phony/storage_buffer.wgsl.expected.msl
+++ b/test/statements/assign/phony/storage_buffer.wgsl.expected.msl
@@ -2,7 +2,7 @@
using namespace metal;
struct S {
- /* 0x0000 */ int i;
+ int i;
};
kernel void tint_symbol() {
diff --git a/test/statements/assign/phony/uniform_buffer.wgsl.expected.msl b/test/statements/assign/phony/uniform_buffer.wgsl.expected.msl
index 6da18d2..0a6675d 100644
--- a/test/statements/assign/phony/uniform_buffer.wgsl.expected.msl
+++ b/test/statements/assign/phony/uniform_buffer.wgsl.expected.msl
@@ -2,7 +2,7 @@
using namespace metal;
struct S {
- /* 0x0000 */ int i;
+ int i;
};
kernel void tint_symbol() {
diff --git a/test/types/sampler.wgsl.expected.msl b/test/types/sampler.wgsl.expected.msl
index fcc05a4..09c45a0 100644
--- a/test/types/sampler.wgsl.expected.msl
+++ b/test/types/sampler.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(sampler tint_symbol_1 [[sampler(0)]], sampler tint_symbol_2 [[sampler(1)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/depth/2d.wgsl.expected.msl b/test/types/texture/depth/2d.wgsl.expected.msl
index e45bdcf..09c45a0 100644
--- a/test/types/texture/depth/2d.wgsl.expected.msl
+++ b/test/types/texture/depth/2d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(depth2d<float, access::sample> tint_symbol_1 [[texture(0)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/depth/2d_array.wgsl.expected.msl b/test/types/texture/depth/2d_array.wgsl.expected.msl
index 18588e2..09c45a0 100644
--- a/test/types/texture/depth/2d_array.wgsl.expected.msl
+++ b/test/types/texture/depth/2d_array.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(depth2d_array<float, access::sample> tint_symbol_1 [[texture(0)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/depth/cube.wgsl.expected.msl b/test/types/texture/depth/cube.wgsl.expected.msl
index 7ac8af6..09c45a0 100644
--- a/test/types/texture/depth/cube.wgsl.expected.msl
+++ b/test/types/texture/depth/cube.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(depthcube<float, access::sample> tint_symbol_1 [[texture(0)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/depth/cube_array.wgsl.expected.msl b/test/types/texture/depth/cube_array.wgsl.expected.msl
index c8ac115..09c45a0 100644
--- a/test/types/texture/depth/cube_array.wgsl.expected.msl
+++ b/test/types/texture/depth/cube_array.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(depthcube_array<float, access::sample> tint_symbol_1 [[texture(0)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/multisampled/2d.wgsl.expected.msl b/test/types/texture/multisampled/2d.wgsl.expected.msl
index 91951dd..09c45a0 100644
--- a/test/types/texture/multisampled/2d.wgsl.expected.msl
+++ b/test/types/texture/multisampled/2d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture2d_ms<float, access::read> tint_symbol_1 [[texture(0)]], texture2d_ms<int, access::read> tint_symbol_2 [[texture(1)]], texture2d_ms<uint, access::read> tint_symbol_3 [[texture(2)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/sampled/1d.wgsl.expected.msl b/test/types/texture/sampled/1d.wgsl.expected.msl
index 3075677..09c45a0 100644
--- a/test/types/texture/sampled/1d.wgsl.expected.msl
+++ b/test/types/texture/sampled/1d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture1d<float, access::sample> tint_symbol_1 [[texture(0)]], texture1d<int, access::sample> tint_symbol_2 [[texture(1)]], texture1d<uint, access::sample> tint_symbol_3 [[texture(2)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/sampled/2d.wgsl.expected.msl b/test/types/texture/sampled/2d.wgsl.expected.msl
index 332712f..09c45a0 100644
--- a/test/types/texture/sampled/2d.wgsl.expected.msl
+++ b/test/types/texture/sampled/2d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_1 [[texture(0)]], texture2d<int, access::sample> tint_symbol_2 [[texture(1)]], texture2d<uint, access::sample> tint_symbol_3 [[texture(2)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/sampled/2d_array.wgsl.expected.msl b/test/types/texture/sampled/2d_array.wgsl.expected.msl
index 5596bae..09c45a0 100644
--- a/test/types/texture/sampled/2d_array.wgsl.expected.msl
+++ b/test/types/texture/sampled/2d_array.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture2d_array<float, access::sample> tint_symbol_1 [[texture(0)]], texture2d_array<int, access::sample> tint_symbol_2 [[texture(1)]], texture2d_array<uint, access::sample> tint_symbol_3 [[texture(2)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/sampled/3d.wgsl.expected.msl b/test/types/texture/sampled/3d.wgsl.expected.msl
index f42ccaf..09c45a0 100644
--- a/test/types/texture/sampled/3d.wgsl.expected.msl
+++ b/test/types/texture/sampled/3d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture3d<float, access::sample> tint_symbol_1 [[texture(0)]], texture3d<int, access::sample> tint_symbol_2 [[texture(1)]], texture3d<uint, access::sample> tint_symbol_3 [[texture(2)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/sampled/cube.wgsl.expected.msl b/test/types/texture/sampled/cube.wgsl.expected.msl
index 2a1de41..09c45a0 100644
--- a/test/types/texture/sampled/cube.wgsl.expected.msl
+++ b/test/types/texture/sampled/cube.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texturecube<float, access::sample> tint_symbol_1 [[texture(0)]], texturecube<int, access::sample> tint_symbol_2 [[texture(1)]], texturecube<uint, access::sample> tint_symbol_3 [[texture(2)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/sampled/cube_array.wgsl.expected.msl b/test/types/texture/sampled/cube_array.wgsl.expected.msl
index 9daff39..09c45a0 100644
--- a/test/types/texture/sampled/cube_array.wgsl.expected.msl
+++ b/test/types/texture/sampled/cube_array.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texturecube_array<float, access::sample> tint_symbol_1 [[texture(0)]], texturecube_array<int, access::sample> tint_symbol_2 [[texture(1)]], texturecube_array<uint, access::sample> tint_symbol_3 [[texture(2)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/storage/1d.wgsl.expected.msl b/test/types/texture/storage/1d.wgsl.expected.msl
index e6639ae..09c45a0 100644
--- a/test/types/texture/storage/1d.wgsl.expected.msl
+++ b/test/types/texture/storage/1d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture1d<float, access::write> tint_symbol_1 [[texture(0)]], texture1d<float, access::write> tint_symbol_2 [[texture(1)]], texture1d<uint, access::write> tint_symbol_3 [[texture(2)]], texture1d<int, access::write> tint_symbol_4 [[texture(3)]], texture1d<uint, access::write> tint_symbol_5 [[texture(4)]], texture1d<int, access::write> tint_symbol_6 [[texture(5)]], texture1d<float, access::write> tint_symbol_7 [[texture(6)]], texture1d<uint, access::write> tint_symbol_8 [[texture(7)]], texture1d<int, access::write> tint_symbol_9 [[texture(8)]], texture1d<float, access::write> tint_symbol_10 [[texture(9)]], texture1d<uint, access::write> tint_symbol_11 [[texture(10)]], texture1d<int, access::write> tint_symbol_12 [[texture(11)]], texture1d<float, access::write> tint_symbol_13 [[texture(12)]], texture1d<uint, access::write> tint_symbol_14 [[texture(13)]], texture1d<int, access::write> tint_symbol_15 [[texture(14)]], texture1d<float, access::write> tint_symbol_16 [[texture(15)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/storage/2d.wgsl.expected.msl b/test/types/texture/storage/2d.wgsl.expected.msl
index 47c1eaa..09c45a0 100644
--- a/test/types/texture/storage/2d.wgsl.expected.msl
+++ b/test/types/texture/storage/2d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture2d<float, access::write> tint_symbol_1 [[texture(0)]], texture2d<float, access::write> tint_symbol_2 [[texture(1)]], texture2d<uint, access::write> tint_symbol_3 [[texture(2)]], texture2d<int, access::write> tint_symbol_4 [[texture(3)]], texture2d<uint, access::write> tint_symbol_5 [[texture(4)]], texture2d<int, access::write> tint_symbol_6 [[texture(5)]], texture2d<float, access::write> tint_symbol_7 [[texture(6)]], texture2d<uint, access::write> tint_symbol_8 [[texture(7)]], texture2d<int, access::write> tint_symbol_9 [[texture(8)]], texture2d<float, access::write> tint_symbol_10 [[texture(9)]], texture2d<uint, access::write> tint_symbol_11 [[texture(10)]], texture2d<int, access::write> tint_symbol_12 [[texture(11)]], texture2d<float, access::write> tint_symbol_13 [[texture(12)]], texture2d<uint, access::write> tint_symbol_14 [[texture(13)]], texture2d<int, access::write> tint_symbol_15 [[texture(14)]], texture2d<float, access::write> tint_symbol_16 [[texture(15)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/storage/2d_array.wgsl.expected.msl b/test/types/texture/storage/2d_array.wgsl.expected.msl
index b872b42..09c45a0 100644
--- a/test/types/texture/storage/2d_array.wgsl.expected.msl
+++ b/test/types/texture/storage/2d_array.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture2d_array<float, access::write> tint_symbol_1 [[texture(0)]], texture2d_array<float, access::write> tint_symbol_2 [[texture(1)]], texture2d_array<uint, access::write> tint_symbol_3 [[texture(2)]], texture2d_array<int, access::write> tint_symbol_4 [[texture(3)]], texture2d_array<uint, access::write> tint_symbol_5 [[texture(4)]], texture2d_array<int, access::write> tint_symbol_6 [[texture(5)]], texture2d_array<float, access::write> tint_symbol_7 [[texture(6)]], texture2d_array<uint, access::write> tint_symbol_8 [[texture(7)]], texture2d_array<int, access::write> tint_symbol_9 [[texture(8)]], texture2d_array<float, access::write> tint_symbol_10 [[texture(9)]], texture2d_array<uint, access::write> tint_symbol_11 [[texture(10)]], texture2d_array<int, access::write> tint_symbol_12 [[texture(11)]], texture2d_array<float, access::write> tint_symbol_13 [[texture(12)]], texture2d_array<uint, access::write> tint_symbol_14 [[texture(13)]], texture2d_array<int, access::write> tint_symbol_15 [[texture(14)]], texture2d_array<float, access::write> tint_symbol_16 [[texture(15)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/types/texture/storage/3d.wgsl.expected.msl b/test/types/texture/storage/3d.wgsl.expected.msl
index 2881ddc..09c45a0 100644
--- a/test/types/texture/storage/3d.wgsl.expected.msl
+++ b/test/types/texture/storage/3d.wgsl.expected.msl
@@ -1,7 +1,7 @@
#include <metal_stdlib>
using namespace metal;
-kernel void tint_symbol(texture3d<float, access::write> tint_symbol_1 [[texture(0)]], texture3d<float, access::write> tint_symbol_2 [[texture(1)]], texture3d<uint, access::write> tint_symbol_3 [[texture(2)]], texture3d<int, access::write> tint_symbol_4 [[texture(3)]], texture3d<uint, access::write> tint_symbol_5 [[texture(4)]], texture3d<int, access::write> tint_symbol_6 [[texture(5)]], texture3d<float, access::write> tint_symbol_7 [[texture(6)]], texture3d<uint, access::write> tint_symbol_8 [[texture(7)]], texture3d<int, access::write> tint_symbol_9 [[texture(8)]], texture3d<float, access::write> tint_symbol_10 [[texture(9)]], texture3d<uint, access::write> tint_symbol_11 [[texture(10)]], texture3d<int, access::write> tint_symbol_12 [[texture(11)]], texture3d<float, access::write> tint_symbol_13 [[texture(12)]], texture3d<uint, access::write> tint_symbol_14 [[texture(13)]], texture3d<int, access::write> tint_symbol_15 [[texture(14)]], texture3d<float, access::write> tint_symbol_16 [[texture(15)]]) {
+kernel void tint_symbol() {
return;
}
diff --git a/test/var/initialization/private/array.wgsl.expected.msl b/test/var/initialization/private/array.wgsl.expected.msl
index f6ced8b..e80edf9 100644
--- a/test/var/initialization/private/array.wgsl.expected.msl
+++ b/test/var/initialization/private/array.wgsl.expected.msl
@@ -6,7 +6,6 @@
};
kernel void tint_symbol() {
- thread tint_array_wrapper tint_symbol_1 = {};
return;
}
diff --git a/test/var/initialization/private/matrix.wgsl.expected.msl b/test/var/initialization/private/matrix.wgsl.expected.msl
index b719283..09c45a0 100644
--- a/test/var/initialization/private/matrix.wgsl.expected.msl
+++ b/test/var/initialization/private/matrix.wgsl.expected.msl
@@ -2,7 +2,6 @@
using namespace metal;
kernel void tint_symbol() {
- thread float2x3 tint_symbol_1 = float2x3(0.0f);
return;
}
diff --git a/test/var/initialization/private/scalar.wgsl.expected.msl b/test/var/initialization/private/scalar.wgsl.expected.msl
index 895b363..09c45a0 100644
--- a/test/var/initialization/private/scalar.wgsl.expected.msl
+++ b/test/var/initialization/private/scalar.wgsl.expected.msl
@@ -2,7 +2,6 @@
using namespace metal;
kernel void tint_symbol() {
- thread int tint_symbol_1 = 0;
return;
}
diff --git a/test/var/initialization/private/struct.wgsl.expected.msl b/test/var/initialization/private/struct.wgsl.expected.msl
index 053aa12..5534eee 100644
--- a/test/var/initialization/private/struct.wgsl.expected.msl
+++ b/test/var/initialization/private/struct.wgsl.expected.msl
@@ -7,7 +7,6 @@
};
kernel void tint_symbol() {
- thread S tint_symbol_1 = {};
return;
}
diff --git a/test/var/initialization/private/vector.wgsl.expected.msl b/test/var/initialization/private/vector.wgsl.expected.msl
index c103cd7..09c45a0 100644
--- a/test/var/initialization/private/vector.wgsl.expected.msl
+++ b/test/var/initialization/private/vector.wgsl.expected.msl
@@ -2,7 +2,6 @@
using namespace metal;
kernel void tint_symbol() {
- thread int3 tint_symbol_1 = 0;
return;
}
diff --git a/test/var/initialization/workgroup/matrix.wgsl.expected.msl b/test/var/initialization/workgroup/matrix.wgsl.expected.msl
index de67302..0a507da 100644
--- a/test/var/initialization/workgroup/matrix.wgsl.expected.msl
+++ b/test/var/initialization/workgroup/matrix.wgsl.expected.msl
@@ -13,7 +13,8 @@
}
kernel void tint_symbol(threadgroup tint_symbol_4* tint_symbol_3 [[threadgroup(0)]], uint local_invocation_index [[thread_index_in_threadgroup]]) {
- tint_symbol_inner(local_invocation_index, &((*(tint_symbol_3)).v));
+ threadgroup float2x3* const tint_symbol_2 = &((*(tint_symbol_3)).v);
+ tint_symbol_inner(local_invocation_index, tint_symbol_2);
return;
}
diff --git a/test/var/uses/many_workgroup_vars.wgsl.expected.msl b/test/var/uses/many_workgroup_vars.wgsl.expected.msl
index f5c8304..8435181 100644
--- a/test/var/uses/many_workgroup_vars.wgsl.expected.msl
+++ b/test/var/uses/many_workgroup_vars.wgsl.expected.msl
@@ -311,7 +311,107 @@
}
kernel void tint_symbol(threadgroup tint_symbol_202* tint_symbol_102 [[threadgroup(0)]], uint idx [[thread_index_in_threadgroup]]) {
- tint_symbol_inner(idx, &((*(tint_symbol_102)).m00), &((*(tint_symbol_102)).m01), &((*(tint_symbol_102)).m02), &((*(tint_symbol_102)).m03), &((*(tint_symbol_102)).m04), &((*(tint_symbol_102)).m05), &((*(tint_symbol_102)).m06), &((*(tint_symbol_102)).m07), &((*(tint_symbol_102)).m08), &((*(tint_symbol_102)).m09), &((*(tint_symbol_102)).m10), &((*(tint_symbol_102)).m11), &((*(tint_symbol_102)).m12), &((*(tint_symbol_102)).m13), &((*(tint_symbol_102)).m14), &((*(tint_symbol_102)).m15), &((*(tint_symbol_102)).m16), &((*(tint_symbol_102)).m17), &((*(tint_symbol_102)).m18), &((*(tint_symbol_102)).m19), &((*(tint_symbol_102)).m20), &((*(tint_symbol_102)).m21), &((*(tint_symbol_102)).m22), &((*(tint_symbol_102)).m23), &((*(tint_symbol_102)).m24), &((*(tint_symbol_102)).m25), &((*(tint_symbol_102)).m26), &((*(tint_symbol_102)).m27), &((*(tint_symbol_102)).m28), &((*(tint_symbol_102)).m29), &((*(tint_symbol_102)).m30), &((*(tint_symbol_102)).m31), &((*(tint_symbol_102)).m32), &((*(tint_symbol_102)).m33), &((*(tint_symbol_102)).m34), &((*(tint_symbol_102)).m35), &((*(tint_symbol_102)).m36), &((*(tint_symbol_102)).m37), &((*(tint_symbol_102)).m38), &((*(tint_symbol_102)).m39), &((*(tint_symbol_102)).m40), &((*(tint_symbol_102)).m41), &((*(tint_symbol_102)).m42), &((*(tint_symbol_102)).m43), &((*(tint_symbol_102)).m44), &((*(tint_symbol_102)).m45), &((*(tint_symbol_102)).m46), &((*(tint_symbol_102)).m47), &((*(tint_symbol_102)).m48), &((*(tint_symbol_102)).m49), &((*(tint_symbol_102)).m50), &((*(tint_symbol_102)).m51), &((*(tint_symbol_102)).m52), &((*(tint_symbol_102)).m53), &((*(tint_symbol_102)).m54), &((*(tint_symbol_102)).m55), &((*(tint_symbol_102)).m56), &((*(tint_symbol_102)).m57), &((*(tint_symbol_102)).m58), &((*(tint_symbol_102)).m59), &((*(tint_symbol_102)).m60), &((*(tint_symbol_102)).m61), &((*(tint_symbol_102)).m62), &((*(tint_symbol_102)).m63), &((*(tint_symbol_102)).m64), &((*(tint_symbol_102)).m65), &((*(tint_symbol_102)).m66), &((*(tint_symbol_102)).m67), &((*(tint_symbol_102)).m68), &((*(tint_symbol_102)).m69), &((*(tint_symbol_102)).m70), &((*(tint_symbol_102)).m71), &((*(tint_symbol_102)).m72), &((*(tint_symbol_102)).m73), &((*(tint_symbol_102)).m74), &((*(tint_symbol_102)).m75), &((*(tint_symbol_102)).m76), &((*(tint_symbol_102)).m77), &((*(tint_symbol_102)).m78), &((*(tint_symbol_102)).m79), &((*(tint_symbol_102)).m80), &((*(tint_symbol_102)).m81), &((*(tint_symbol_102)).m82), &((*(tint_symbol_102)).m83), &((*(tint_symbol_102)).m84), &((*(tint_symbol_102)).m85), &((*(tint_symbol_102)).m86), &((*(tint_symbol_102)).m87), &((*(tint_symbol_102)).m88), &((*(tint_symbol_102)).m89), &((*(tint_symbol_102)).m90), &((*(tint_symbol_102)).m91), &((*(tint_symbol_102)).m92), &((*(tint_symbol_102)).m93), &((*(tint_symbol_102)).m94), &((*(tint_symbol_102)).m95), &((*(tint_symbol_102)).m96), &((*(tint_symbol_102)).m97), &((*(tint_symbol_102)).m98), &((*(tint_symbol_102)).m99));
+ threadgroup float2x2* const tint_symbol_101 = &((*(tint_symbol_102)).m00);
+ threadgroup float2x2* const tint_symbol_103 = &((*(tint_symbol_102)).m01);
+ threadgroup float2x2* const tint_symbol_104 = &((*(tint_symbol_102)).m02);
+ threadgroup float2x2* const tint_symbol_105 = &((*(tint_symbol_102)).m03);
+ threadgroup float2x2* const tint_symbol_106 = &((*(tint_symbol_102)).m04);
+ threadgroup float2x2* const tint_symbol_107 = &((*(tint_symbol_102)).m05);
+ threadgroup float2x2* const tint_symbol_108 = &((*(tint_symbol_102)).m06);
+ threadgroup float2x2* const tint_symbol_109 = &((*(tint_symbol_102)).m07);
+ threadgroup float2x2* const tint_symbol_110 = &((*(tint_symbol_102)).m08);
+ threadgroup float2x2* const tint_symbol_111 = &((*(tint_symbol_102)).m09);
+ threadgroup float2x2* const tint_symbol_112 = &((*(tint_symbol_102)).m10);
+ threadgroup float2x2* const tint_symbol_113 = &((*(tint_symbol_102)).m11);
+ threadgroup float2x2* const tint_symbol_114 = &((*(tint_symbol_102)).m12);
+ threadgroup float2x2* const tint_symbol_115 = &((*(tint_symbol_102)).m13);
+ threadgroup float2x2* const tint_symbol_116 = &((*(tint_symbol_102)).m14);
+ threadgroup float2x2* const tint_symbol_117 = &((*(tint_symbol_102)).m15);
+ threadgroup float2x2* const tint_symbol_118 = &((*(tint_symbol_102)).m16);
+ threadgroup float2x2* const tint_symbol_119 = &((*(tint_symbol_102)).m17);
+ threadgroup float2x2* const tint_symbol_120 = &((*(tint_symbol_102)).m18);
+ threadgroup float2x2* const tint_symbol_121 = &((*(tint_symbol_102)).m19);
+ threadgroup float2x2* const tint_symbol_122 = &((*(tint_symbol_102)).m20);
+ threadgroup float2x2* const tint_symbol_123 = &((*(tint_symbol_102)).m21);
+ threadgroup float2x2* const tint_symbol_124 = &((*(tint_symbol_102)).m22);
+ threadgroup float2x2* const tint_symbol_125 = &((*(tint_symbol_102)).m23);
+ threadgroup float2x2* const tint_symbol_126 = &((*(tint_symbol_102)).m24);
+ threadgroup float2x2* const tint_symbol_127 = &((*(tint_symbol_102)).m25);
+ threadgroup float2x2* const tint_symbol_128 = &((*(tint_symbol_102)).m26);
+ threadgroup float2x2* const tint_symbol_129 = &((*(tint_symbol_102)).m27);
+ threadgroup float2x2* const tint_symbol_130 = &((*(tint_symbol_102)).m28);
+ threadgroup float2x2* const tint_symbol_131 = &((*(tint_symbol_102)).m29);
+ threadgroup float2x2* const tint_symbol_132 = &((*(tint_symbol_102)).m30);
+ threadgroup float2x2* const tint_symbol_133 = &((*(tint_symbol_102)).m31);
+ threadgroup float2x2* const tint_symbol_134 = &((*(tint_symbol_102)).m32);
+ threadgroup float2x2* const tint_symbol_135 = &((*(tint_symbol_102)).m33);
+ threadgroup float2x2* const tint_symbol_136 = &((*(tint_symbol_102)).m34);
+ threadgroup float2x2* const tint_symbol_137 = &((*(tint_symbol_102)).m35);
+ threadgroup float2x2* const tint_symbol_138 = &((*(tint_symbol_102)).m36);
+ threadgroup float2x2* const tint_symbol_139 = &((*(tint_symbol_102)).m37);
+ threadgroup float2x2* const tint_symbol_140 = &((*(tint_symbol_102)).m38);
+ threadgroup float2x2* const tint_symbol_141 = &((*(tint_symbol_102)).m39);
+ threadgroup float2x2* const tint_symbol_142 = &((*(tint_symbol_102)).m40);
+ threadgroup float2x2* const tint_symbol_143 = &((*(tint_symbol_102)).m41);
+ threadgroup float2x2* const tint_symbol_144 = &((*(tint_symbol_102)).m42);
+ threadgroup float2x2* const tint_symbol_145 = &((*(tint_symbol_102)).m43);
+ threadgroup float2x2* const tint_symbol_146 = &((*(tint_symbol_102)).m44);
+ threadgroup float2x2* const tint_symbol_147 = &((*(tint_symbol_102)).m45);
+ threadgroup float2x2* const tint_symbol_148 = &((*(tint_symbol_102)).m46);
+ threadgroup float2x2* const tint_symbol_149 = &((*(tint_symbol_102)).m47);
+ threadgroup float2x2* const tint_symbol_150 = &((*(tint_symbol_102)).m48);
+ threadgroup float2x2* const tint_symbol_151 = &((*(tint_symbol_102)).m49);
+ threadgroup float2x2* const tint_symbol_152 = &((*(tint_symbol_102)).m50);
+ threadgroup float2x2* const tint_symbol_153 = &((*(tint_symbol_102)).m51);
+ threadgroup float2x2* const tint_symbol_154 = &((*(tint_symbol_102)).m52);
+ threadgroup float2x2* const tint_symbol_155 = &((*(tint_symbol_102)).m53);
+ threadgroup float2x2* const tint_symbol_156 = &((*(tint_symbol_102)).m54);
+ threadgroup float2x2* const tint_symbol_157 = &((*(tint_symbol_102)).m55);
+ threadgroup float2x2* const tint_symbol_158 = &((*(tint_symbol_102)).m56);
+ threadgroup float2x2* const tint_symbol_159 = &((*(tint_symbol_102)).m57);
+ threadgroup float2x2* const tint_symbol_160 = &((*(tint_symbol_102)).m58);
+ threadgroup float2x2* const tint_symbol_161 = &((*(tint_symbol_102)).m59);
+ threadgroup float2x2* const tint_symbol_162 = &((*(tint_symbol_102)).m60);
+ threadgroup float2x2* const tint_symbol_163 = &((*(tint_symbol_102)).m61);
+ threadgroup float2x2* const tint_symbol_164 = &((*(tint_symbol_102)).m62);
+ threadgroup float2x2* const tint_symbol_165 = &((*(tint_symbol_102)).m63);
+ threadgroup float2x2* const tint_symbol_166 = &((*(tint_symbol_102)).m64);
+ threadgroup float2x2* const tint_symbol_167 = &((*(tint_symbol_102)).m65);
+ threadgroup float2x2* const tint_symbol_168 = &((*(tint_symbol_102)).m66);
+ threadgroup float2x2* const tint_symbol_169 = &((*(tint_symbol_102)).m67);
+ threadgroup float2x2* const tint_symbol_170 = &((*(tint_symbol_102)).m68);
+ threadgroup float2x2* const tint_symbol_171 = &((*(tint_symbol_102)).m69);
+ threadgroup float2x2* const tint_symbol_172 = &((*(tint_symbol_102)).m70);
+ threadgroup float2x2* const tint_symbol_173 = &((*(tint_symbol_102)).m71);
+ threadgroup float2x2* const tint_symbol_174 = &((*(tint_symbol_102)).m72);
+ threadgroup float2x2* const tint_symbol_175 = &((*(tint_symbol_102)).m73);
+ threadgroup float2x2* const tint_symbol_176 = &((*(tint_symbol_102)).m74);
+ threadgroup float2x2* const tint_symbol_177 = &((*(tint_symbol_102)).m75);
+ threadgroup float2x2* const tint_symbol_178 = &((*(tint_symbol_102)).m76);
+ threadgroup float2x2* const tint_symbol_179 = &((*(tint_symbol_102)).m77);
+ threadgroup float2x2* const tint_symbol_180 = &((*(tint_symbol_102)).m78);
+ threadgroup float2x2* const tint_symbol_181 = &((*(tint_symbol_102)).m79);
+ threadgroup float2x2* const tint_symbol_182 = &((*(tint_symbol_102)).m80);
+ threadgroup float2x2* const tint_symbol_183 = &((*(tint_symbol_102)).m81);
+ threadgroup float2x2* const tint_symbol_184 = &((*(tint_symbol_102)).m82);
+ threadgroup float2x2* const tint_symbol_185 = &((*(tint_symbol_102)).m83);
+ threadgroup float2x2* const tint_symbol_186 = &((*(tint_symbol_102)).m84);
+ threadgroup float2x2* const tint_symbol_187 = &((*(tint_symbol_102)).m85);
+ threadgroup float2x2* const tint_symbol_188 = &((*(tint_symbol_102)).m86);
+ threadgroup float2x2* const tint_symbol_189 = &((*(tint_symbol_102)).m87);
+ threadgroup float2x2* const tint_symbol_190 = &((*(tint_symbol_102)).m88);
+ threadgroup float2x2* const tint_symbol_191 = &((*(tint_symbol_102)).m89);
+ threadgroup float2x2* const tint_symbol_192 = &((*(tint_symbol_102)).m90);
+ threadgroup float2x2* const tint_symbol_193 = &((*(tint_symbol_102)).m91);
+ threadgroup float2x2* const tint_symbol_194 = &((*(tint_symbol_102)).m92);
+ threadgroup float2x2* const tint_symbol_195 = &((*(tint_symbol_102)).m93);
+ threadgroup float2x2* const tint_symbol_196 = &((*(tint_symbol_102)).m94);
+ threadgroup float2x2* const tint_symbol_197 = &((*(tint_symbol_102)).m95);
+ threadgroup float2x2* const tint_symbol_198 = &((*(tint_symbol_102)).m96);
+ threadgroup float2x2* const tint_symbol_199 = &((*(tint_symbol_102)).m97);
+ threadgroup float2x2* const tint_symbol_200 = &((*(tint_symbol_102)).m98);
+ threadgroup float2x2* const tint_symbol_201 = &((*(tint_symbol_102)).m99);
+ tint_symbol_inner(idx, tint_symbol_101, tint_symbol_103, tint_symbol_104, tint_symbol_105, tint_symbol_106, tint_symbol_107, tint_symbol_108, tint_symbol_109, tint_symbol_110, tint_symbol_111, tint_symbol_112, tint_symbol_113, tint_symbol_114, tint_symbol_115, tint_symbol_116, tint_symbol_117, tint_symbol_118, tint_symbol_119, tint_symbol_120, tint_symbol_121, tint_symbol_122, tint_symbol_123, tint_symbol_124, tint_symbol_125, tint_symbol_126, tint_symbol_127, tint_symbol_128, tint_symbol_129, tint_symbol_130, tint_symbol_131, tint_symbol_132, tint_symbol_133, tint_symbol_134, tint_symbol_135, tint_symbol_136, tint_symbol_137, tint_symbol_138, tint_symbol_139, tint_symbol_140, tint_symbol_141, tint_symbol_142, tint_symbol_143, tint_symbol_144, tint_symbol_145, tint_symbol_146, tint_symbol_147, tint_symbol_148, tint_symbol_149, tint_symbol_150, tint_symbol_151, tint_symbol_152, tint_symbol_153, tint_symbol_154, tint_symbol_155, tint_symbol_156, tint_symbol_157, tint_symbol_158, tint_symbol_159, tint_symbol_160, tint_symbol_161, tint_symbol_162, tint_symbol_163, tint_symbol_164, tint_symbol_165, tint_symbol_166, tint_symbol_167, tint_symbol_168, tint_symbol_169, tint_symbol_170, tint_symbol_171, tint_symbol_172, tint_symbol_173, tint_symbol_174, tint_symbol_175, tint_symbol_176, tint_symbol_177, tint_symbol_178, tint_symbol_179, tint_symbol_180, tint_symbol_181, tint_symbol_182, tint_symbol_183, tint_symbol_184, tint_symbol_185, tint_symbol_186, tint_symbol_187, tint_symbol_188, tint_symbol_189, tint_symbol_190, tint_symbol_191, tint_symbol_192, tint_symbol_193, tint_symbol_194, tint_symbol_195, tint_symbol_196, tint_symbol_197, tint_symbol_198, tint_symbol_199, tint_symbol_200, tint_symbol_201);
return;
}