msl: Promote local private vars to function scope

If a module-scope private variable is only referenced within a single
function, promote it to a function scope declaration instead of
passing it as a parameter. This reduces the number of a function
parameters that are needed in some cases.

Bug: tint:1509
Change-Id: I8951f6216bc7e4cf5abfda314bea1e9ed3ded560
Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/94002
Reviewed-by: Antonio Maiorano <amaiorano@google.com>
Commit-Queue: Dan Sinclair <dsinclair@chromium.org>
Kokoro: Kokoro <noreply+kokoro@google.com>
This commit is contained in:
dan sinclair 2022-06-28 02:06:05 +00:00 committed by Dawn LUCI CQ
parent 1a758d8ceb
commit 6c167a0dc7
38 changed files with 18845 additions and 566 deletions

View File

@ -352,6 +352,9 @@ struct ModuleScopeVarToEntryPointParam::State {
if (var->StorageClass() == ast::StorageClass::kNone) {
continue;
}
if (local_private_vars_.count(var)) {
continue;
}
// This is the symbol for the variable that replaces the module-scope var.
auto new_var_symbol = ctx.dst->Sym();
@ -362,20 +365,46 @@ struct ModuleScopeVarToEntryPointParam::State {
// Track whether the new variable was wrapped in a struct or not.
bool is_wrapped = false;
// Process the variable to redeclare it as a function parameter or local variable.
if (is_entry_point) {
ProcessVariableInEntryPoint(func_ast, var, new_var_symbol, workgroup_param,
workgroup_parameter_members, is_pointer,
is_wrapped);
// Check if this is a private variable that is only referenced by this function.
bool local_private = false;
if (var->StorageClass() == ast::StorageClass::kPrivate) {
local_private = true;
for (auto* user : var->Users()) {
auto* stmt = user->Stmt();
if (!stmt || stmt->Function() != func_sem) {
local_private = false;
break;
}
}
}
if (local_private) {
// Redeclare the variable at function scope.
auto* disable_validation =
ctx.dst->Disable(ast::DisabledValidation::kIgnoreStorageClass);
auto* constructor = ctx.Clone(var->Declaration()->constructor);
auto* local_var = ctx.dst->Var(new_var_symbol,
CreateASTTypeFor(ctx, var->Type()->UnwrapRef()),
ast::StorageClass::kPrivate, constructor,
ast::AttributeList{disable_validation});
ctx.InsertFront(func_ast->body->statements, ctx.dst->Decl(local_var));
local_private_vars_.insert(var);
} else {
ProcessVariableInUserFunction(func_ast, var, new_var_symbol, is_pointer);
// Process the variable to redeclare it as a parameter or local variable.
if (is_entry_point) {
ProcessVariableInEntryPoint(func_ast, var, new_var_symbol, workgroup_param,
workgroup_parameter_members, is_pointer,
is_wrapped);
} else {
ProcessVariableInUserFunction(func_ast, var, new_var_symbol, is_pointer);
}
// Record the replacement symbol.
var_to_newvar[var] = {new_var_symbol, is_pointer, is_wrapped};
}
// Replace all uses of the module-scope variable.
ReplaceUsesInFunction(func_ast, var, new_var_symbol, is_pointer, is_wrapped);
// Record the replacement symbol.
var_to_newvar[var] = {new_var_symbol, is_pointer, is_wrapped};
}
if (!workgroup_parameter_members.empty()) {
@ -404,7 +433,13 @@ struct ModuleScopeVarToEntryPointParam::State {
continue;
}
auto new_var = var_to_newvar[target_var];
auto it = var_to_newvar.find(target_var);
if (it == var_to_newvar.end()) {
// No replacement was created for this function.
continue;
}
auto new_var = it->second;
bool is_handle = target_var->Type()->UnwrapRef()->is_handle();
const ast::Expression* arg = ctx.dst->Expr(new_var.symbol);
if (new_var.is_wrapped) {
@ -435,6 +470,9 @@ struct ModuleScopeVarToEntryPointParam::State {
// The structures that have already been cloned by this transform.
std::unordered_set<const sem::Struct*> cloned_structs_;
// Set of a private variables that are local to a single function.
std::unordered_set<const sem::Variable*> local_private_vars_;
// Map from identifier expression to the address-of expression that uses it.
std::unordered_map<const ast::IdentifierExpression*, const ast::UnaryOpExpression*>
ident_to_address_of_;

View File

@ -95,9 +95,14 @@ var<workgroup> w : f32;
fn no_uses() {
}
fn zoo() {
p = p * 2.0;
}
fn bar(a : f32, b : f32) {
p = a;
w = b;
zoo();
}
fn foo(a : f32) {
@ -116,22 +121,27 @@ fn main() {
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<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 zoo(@internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<private, f32>) {
*(tint_symbol) = (*(tint_symbol) * 2.0);
}
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>) {
fn bar(a : f32, b : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_1 : ptr<private, f32>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_2 : ptr<workgroup, f32>) {
*(tint_symbol_1) = a;
*(tint_symbol_2) = b;
zoo(tint_symbol_1);
}
fn foo(a : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_3 : ptr<private, f32>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_4 : ptr<workgroup, f32>) {
let b : f32 = 2.0;
bar(a, b, tint_symbol_2, tint_symbol_3);
bar(a, b, tint_symbol_3, tint_symbol_4);
no_uses();
}
@compute @workgroup_size(1)
fn main() {
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol_4 : f32;
@internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_5 : f32;
foo(1.0, &(tint_symbol_4), &(tint_symbol_5));
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol_5 : f32;
@internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_6 : f32;
foo(1.0, &(tint_symbol_5), &(tint_symbol_6));
}
)";
@ -159,6 +169,11 @@ fn no_uses() {
fn bar(a : f32, b : f32) {
p = a;
w = b;
zoo();
}
fn zoo() {
p = p * 2.0;
}
var<private> p : f32;
@ -168,23 +183,28 @@ var<workgroup> w : f32;
auto* expect = R"(
@compute @workgroup_size(1)
fn main() {
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol_4 : f32;
@internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_5 : f32;
foo(1.0, &(tint_symbol_4), &(tint_symbol_5));
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol_5 : f32;
@internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_6 : f32;
foo(1.0, &(tint_symbol_5), &(tint_symbol_6));
}
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>) {
fn foo(a : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_3 : ptr<private, f32>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_4 : ptr<workgroup, f32>) {
let b : f32 = 2.0;
bar(a, b, tint_symbol_2, tint_symbol_3);
bar(a, b, tint_symbol_3, tint_symbol_4);
no_uses();
}
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<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 bar(a : f32, b : f32, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_1 : ptr<private, f32>, @internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol_2 : ptr<workgroup, f32>) {
*(tint_symbol_1) = a;
*(tint_symbol_2) = b;
zoo(tint_symbol_1);
}
fn zoo(@internal(disable_validation__ignore_storage_class) @internal(disable_validation__ignore_invalid_pointer_argument) tint_symbol : ptr<private, f32>) {
*(tint_symbol) = (*(tint_symbol) * 2.0);
}
)";
@ -307,9 +327,9 @@ fn main() {
TEST_F(ModuleScopeVarToEntryPointParamTest, FoldAddressOfDeref) {
auto* src = R"(
var<private> v : f32;
var<workgroup> v : f32;
fn bar(p : ptr<private, f32>) {
fn bar(p : ptr<workgroup, f32>) {
(*p) = 0.0;
}
@ -324,17 +344,17 @@ fn main() {
)";
auto* expect = R"(
fn bar(p : ptr<private, f32>) {
fn bar(p : ptr<workgroup, f32>) {
*(p) = 0.0;
}
fn foo(@internal(disable_validation__ignore_storage_class) @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<workgroup, f32>) {
bar(tint_symbol);
}
@compute @workgroup_size(1)
fn main() {
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32;
@internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_1 : f32;
foo(&(tint_symbol_1));
}
)";
@ -355,25 +375,25 @@ fn foo() {
bar(&v);
}
fn bar(p : ptr<private, f32>) {
fn bar(p : ptr<workgroup, f32>) {
(*p) = 0.0;
}
var<private> v : f32;
var<workgroup> v : f32;
)";
auto* expect = R"(
@compute @workgroup_size(1)
fn main() {
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol_1 : f32;
@internal(disable_validation__ignore_storage_class) var<workgroup> tint_symbol_1 : f32;
foo(&(tint_symbol_1));
}
fn foo(@internal(disable_validation__ignore_storage_class) @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<workgroup, f32>) {
bar(tint_symbol);
}
fn bar(p : ptr<private, f32>) {
fn bar(p : ptr<workgroup, f32>) {
*(p) = 0.0;
}
)";
@ -1152,6 +1172,81 @@ fn main() {
EXPECT_EQ(expect, str(got));
}
// Test that a private variable that is only referenced by a single user-defined function is
// promoted to a function scope variable, rather than passed as a parameter.
TEST_F(ModuleScopeVarToEntryPointParamTest, PromotePrivateToFunctionScope) {
auto* src = R"(
var<private> p : f32;
fn foo(a : f32) -> f32 {
let x = p;
p = x * a;
return p;
}
@compute @workgroup_size(1)
fn main() {
_ = foo(1.0);
}
)";
auto* expect = R"(
fn foo(a : f32) -> f32 {
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32;
let x = tint_symbol;
tint_symbol = (x * a);
return tint_symbol;
}
@compute @workgroup_size(1)
fn main() {
_ = foo(1.0);
}
)";
auto got = Run<ModuleScopeVarToEntryPointParam>(src);
EXPECT_EQ(expect, str(got));
}
// Test that a private variable that is only referenced by a single user-defined function is
// promoted to a function scope variable, rather than passed as a parameter.
TEST_F(ModuleScopeVarToEntryPointParamTest, PromotePrivateToFunctionScope_OutOfOrder) {
auto* src = R"(
var<private> p : f32;
@compute @workgroup_size(1)
fn main() {
_ = foo(1.0);
}
fn foo(a : f32) -> f32 {
let x = p;
p = x * a;
return p;
}
)";
auto* expect = R"(
@compute @workgroup_size(1)
fn main() {
_ = foo(1.0);
}
fn foo(a : f32) -> f32 {
@internal(disable_validation__ignore_storage_class) var<private> tint_symbol : f32;
let x = tint_symbol;
tint_symbol = (x * a);
return tint_symbol;
}
)";
auto got = Run<ModuleScopeVarToEntryPointParam>(src);
EXPECT_EQ(expect, str(got));
}
TEST_F(ModuleScopeVarToEntryPointParamTest, EmtpyModule) {
auto* src = "";

View File

@ -28,7 +28,8 @@ S ret_struct_arr() {
return tint_symbol_2;
}
void foo(tint_array<int4, 4> src_param, thread tint_array<int4, 4>* const tint_symbol_4, threadgroup tint_array<int4, 4>* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7) {
void foo(tint_array<int4, 4> src_param, threadgroup tint_array<int4, 4>* const tint_symbol_5, const constant S* const tint_symbol_6, device S* const tint_symbol_7) {
thread tint_array<int4, 4> tint_symbol_4 = {};
tint_array<int4, 4> src_function = {};
tint_array<int4, 4> dst = {};
tint_array<int4, 4> const tint_symbol_3 = tint_array<int4, 4>{int4(1), int4(2), int4(3), int4(3)};
@ -38,7 +39,7 @@ void foo(tint_array<int4, 4> src_param, thread tint_array<int4, 4>* const tint_s
tint_array<int4, 4> const src_let = tint_array<int4, 4>{};
dst = src_let;
dst = src_function;
dst = *(tint_symbol_4);
dst = tint_symbol_4;
dst = *(tint_symbol_5);
S const tint_symbol = ret_struct_arr();
dst = tint_symbol.arr;

View File

@ -28,22 +28,25 @@ S ret_struct_arr() {
return tint_symbol_2;
}
void foo(tint_array<int4, 4> src_param, thread tint_array<int4, 4>* const tint_symbol_4, thread tint_array<int4, 4>* const tint_symbol_5, threadgroup tint_array<int4, 4>* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8, thread tint_array<tint_array<tint_array<int, 2>, 3>, 4>* const tint_symbol_9) {
void foo(tint_array<int4, 4> src_param, threadgroup tint_array<int4, 4>* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8) {
thread tint_array<int4, 4> tint_symbol_4 = {};
thread tint_array<int4, 4> tint_symbol_5 = {};
thread tint_array<tint_array<tint_array<int, 2>, 3>, 4> tint_symbol_9 = {};
tint_array<int4, 4> src_function = {};
tint_array<int4, 4> const tint_symbol_3 = tint_array<int4, 4>{int4(1), int4(2), int4(3), int4(3)};
*(tint_symbol_4) = tint_symbol_3;
*(tint_symbol_4) = src_param;
*(tint_symbol_4) = ret_arr();
tint_symbol_4 = tint_symbol_3;
tint_symbol_4 = src_param;
tint_symbol_4 = ret_arr();
tint_array<int4, 4> const src_let = tint_array<int4, 4>{};
*(tint_symbol_4) = src_let;
*(tint_symbol_4) = src_function;
*(tint_symbol_4) = *(tint_symbol_5);
*(tint_symbol_4) = *(tint_symbol_6);
tint_symbol_4 = src_let;
tint_symbol_4 = src_function;
tint_symbol_4 = tint_symbol_5;
tint_symbol_4 = *(tint_symbol_6);
S const tint_symbol = ret_struct_arr();
*(tint_symbol_4) = tint_symbol.arr;
*(tint_symbol_4) = (*(tint_symbol_7)).arr;
*(tint_symbol_4) = (*(tint_symbol_8)).arr;
tint_symbol_4 = tint_symbol.arr;
tint_symbol_4 = (*(tint_symbol_7)).arr;
tint_symbol_4 = (*(tint_symbol_8)).arr;
tint_array<tint_array<tint_array<int, 2>, 3>, 4> src_nested = {};
*(tint_symbol_9) = src_nested;
tint_symbol_9 = src_nested;
}

View File

@ -32,7 +32,8 @@ S ret_struct_arr() {
return tint_symbol_3;
}
void foo(tint_array<int4, 4> src_param, device S* const tint_symbol_5, thread tint_array<int4, 4>* const tint_symbol_6, threadgroup tint_array<int4, 4>* const tint_symbol_7, const constant S* const tint_symbol_8, device S* const tint_symbol_9, device S_nested* const tint_symbol_10) {
void foo(tint_array<int4, 4> src_param, device S* const tint_symbol_5, threadgroup tint_array<int4, 4>* const tint_symbol_7, const constant S* const tint_symbol_8, device S* const tint_symbol_9, device S_nested* const tint_symbol_10) {
thread tint_array<int4, 4> tint_symbol_6 = {};
tint_array<int4, 4> src_function = {};
tint_array<int4, 4> const tint_symbol_4 = tint_array<int4, 4>{int4(1), int4(2), int4(3), int4(3)};
(*(tint_symbol_5)).arr = tint_symbol_4;
@ -42,7 +43,7 @@ void foo(tint_array<int4, 4> src_param, device S* const tint_symbol_5, thread ti
tint_array<int4, 4> const src_let = tint_array<int4, 4>{};
(*(tint_symbol_5)).arr = src_let;
(*(tint_symbol_5)).arr = src_function;
(*(tint_symbol_5)).arr = *(tint_symbol_6);
(*(tint_symbol_5)).arr = tint_symbol_6;
(*(tint_symbol_5)).arr = *(tint_symbol_7);
S const tint_symbol_1 = ret_struct_arr();
(*(tint_symbol_5)).arr = tint_symbol_1.arr;

View File

@ -28,7 +28,8 @@ S ret_struct_arr() {
return tint_symbol_2;
}
void foo(tint_array<int4, 4> src_param, threadgroup tint_array<int4, 4>* const tint_symbol_4, thread tint_array<int4, 4>* const tint_symbol_5, threadgroup tint_array<int4, 4>* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8, threadgroup tint_array<tint_array<tint_array<int, 2>, 3>, 4>* const tint_symbol_9) {
void foo(tint_array<int4, 4> src_param, threadgroup tint_array<int4, 4>* const tint_symbol_4, threadgroup tint_array<int4, 4>* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8, threadgroup tint_array<tint_array<tint_array<int, 2>, 3>, 4>* const tint_symbol_9) {
thread tint_array<int4, 4> tint_symbol_5 = {};
tint_array<int4, 4> src_function = {};
tint_array<int4, 4> const tint_symbol_3 = tint_array<int4, 4>{int4(1), int4(2), int4(3), int4(3)};
*(tint_symbol_4) = tint_symbol_3;
@ -37,7 +38,7 @@ void foo(tint_array<int4, 4> src_param, threadgroup tint_array<int4, 4>* const t
tint_array<int4, 4> const src_let = tint_array<int4, 4>{};
*(tint_symbol_4) = src_let;
*(tint_symbol_4) = src_function;
*(tint_symbol_4) = *(tint_symbol_5);
*(tint_symbol_4) = tint_symbol_5;
*(tint_symbol_4) = *(tint_symbol_6);
S const tint_symbol = ret_struct_arr();
*(tint_symbol_4) = tint_symbol.arr;

View File

@ -1,22 +1,22 @@
#include <metal_stdlib>
using namespace metal;
void foo(thread float2* const tint_symbol_1, thread int3* const tint_symbol_2, thread uint4* const tint_symbol_3, thread bool2* const tint_symbol_4) {
void foo() {
thread float2 tint_symbol_1 = 0.0f;
thread int3 tint_symbol_2 = 0;
thread uint4 tint_symbol_3 = 0u;
thread bool2 tint_symbol_4 = false;
for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
(*(tint_symbol_1))[i] = 1.0f;
(*(tint_symbol_2))[i] = 1;
(*(tint_symbol_3))[i] = 1u;
(*(tint_symbol_4))[i] = true;
tint_symbol_1[i] = 1.0f;
tint_symbol_2[i] = 1;
tint_symbol_3[i] = 1u;
tint_symbol_4[i] = true;
}
}
kernel void tint_symbol() {
thread float2 tint_symbol_5 = 0.0f;
thread int3 tint_symbol_6 = 0;
thread uint4 tint_symbol_7 = 0u;
thread bool2 tint_symbol_8 = false;
for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
foo();
}
return;
}

View File

@ -1,21 +1,21 @@
#include <metal_stdlib>
using namespace metal;
void foo(thread float2* const tint_symbol_1, thread int3* const tint_symbol_2, thread uint4* const tint_symbol_3, thread bool2* const tint_symbol_4) {
void foo() {
thread float2 tint_symbol_1 = 0.0f;
thread int3 tint_symbol_2 = 0;
thread uint4 tint_symbol_3 = 0u;
thread bool2 tint_symbol_4 = false;
int i = 0;
(*(tint_symbol_1))[i] = 1.0f;
(*(tint_symbol_2))[i] = 1;
(*(tint_symbol_3))[i] = 1u;
(*(tint_symbol_4))[i] = true;
tint_symbol_1[i] = 1.0f;
tint_symbol_2[i] = 1;
tint_symbol_3[i] = 1u;
tint_symbol_4[i] = true;
}
kernel void tint_symbol() {
thread float2 tint_symbol_5 = 0.0f;
thread int3 tint_symbol_6 = 0;
thread uint4 tint_symbol_7 = 0u;
thread bool2 tint_symbol_8 = false;
for(int i = 0; (i < 2); i = as_type<int>((as_type<uint>(i) + as_type<uint>(1)))) {
foo(&(tint_symbol_5), &(tint_symbol_6), &(tint_symbol_7), &(tint_symbol_8));
foo();
}
return;
}

View File

@ -5,13 +5,13 @@ void x(thread float* const p) {
*(p) = 0.0f;
}
void g(thread float* const tint_symbol) {
x(tint_symbol);
void g() {
thread float tint_symbol = 0.0f;
x(&(tint_symbol));
}
fragment void f() {
thread float tint_symbol_1 = 0.0f;
g(&(tint_symbol_1));
g();
return;
}

View File

@ -68,22 +68,22 @@ struct tint_symbol_3 {
float4 gl_Position [[position]];
};
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) {
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, const constant LeftOver* const tint_symbol_13, thread float4* const tint_symbol_14, thread float2* const tint_symbol_15) {
thread float3 tint_symbol_12 = 0.0f;
*(tint_symbol_10) = position_param;
*(tint_symbol_11) = uv_param;
*(tint_symbol_12) = normal_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(const constant LeftOver* tint_symbol_19 [[buffer(0)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
vertex tint_symbol_3 tint_symbol(const constant LeftOver* tint_symbol_18 [[buffer(0)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
thread float3 tint_symbol_16 = 0.0f;
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));
thread float4 tint_symbol_19 = 0.0f;
thread float2 tint_symbol_20 = 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_3 wrapper_result = {};
wrapper_result.gl_Position = inner_result.gl_Position;
wrapper_result.vUV_1 = inner_result.vUV_1;

3009
test/tint/bug/tint/1509.wgsl Normal file

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -169,19 +169,19 @@ struct tint_symbol_3 {
float4 sk_FragColor_1 [[color(0)]];
};
main_out tint_symbol_inner(bool sk_Clockwise_param, float4 vcolor_S0_param, thread bool* const tint_symbol_9, thread float4* const tint_symbol_10, const constant UniformBuffer* const tint_symbol_11, thread float4* const tint_symbol_12) {
*(tint_symbol_9) = sk_Clockwise_param;
main_out tint_symbol_inner(bool sk_Clockwise_param, float4 vcolor_S0_param, thread float4* const tint_symbol_10, const constant UniformBuffer* const tint_symbol_11, thread float4* const tint_symbol_12) {
thread bool tint_symbol_9 = false;
tint_symbol_9 = sk_Clockwise_param;
*(tint_symbol_10) = vcolor_S0_param;
main_1(tint_symbol_10, tint_symbol_11, tint_symbol_12);
main_out const tint_symbol_4 = {.sk_FragColor_1=*(tint_symbol_12)};
return tint_symbol_4;
}
fragment tint_symbol_3 tint_symbol(const constant UniformBuffer* tint_symbol_15 [[buffer(0)]], bool sk_Clockwise_param [[front_facing]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
thread bool tint_symbol_13 = false;
thread float4 tint_symbol_14 = 0.0f;
thread float4 tint_symbol_16 = 0.0f;
main_out const inner_result = tint_symbol_inner(sk_Clockwise_param, tint_symbol_1.vcolor_S0_param, &(tint_symbol_13), &(tint_symbol_14), tint_symbol_15, &(tint_symbol_16));
fragment tint_symbol_3 tint_symbol(const constant UniformBuffer* tint_symbol_14 [[buffer(0)]], bool sk_Clockwise_param [[front_facing]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
thread float4 tint_symbol_13 = 0.0f;
thread float4 tint_symbol_15 = 0.0f;
main_out const inner_result = tint_symbol_inner(sk_Clockwise_param, tint_symbol_1.vcolor_S0_param, &(tint_symbol_13), tint_symbol_14, &(tint_symbol_15));
tint_symbol_3 wrapper_result = {};
wrapper_result.sk_FragColor_1 = inner_result.sk_FragColor_1;
return wrapper_result;

View File

@ -5,13 +5,13 @@ struct DrawIndirectArgs {
/* 0x0000 */ atomic_uint vertexCount;
};
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);
void computeMain_inner(uint3 global_id, device DrawIndirectArgs* const tint_symbol) {
thread uint tint_symbol_1 = 0u;
uint const firstVertex = atomic_fetch_add_explicit(&((*(tint_symbol)).vertexCount), tint_symbol_1, memory_order_relaxed);
}
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));
computeMain_inner(global_id, tint_symbol_2);
return;
}

View File

@ -64,7 +64,8 @@ float4x4 getFrameData_f1_(thread float* const frameID, const constant LeftOver*
return float4x4(float4(x_40[0], x_40[1], x_40[2], x_40[3]), float4(x_47[0], x_47[1], x_47[2], x_47[3]), float4(x_54[0], x_54[1], x_54[2], x_54[3]), float4(float4(0.0f)[0], float4(0.0f)[1], float4(0.0f)[2], float4(0.0f)[3]));
}
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) {
void main_1(thread float2* const tint_symbol_8, const constant LeftOver* const tint_symbol_9, texture2d<float, access::sample> tint_symbol_10, sampler tint_symbol_11, texture2d<float, access::sample> tint_symbol_12, texture2d<float, access::sample> tint_symbol_13, sampler tint_symbol_14, texture2d<float, access::sample> tint_symbol_16, sampler tint_symbol_17, texture2d<float, access::sample> tint_symbol_18, sampler tint_symbol_19, thread float4* const tint_symbol_20) {
thread float tint_symbol_15 = 0.0f;
float4 color = 0.0f;
float2 tileUV = 0.0f;
float2 tileID = 0.0f;
@ -131,7 +132,7 @@ void main_1(thread float2* const tint_symbol_8, const constant LeftOver* const t
if ((x_174 > 0.0f)) {
float const x_181 = (*(tint_symbol_9)).time;
float const x_184 = animationData[2];
*(tint_symbol_15) = 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;
@ -140,7 +141,7 @@ void main_1(thread float2* const tint_symbol_8, const constant LeftOver* const t
break;
}
float const x_197 = animationData[1];
float const x_198 = *(tint_symbol_15);
float const x_198 = tint_symbol_15;
if ((x_197 > x_198)) {
float const x_203 = animationData[0];
frameID_1 = x_203;
@ -231,28 +232,27 @@ struct tint_symbol_3 {
float4 glFragColor_1 [[color(0)]];
};
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) {
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, 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, texture2d<float, access::sample> tint_symbol_33, sampler tint_symbol_34, texture2d<float, access::sample> tint_symbol_35, sampler tint_symbol_36, thread float4* const tint_symbol_37) {
thread float2 tint_symbol_22 = 0.0f;
thread float2 tint_symbol_23 = 0.0f;
thread float2 tint_symbol_24 = 0.0f;
thread float3 tint_symbol_25 = 0.0f;
thread float2 tint_symbol_26 = 0.0f;
*(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)};
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);
main_out const tint_symbol_4 = {.glFragColor_1=*(tint_symbol_37)};
return tint_symbol_4;
}
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 float2 tint_symbol_40 = 0.0f;
thread float2 tint_symbol_41 = 0.0f;
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));
fragment tint_symbol_3 tint_symbol(const constant LeftOver* tint_symbol_39 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_40 [[texture(0)]], sampler tint_symbol_41 [[sampler(0)]], texture2d<float, access::sample> tint_symbol_42 [[texture(1)]], texture2d<float, access::sample> tint_symbol_43 [[texture(2)]], sampler tint_symbol_44 [[sampler(1)]], texture2d<float, access::sample> tint_symbol_45 [[texture(3)]], sampler tint_symbol_46 [[sampler(2)]], texture2d<float, access::sample> tint_symbol_47 [[texture(4)]], sampler tint_symbol_48 [[sampler(3)]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
thread float2 tint_symbol_38 = 0.0f;
thread float4 tint_symbol_49 = 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_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_3 wrapper_result = {};
wrapper_result.glFragColor_1 = inner_result.glFragColor_1;
return wrapper_result;

View File

@ -196,7 +196,9 @@ lightingInfo computeHemisphericLighting_vf3_vf3_vf4_vf3_vf3_vf3_f1_(thread float
return x_245;
}
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) {
void main_1(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) {
thread float tint_symbol_5 = 0.0f;
thread float3 tint_symbol_6 = 0.0f;
float4 tempTextureRead = 0.0f;
float3 rgb = 0.0f;
float3 output5 = 0.0f;
@ -250,8 +252,8 @@ void main_1(thread float* const tint_symbol_5, thread float3* const tint_symbol_
float3 diffuseOutput = 0.0f;
float3 specularOutput = 0.0f;
float3 output3 = 0.0f;
*(tint_symbol_5) = 100.0f;
*(tint_symbol_6) = float3(0.5f);
tint_symbol_5 = 100.0f;
tint_symbol_6 = float3(0.5f);
float2 const x_261 = *(tint_symbol_7);
float4 const x_262 = tint_symbol_8.sample(tint_symbol_9, x_261);
tempTextureRead = x_262;
@ -394,7 +396,7 @@ void main_1(thread float* const tint_symbol_5, thread float3* const tint_symbol_
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);
float const x_488 = tint_symbol_5;
glossiness_1 = (1.0f * x_488);
diffuseBase = float3(0.0f);
specularBase = float3(0.0f);
@ -429,7 +431,7 @@ void main_1(thread float* const tint_symbol_5, thread float3* const tint_symbol_
float3 const x_536 = rgb1;
diffuseOutput = (x_535 * x_536);
float3 const x_539 = specularBase;
float3 const x_540 = *(tint_symbol_6);
float3 const x_540 = tint_symbol_6;
specularOutput = (x_539 * x_540);
float3 const x_543 = diffuseOutput;
float3 const x_544 = specularOutput;
@ -454,27 +456,25 @@ struct tint_symbol_3 {
float4 glFragColor_1 [[color(0)]];
};
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) {
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, texture2d<float, access::sample> tint_symbol_24, sampler tint_symbol_25, const constant LeftOver* const tint_symbol_26, texture2d<float, access::sample> tint_symbol_27, sampler tint_symbol_28, const constant Light0* const tint_symbol_29, thread float4* const tint_symbol_30) {
*(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)};
main_1(tint_symbol_19, tint_symbol_24, tint_symbol_25, tint_symbol_26, tint_symbol_20, tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_27, tint_symbol_28, tint_symbol_29, tint_symbol_30);
main_out const tint_symbol_4 = {.glFragColor_1=*(tint_symbol_30)};
return tint_symbol_4;
}
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));
fragment tint_symbol_3 tint_symbol(texture2d<float, access::sample> tint_symbol_36 [[texture(0)]], sampler tint_symbol_37 [[sampler(0)]], const constant LeftOver* tint_symbol_38 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_39 [[texture(1)]], sampler tint_symbol_40 [[sampler(1)]], const constant Light0* tint_symbol_41 [[buffer(1)]], bool gl_FrontFacing_param [[front_facing]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
thread float2 tint_symbol_31 = 0.0f;
thread float4 tint_symbol_32 = 0.0f;
thread bool tint_symbol_33 = false;
thread float2 tint_symbol_34 = 0.0f;
thread float4 tint_symbol_35 = 0.0f;
thread float4 tint_symbol_42 = 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_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, tint_symbol_41, &(tint_symbol_42));
tint_symbol_3 wrapper_result = {};
wrapper_result.glFragColor_1 = inner_result.glFragColor_1;
return wrapper_result;

View File

@ -5,127 +5,128 @@ struct S {
float3 v;
};
void f(thread 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;
void f() {
thread S 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;
}

View File

@ -5,127 +5,128 @@ struct S {
int3 v;
};
void f(thread 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;
void f() {
thread S 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;
}

View File

@ -5,127 +5,128 @@ struct S {
uint3 v;
};
void f(thread 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;
void f() {
thread S 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;
}

View File

@ -5,10 +5,11 @@ struct S {
float3 v;
};
void f(thread 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;
void f() {
thread S 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;
}

View File

@ -5,10 +5,11 @@ struct S {
int3 v;
};
void f(thread 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;
void f() {
thread S tint_symbol = {};
tint_symbol.v = int3(1, 2, 3);
tint_symbol.v[0] = 1;
tint_symbol.v[1] = 2;
tint_symbol.v[2] = 3;
}

View File

@ -5,10 +5,11 @@ struct S {
uint3 v;
};
void f(thread 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;
void f() {
thread S tint_symbol = {};
tint_symbol.v = uint3(1u, 2u, 3u);
tint_symbol.v[0] = 1u;
tint_symbol.v[1] = 2u;
tint_symbol.v[2] = 3u;
}

View File

@ -1,8 +1,10 @@
#include <metal_stdlib>
using namespace metal;
void f(thread int* const tint_symbol, thread int* const tint_symbol_1) {
int b = *(tint_symbol);
int b__ = *(tint_symbol_1);
void f() {
thread int tint_symbol = 1;
thread int tint_symbol_1 = 2;
int b = tint_symbol;
int b__ = tint_symbol_1;
}

View File

@ -1,8 +1,10 @@
#include <metal_stdlib>
using namespace metal;
void f(thread int* const tint_symbol, thread int* const tint_symbol_1) {
int b = *(tint_symbol);
int _b = *(tint_symbol_1);
void f() {
thread int tint_symbol = 1;
thread int tint_symbol_1 = 2;
int b = tint_symbol;
int _b = tint_symbol_1;
}

View File

@ -1,8 +1,10 @@
#include <metal_stdlib>
using namespace metal;
void f(thread int* const tint_symbol, thread int* const tint_symbol_1) {
int B = *(tint_symbol);
int _B = *(tint_symbol_1);
void f() {
thread int tint_symbol = 1;
thread int tint_symbol_1 = 2;
int B = tint_symbol;
int _B = tint_symbol_1;
}

View File

@ -1,15 +1,15 @@
#include <metal_stdlib>
using namespace metal;
void main_1(thread int* const tint_symbol_1) {
int const x_9 = *(tint_symbol_1);
void main_1() {
thread int tint_symbol_1 = 0;
int const x_9 = tint_symbol_1;
int const x_11 = as_type<int>((as_type<uint>(x_9) + as_type<uint>(1)));
return;
}
kernel void tint_symbol() {
thread int tint_symbol_2 = 0;
main_1(&(tint_symbol_2));
main_1();
return;
}

View File

@ -5,16 +5,16 @@ struct S {
int i;
};
void main_1(thread S* const tint_symbol_1) {
void main_1() {
thread S tint_symbol_1 = {};
int i = 0;
int const x_15 = (*(tint_symbol_1)).i;
int const x_15 = tint_symbol_1.i;
i = x_15;
return;
}
kernel void tint_symbol() {
thread S tint_symbol_2 = {};
main_1(&(tint_symbol_2));
main_1();
return;
}

View File

@ -1,15 +1,15 @@
#include <metal_stdlib>
using namespace metal;
void main_1(thread int* const tint_symbol_1) {
*(tint_symbol_1) = 123;
*(tint_symbol_1) = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(100) + as_type<uint>(20)))) + as_type<uint>(3)));
void main_1() {
thread int tint_symbol_1 = 0;
tint_symbol_1 = 123;
tint_symbol_1 = as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(100) + as_type<uint>(20)))) + as_type<uint>(3)));
return;
}
kernel void tint_symbol() {
thread int tint_symbol_2 = 0;
main_1(&(tint_symbol_2));
main_1();
return;
}

View File

@ -5,14 +5,14 @@ struct S {
int i;
};
void main_1(thread S* const tint_symbol_1) {
(*(tint_symbol_1)).i = 5;
void main_1() {
thread S tint_symbol_1 = {};
tint_symbol_1.i = 5;
return;
}
kernel void tint_symbol() {
thread S tint_symbol_2 = {};
main_1(&(tint_symbol_2));
main_1();
return;
}

View File

@ -31,18 +31,18 @@ struct OuterS {
tint_array<S1, 8> a1;
};
uint getNextIndex(thread uint* const tint_symbol_3) {
*(tint_symbol_3) = (*(tint_symbol_3) + 1u);
return *(tint_symbol_3);
uint getNextIndex() {
thread uint tint_symbol_3 = 0u;
tint_symbol_3 = (tint_symbol_3 + 1u);
return tint_symbol_3;
}
kernel void tint_symbol(const constant Uniforms* tint_symbol_5 [[buffer(0)]]) {
thread uint tint_symbol_4 = 0u;
kernel void tint_symbol(const constant Uniforms* tint_symbol_4 [[buffer(0)]]) {
InnerS v = {};
OuterS s = {};
InnerS const tint_symbol_1 = v;
uint const tint_symbol_2 = getNextIndex(&(tint_symbol_4));
s.a1[tint_symbol_2].a2[(*(tint_symbol_5)).j] = tint_symbol_1;
uint const tint_symbol_2 = getNextIndex();
s.a1[tint_symbol_2].a2[(*(tint_symbol_4)).j] = tint_symbol_1;
return;
}

View File

@ -1,14 +1,16 @@
#include <metal_stdlib>
using namespace metal;
void foo(int maybe_zero, thread int* const tint_symbol, thread float* const tint_symbol_1) {
*(tint_symbol) = (*(tint_symbol) / 0);
*(tint_symbol) = (*(tint_symbol) % 0);
*(tint_symbol) = (*(tint_symbol) / maybe_zero);
*(tint_symbol) = (*(tint_symbol) % maybe_zero);
*(tint_symbol_1) = (*(tint_symbol_1) / 0.0f);
*(tint_symbol_1) = fmod(*(tint_symbol_1), 0.0f);
*(tint_symbol_1) = (*(tint_symbol_1) / float(maybe_zero));
*(tint_symbol_1) = fmod(*(tint_symbol_1), float(maybe_zero));
void foo(int maybe_zero) {
thread int tint_symbol = 0;
thread float tint_symbol_1 = 0.0f;
tint_symbol = (tint_symbol / 0);
tint_symbol = (tint_symbol % 0);
tint_symbol = (tint_symbol / maybe_zero);
tint_symbol = (tint_symbol % maybe_zero);
tint_symbol_1 = (tint_symbol_1 / 0.0f);
tint_symbol_1 = fmod(tint_symbol_1, 0.0f);
tint_symbol_1 = (tint_symbol_1 / float(maybe_zero));
tint_symbol_1 = fmod(tint_symbol_1, float(maybe_zero));
}

View File

@ -1,9 +1,12 @@
#include <metal_stdlib>
using namespace metal;
void foo(thread int* const tint_symbol, thread float4* const tint_symbol_1, thread float2x2* const tint_symbol_2) {
*(tint_symbol) = (*(tint_symbol) / 2);
*(tint_symbol_1) = (*(tint_symbol_1) * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
*(tint_symbol_2) = (*(tint_symbol_2) * 2.0f);
void foo() {
thread int tint_symbol = 0;
thread float4 tint_symbol_1 = 0.0f;
thread float2x2 tint_symbol_2 = float2x2(0.0f);
tint_symbol = (tint_symbol / 2);
tint_symbol_1 = (tint_symbol_1 * float4x4(float4(0.0f), float4(0.0f), float4(0.0f), float4(0.0f)));
tint_symbol_2 = (tint_symbol_2 * 2.0f);
}

View File

@ -1,7 +1,8 @@
#include <metal_stdlib>
using namespace metal;
void tint_symbol(thread int* const tint_symbol_1) {
*(tint_symbol_1) = as_type<int>((as_type<uint>(*(tint_symbol_1)) - as_type<uint>(1)));
void tint_symbol() {
thread int tint_symbol_1 = 0;
tint_symbol_1 = as_type<int>((as_type<uint>(tint_symbol_1) - as_type<uint>(1)));
}

View File

@ -1,7 +1,8 @@
#include <metal_stdlib>
using namespace metal;
void tint_symbol(thread int* const tint_symbol_1) {
*(tint_symbol_1) = as_type<int>((as_type<uint>(*(tint_symbol_1)) + as_type<uint>(1)));
void tint_symbol() {
thread int tint_symbol_1 = 0;
tint_symbol_1 = as_type<int>((as_type<uint>(tint_symbol_1) + as_type<uint>(1)));
}