PromoteSideEffectsToDecl: add to 4 backends and regen tests

Added to hlsl, msl, glsl, and spirv backends.

Bug: tint:1300
Change-Id: I06062bd8e4b32acbc4a8670b060a7a22bc1ae034
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/80600
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Commit-Queue: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
Antonio Maiorano 2022-03-15 15:35:13 +00:00 committed by Tint LUCI CQ
parent c25ddf4b1c
commit 93baaae60b
80 changed files with 915 additions and 742 deletions

View File

@ -29,6 +29,7 @@
#include "src/tint/transform/manager.h" #include "src/tint/transform/manager.h"
#include "src/tint/transform/pad_array_elements.h" #include "src/tint/transform/pad_array_elements.h"
#include "src/tint/transform/promote_initializers_to_const_var.h" #include "src/tint/transform/promote_initializers_to_const_var.h"
#include "src/tint/transform/promote_side_effects_to_decl.h"
#include "src/tint/transform/remove_phonies.h" #include "src/tint/transform/remove_phonies.h"
#include "src/tint/transform/renamer.h" #include "src/tint/transform/renamer.h"
#include "src/tint/transform/simplify_pointers.h" #include "src/tint/transform/simplify_pointers.h"
@ -83,6 +84,7 @@ Output Glsl::Run(const Program* in, const DataMap& inputs) const {
manager.Add<ZeroInitWorkgroupMemory>(); manager.Add<ZeroInitWorkgroupMemory>();
} }
manager.Add<CanonicalizeEntryPointIO>(); manager.Add<CanonicalizeEntryPointIO>();
manager.Add<PromoteSideEffectsToDecl>();
manager.Add<SimplifyPointers>(); manager.Add<SimplifyPointers>();
manager.Add<RemovePhonies>(); manager.Add<RemovePhonies>();

View File

@ -59,6 +59,7 @@
#include "src/tint/transform/num_workgroups_from_uniform.h" #include "src/tint/transform/num_workgroups_from_uniform.h"
#include "src/tint/transform/pad_array_elements.h" #include "src/tint/transform/pad_array_elements.h"
#include "src/tint/transform/promote_initializers_to_const_var.h" #include "src/tint/transform/promote_initializers_to_const_var.h"
#include "src/tint/transform/promote_side_effects_to_decl.h"
#include "src/tint/transform/remove_phonies.h" #include "src/tint/transform/remove_phonies.h"
#include "src/tint/transform/simplify_pointers.h" #include "src/tint/transform/simplify_pointers.h"
#include "src/tint/transform/unshadow.h" #include "src/tint/transform/unshadow.h"
@ -186,6 +187,7 @@ SanitizedResult Sanitize(
// assumes that num_workgroups builtins only appear as struct members and are // assumes that num_workgroups builtins only appear as struct members and are
// only accessed directly via member accessors. // only accessed directly via member accessors.
manager.Add<transform::NumWorkgroupsFromUniform>(); manager.Add<transform::NumWorkgroupsFromUniform>();
manager.Add<transform::PromoteSideEffectsToDecl>();
manager.Add<transform::SimplifyPointers>(); manager.Add<transform::SimplifyPointers>();
manager.Add<transform::RemovePhonies>(); manager.Add<transform::RemovePhonies>();
// ArrayLengthFromUniform must come after InlinePointerLets and Simplify, as // ArrayLengthFromUniform must come after InlinePointerLets and Simplify, as

View File

@ -65,6 +65,7 @@
#include "src/tint/transform/module_scope_var_to_entry_point_param.h" #include "src/tint/transform/module_scope_var_to_entry_point_param.h"
#include "src/tint/transform/pad_array_elements.h" #include "src/tint/transform/pad_array_elements.h"
#include "src/tint/transform/promote_initializers_to_const_var.h" #include "src/tint/transform/promote_initializers_to_const_var.h"
#include "src/tint/transform/promote_side_effects_to_decl.h"
#include "src/tint/transform/remove_phonies.h" #include "src/tint/transform/remove_phonies.h"
#include "src/tint/transform/simplify_pointers.h" #include "src/tint/transform/simplify_pointers.h"
#include "src/tint/transform/unshadow.h" #include "src/tint/transform/unshadow.h"
@ -173,6 +174,7 @@ SanitizedResult Sanitize(
manager.Add<transform::ZeroInitWorkgroupMemory>(); manager.Add<transform::ZeroInitWorkgroupMemory>();
} }
manager.Add<transform::CanonicalizeEntryPointIO>(); manager.Add<transform::CanonicalizeEntryPointIO>();
manager.Add<transform::PromoteSideEffectsToDecl>();
manager.Add<transform::PromoteInitializersToConstVar>(); manager.Add<transform::PromoteInitializersToConstVar>();
manager.Add<transform::VectorizeScalarMatrixConstructors>(); manager.Add<transform::VectorizeScalarMatrixConstructors>();

View File

@ -48,6 +48,7 @@
#include "src/tint/transform/fold_constants.h" #include "src/tint/transform/fold_constants.h"
#include "src/tint/transform/for_loop_to_loop.h" #include "src/tint/transform/for_loop_to_loop.h"
#include "src/tint/transform/manager.h" #include "src/tint/transform/manager.h"
#include "src/tint/transform/promote_side_effects_to_decl.h"
#include "src/tint/transform/remove_unreachable_statements.h" #include "src/tint/transform/remove_unreachable_statements.h"
#include "src/tint/transform/simplify_pointers.h" #include "src/tint/transform/simplify_pointers.h"
#include "src/tint/transform/unshadow.h" #include "src/tint/transform/unshadow.h"
@ -276,6 +277,7 @@ SanitizedResult Sanitize(const Program* in,
manager.Add<transform::ZeroInitWorkgroupMemory>(); manager.Add<transform::ZeroInitWorkgroupMemory>();
} }
manager.Add<transform::RemoveUnreachableStatements>(); manager.Add<transform::RemoveUnreachableStatements>();
manager.Add<transform::PromoteSideEffectsToDecl>();
manager.Add<transform::SimplifyPointers>(); // Required for arrayLength() manager.Add<transform::SimplifyPointers>(); // Required for arrayLength()
manager.Add<transform::FoldConstants>(); manager.Add<transform::FoldConstants>();
manager.Add<transform::VectorizeScalarMatrixConstructors>(); manager.Add<transform::VectorizeScalarMatrixConstructors>();

View File

@ -18,20 +18,20 @@ layout(binding = 1, std430) buffer S_2 {
ivec4 arr[4]; ivec4 arr[4];
} src_storage; } src_storage;
ivec4[4] ret_arr() { ivec4[4] ret_arr() {
ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 tint_symbol_1[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
return tint_symbol; return tint_symbol_1;
} }
S ret_struct_arr() { S ret_struct_arr() {
S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0))); S tint_symbol_2 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
return tint_symbol_1; return tint_symbol_2;
} }
void foo(ivec4 src_param[4]) { void foo(ivec4 src_param[4]) {
ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
ivec4 dst[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 dst[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3)); ivec4 tint_symbol_3[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
dst = tint_symbol_2; dst = tint_symbol_3;
dst = src_param; dst = src_param;
dst = ret_arr(); dst = ret_arr();
ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@ -39,7 +39,8 @@ void foo(ivec4 src_param[4]) {
dst = src_function; dst = src_function;
dst = src_private; dst = src_private;
dst = src_workgroup; dst = src_workgroup;
dst = ret_struct_arr().arr; S tint_symbol = ret_struct_arr();
dst = tint_symbol.arr;
dst = src_uniform.arr; dst = src_uniform.arr;
dst = src_storage.arr; dst = src_storage.arr;
int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));

View File

@ -16,17 +16,17 @@ RWByteAddressBuffer src_storage : register(u1, space0);
typedef int4 ret_arr_ret[4]; typedef int4 ret_arr_ret[4];
ret_arr_ret ret_arr() { ret_arr_ret ret_arr() {
const int4 tint_symbol_5[4] = (int4[4])0; const int4 tint_symbol_6[4] = (int4[4])0;
return tint_symbol_5;
}
S ret_struct_arr() {
const S tint_symbol_6 = (S)0;
return tint_symbol_6; return tint_symbol_6;
} }
typedef int4 tint_symbol_1_ret[4]; S ret_struct_arr() {
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) { const S tint_symbol_7 = (S)0;
return tint_symbol_7;
}
typedef int4 tint_symbol_2_ret[4];
tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
int4 arr_1[4] = (int4[4])0; int4 arr_1[4] = (int4[4])0;
{ {
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) { [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@ -37,8 +37,8 @@ tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
return arr_1; return arr_1;
} }
typedef int4 tint_symbol_3_ret[4]; typedef int4 tint_symbol_4_ret[4];
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) { tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
int4 arr_2[4] = (int4[4])0; int4 arr_2[4] = (int4[4])0;
{ {
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) { [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@ -51,8 +51,8 @@ tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
void foo(int4 src_param[4]) { void foo(int4 src_param[4]) {
int4 src_function[4] = (int4[4])0; int4 src_function[4] = (int4[4])0;
int4 tint_symbol[4] = (int4[4])0; int4 tint_symbol[4] = (int4[4])0;
const int4 tint_symbol_7[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)}; const int4 tint_symbol_8[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
tint_symbol = tint_symbol_7; tint_symbol = tint_symbol_8;
tint_symbol = src_param; tint_symbol = src_param;
tint_symbol = ret_arr(); tint_symbol = ret_arr();
const int4 src_let[4] = (int4[4])0; const int4 src_let[4] = (int4[4])0;
@ -60,9 +60,10 @@ void foo(int4 src_param[4]) {
tint_symbol = src_function; tint_symbol = src_function;
tint_symbol = src_private; tint_symbol = src_private;
tint_symbol = src_workgroup; tint_symbol = src_workgroup;
tint_symbol = ret_struct_arr().arr; const S tint_symbol_1 = ret_struct_arr();
tint_symbol = tint_symbol_1(src_uniform, 0u); tint_symbol = tint_symbol_1.arr;
tint_symbol = tint_symbol_3(src_storage, 0u); tint_symbol = tint_symbol_2(src_uniform, 0u);
tint_symbol = tint_symbol_4(src_storage, 0u);
int dst_nested[4][3][2] = (int[4][3][2])0; int dst_nested[4][3][2] = (int[4][3][2])0;
int src_nested[4][3][2] = (int[4][3][2])0; int src_nested[4][3][2] = (int[4][3][2])0;
dst_nested = src_nested; dst_nested = src_nested;

View File

@ -10,13 +10,13 @@ struct S {
}; };
tint_array_wrapper ret_arr() { tint_array_wrapper ret_arr() {
tint_array_wrapper const tint_symbol = {.arr={}}; tint_array_wrapper const tint_symbol_1 = {.arr={}};
return tint_symbol; return tint_symbol_1;
} }
S ret_struct_arr() { S ret_struct_arr() {
S const tint_symbol_1 = {}; S const tint_symbol_2 = {};
return tint_symbol_1; return tint_symbol_2;
} }
struct tint_array_wrapper_3 { struct tint_array_wrapper_3 {
@ -31,21 +31,22 @@ struct tint_array_wrapper_1 {
tint_array_wrapper_2 arr[4]; tint_array_wrapper_2 arr[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) { void foo(tint_array_wrapper src_param, 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) {
tint_array_wrapper src_function = {}; tint_array_wrapper src_function = {};
tint_array_wrapper dst = {}; tint_array_wrapper dst = {};
tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}}; tint_array_wrapper const tint_symbol_3 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
dst = tint_symbol_2; dst = tint_symbol_3;
dst = src_param; dst = src_param;
dst = ret_arr(); dst = ret_arr();
tint_array_wrapper const src_let = {.arr={}}; tint_array_wrapper const src_let = {.arr={}};
dst = src_let; dst = src_let;
dst = src_function; dst = src_function;
dst = *(tint_symbol_3);
dst = *(tint_symbol_4); dst = *(tint_symbol_4);
dst = ret_struct_arr().arr; dst = *(tint_symbol_5);
dst = (*(tint_symbol_5)).arr; S const tint_symbol = ret_struct_arr();
dst = tint_symbol.arr;
dst = (*(tint_symbol_6)).arr; dst = (*(tint_symbol_6)).arr;
dst = (*(tint_symbol_7)).arr;
tint_array_wrapper_1 dst_nested = {}; tint_array_wrapper_1 dst_nested = {};
tint_array_wrapper_1 src_nested = {}; tint_array_wrapper_1 src_nested = {};
dst_nested = src_nested; dst_nested = src_nested;

View File

@ -20,19 +20,19 @@ layout(binding = 1, std430) buffer S_2 {
ivec4 dst[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 dst[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); int dst_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));
ivec4[4] ret_arr() { ivec4[4] ret_arr() {
ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 tint_symbol_1[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
return tint_symbol; return tint_symbol_1;
} }
S ret_struct_arr() { S ret_struct_arr() {
S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0))); S tint_symbol_2 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
return tint_symbol_1; return tint_symbol_2;
} }
void foo(ivec4 src_param[4]) { void foo(ivec4 src_param[4]) {
ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3)); ivec4 tint_symbol_3[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
dst = tint_symbol_2; dst = tint_symbol_3;
dst = src_param; dst = src_param;
dst = ret_arr(); dst = ret_arr();
ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@ -40,7 +40,8 @@ void foo(ivec4 src_param[4]) {
dst = src_function; dst = src_function;
dst = src_private; dst = src_private;
dst = src_workgroup; dst = src_workgroup;
dst = ret_struct_arr().arr; S tint_symbol = ret_struct_arr();
dst = tint_symbol.arr;
dst = src_uniform.arr; dst = src_uniform.arr;
dst = src_storage.arr; dst = src_storage.arr;
int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));

View File

@ -18,17 +18,17 @@ static int dst_nested[4][3][2] = (int[4][3][2])0;
typedef int4 ret_arr_ret[4]; typedef int4 ret_arr_ret[4];
ret_arr_ret ret_arr() { ret_arr_ret ret_arr() {
const int4 tint_symbol_5[4] = (int4[4])0; const int4 tint_symbol_6[4] = (int4[4])0;
return tint_symbol_5;
}
S ret_struct_arr() {
const S tint_symbol_6 = (S)0;
return tint_symbol_6; return tint_symbol_6;
} }
typedef int4 tint_symbol_1_ret[4]; S ret_struct_arr() {
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) { const S tint_symbol_7 = (S)0;
return tint_symbol_7;
}
typedef int4 tint_symbol_2_ret[4];
tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
int4 arr_1[4] = (int4[4])0; int4 arr_1[4] = (int4[4])0;
{ {
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) { [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@ -39,8 +39,8 @@ tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
return arr_1; return arr_1;
} }
typedef int4 tint_symbol_3_ret[4]; typedef int4 tint_symbol_4_ret[4];
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) { tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
int4 arr_2[4] = (int4[4])0; int4 arr_2[4] = (int4[4])0;
{ {
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) { [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@ -52,8 +52,8 @@ tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
void foo(int4 src_param[4]) { void foo(int4 src_param[4]) {
int4 src_function[4] = (int4[4])0; int4 src_function[4] = (int4[4])0;
const int4 tint_symbol_7[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)}; const int4 tint_symbol_8[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
tint_symbol = tint_symbol_7; tint_symbol = tint_symbol_8;
tint_symbol = src_param; tint_symbol = src_param;
tint_symbol = ret_arr(); tint_symbol = ret_arr();
const int4 src_let[4] = (int4[4])0; const int4 src_let[4] = (int4[4])0;
@ -61,9 +61,10 @@ void foo(int4 src_param[4]) {
tint_symbol = src_function; tint_symbol = src_function;
tint_symbol = src_private; tint_symbol = src_private;
tint_symbol = src_workgroup; tint_symbol = src_workgroup;
tint_symbol = ret_struct_arr().arr; const S tint_symbol_1 = ret_struct_arr();
tint_symbol = tint_symbol_1(src_uniform, 0u); tint_symbol = tint_symbol_1.arr;
tint_symbol = tint_symbol_3(src_storage, 0u); tint_symbol = tint_symbol_2(src_uniform, 0u);
tint_symbol = tint_symbol_4(src_storage, 0u);
int src_nested[4][3][2] = (int[4][3][2])0; int src_nested[4][3][2] = (int[4][3][2])0;
dst_nested = src_nested; dst_nested = src_nested;
} }

View File

@ -22,30 +22,31 @@ struct tint_array_wrapper_1 {
}; };
tint_array_wrapper ret_arr() { tint_array_wrapper ret_arr() {
tint_array_wrapper const tint_symbol = {.arr={}}; tint_array_wrapper const tint_symbol_1 = {.arr={}};
return tint_symbol;
}
S ret_struct_arr() {
S const tint_symbol_1 = {};
return tint_symbol_1; return tint_symbol_1;
} }
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) { S ret_struct_arr() {
tint_array_wrapper src_function = {}; S const tint_symbol_2 = {};
tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}}; return tint_symbol_2;
*(tint_symbol_3) = tint_symbol_2; }
*(tint_symbol_3) = src_param;
*(tint_symbol_3) = ret_arr(); void foo(tint_array_wrapper src_param, thread tint_array_wrapper* const tint_symbol_4, thread tint_array_wrapper* const tint_symbol_5, threadgroup tint_array_wrapper* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8, thread tint_array_wrapper_1* const tint_symbol_9) {
tint_array_wrapper const src_let = {.arr={}}; tint_array_wrapper src_function = {};
*(tint_symbol_3) = src_let; tint_array_wrapper const tint_symbol_3 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
*(tint_symbol_3) = src_function; *(tint_symbol_4) = tint_symbol_3;
*(tint_symbol_3) = *(tint_symbol_4); *(tint_symbol_4) = src_param;
*(tint_symbol_3) = *(tint_symbol_5); *(tint_symbol_4) = ret_arr();
*(tint_symbol_3) = ret_struct_arr().arr; tint_array_wrapper const src_let = {.arr={}};
*(tint_symbol_3) = (*(tint_symbol_6)).arr; *(tint_symbol_4) = src_let;
*(tint_symbol_3) = (*(tint_symbol_7)).arr; *(tint_symbol_4) = src_function;
tint_array_wrapper_1 src_nested = {}; *(tint_symbol_4) = *(tint_symbol_5);
*(tint_symbol_8) = src_nested; *(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_array_wrapper_1 src_nested = {};
*(tint_symbol_9) = src_nested;
} }

View File

@ -28,27 +28,29 @@ layout(binding = 3, std430) buffer S_nested_1 {
int arr[4][3][2]; int arr[4][3][2];
} dst_nested; } dst_nested;
ivec4[4] ret_arr() { ivec4[4] ret_arr() {
ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 tint_symbol_2[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
return tint_symbol; return tint_symbol_2;
} }
S ret_struct_arr() { S ret_struct_arr() {
S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0))); S tint_symbol_3 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
return tint_symbol_1; return tint_symbol_3;
} }
void foo(ivec4 src_param[4]) { void foo(ivec4 src_param[4]) {
ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3)); ivec4 tint_symbol_4[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
dst.arr = tint_symbol_2; dst.arr = tint_symbol_4;
dst.arr = src_param; dst.arr = src_param;
dst.arr = ret_arr(); ivec4 tint_symbol[4] = ret_arr();
dst.arr = tint_symbol;
ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
dst.arr = src_let; dst.arr = src_let;
dst.arr = src_function; dst.arr = src_function;
dst.arr = src_private; dst.arr = src_private;
dst.arr = src_workgroup; dst.arr = src_workgroup;
dst.arr = ret_struct_arr().arr; S tint_symbol_1 = ret_struct_arr();
dst.arr = tint_symbol_1.arr;
dst.arr = src_uniform.arr; dst.arr = src_uniform.arr;
dst.arr = src_storage.arr; dst.arr = src_storage.arr;
int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));

View File

@ -18,16 +18,16 @@ RWByteAddressBuffer dst_nested : register(u3, space0);
typedef int4 ret_arr_ret[4]; typedef int4 ret_arr_ret[4];
ret_arr_ret ret_arr() { ret_arr_ret ret_arr() {
const int4 tint_symbol_11[4] = (int4[4])0; const int4 tint_symbol_13[4] = (int4[4])0;
return tint_symbol_11; return tint_symbol_13;
} }
S ret_struct_arr() { S ret_struct_arr() {
const S tint_symbol_12 = (S)0; const S tint_symbol_14 = (S)0;
return tint_symbol_12; return tint_symbol_14;
} }
void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, int4 value[4]) { void tint_symbol_3(RWByteAddressBuffer buffer, uint offset, int4 value[4]) {
int4 array[4] = value; int4 array[4] = value;
{ {
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) { [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@ -36,8 +36,8 @@ void tint_symbol_1(RWByteAddressBuffer buffer, uint offset, int4 value[4]) {
} }
} }
typedef int4 tint_symbol_3_ret[4]; typedef int4 tint_symbol_5_ret[4];
tint_symbol_3_ret tint_symbol_3(uint4 buffer[4], uint offset) { tint_symbol_5_ret tint_symbol_5(uint4 buffer[4], uint offset) {
int4 arr_1[4] = (int4[4])0; int4 arr_1[4] = (int4[4])0;
{ {
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) { [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@ -48,8 +48,8 @@ tint_symbol_3_ret tint_symbol_3(uint4 buffer[4], uint offset) {
return arr_1; return arr_1;
} }
typedef int4 tint_symbol_5_ret[4]; typedef int4 tint_symbol_7_ret[4];
tint_symbol_5_ret tint_symbol_5(RWByteAddressBuffer buffer, uint offset) { tint_symbol_7_ret tint_symbol_7(RWByteAddressBuffer buffer, uint offset) {
int4 arr_2[4] = (int4[4])0; int4 arr_2[4] = (int4[4])0;
{ {
[loop] for(uint i_2 = 0u; (i_2 < 4u); i_2 = (i_2 + 1u)) { [loop] for(uint i_2 = 0u; (i_2 < 4u); i_2 = (i_2 + 1u)) {
@ -59,7 +59,7 @@ tint_symbol_5_ret tint_symbol_5(RWByteAddressBuffer buffer, uint offset) {
return arr_2; return arr_2;
} }
void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[2]) { void tint_symbol_11(RWByteAddressBuffer buffer, uint offset, int value[2]) {
int array_3[2] = value; int array_3[2] = value;
{ {
[loop] for(uint i_3 = 0u; (i_3 < 2u); i_3 = (i_3 + 1u)) { [loop] for(uint i_3 = 0u; (i_3 < 2u); i_3 = (i_3 + 1u)) {
@ -68,38 +68,40 @@ void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[2]) {
} }
} }
void tint_symbol_8(RWByteAddressBuffer buffer, uint offset, int value[3][2]) { void tint_symbol_10(RWByteAddressBuffer buffer, uint offset, int value[3][2]) {
int array_2[3][2] = value; int array_2[3][2] = value;
{ {
[loop] for(uint i_4 = 0u; (i_4 < 3u); i_4 = (i_4 + 1u)) { [loop] for(uint i_4 = 0u; (i_4 < 3u); i_4 = (i_4 + 1u)) {
tint_symbol_9(buffer, (offset + (i_4 * 8u)), array_2[i_4]); tint_symbol_11(buffer, (offset + (i_4 * 8u)), array_2[i_4]);
} }
} }
} }
void tint_symbol_7(RWByteAddressBuffer buffer, uint offset, int value[4][3][2]) { void tint_symbol_9(RWByteAddressBuffer buffer, uint offset, int value[4][3][2]) {
int array_1[4][3][2] = value; int array_1[4][3][2] = value;
{ {
[loop] for(uint i_5 = 0u; (i_5 < 4u); i_5 = (i_5 + 1u)) { [loop] for(uint i_5 = 0u; (i_5 < 4u); i_5 = (i_5 + 1u)) {
tint_symbol_8(buffer, (offset + (i_5 * 24u)), array_1[i_5]); tint_symbol_10(buffer, (offset + (i_5 * 24u)), array_1[i_5]);
} }
} }
} }
void foo(int4 src_param[4]) { void foo(int4 src_param[4]) {
int4 src_function[4] = (int4[4])0; int4 src_function[4] = (int4[4])0;
const int4 tint_symbol_13[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)}; const int4 tint_symbol_15[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
tint_symbol_1(tint_symbol, 0u, tint_symbol_13); tint_symbol_3(tint_symbol, 0u, tint_symbol_15);
tint_symbol_1(tint_symbol, 0u, src_param); tint_symbol_3(tint_symbol, 0u, src_param);
tint_symbol_1(tint_symbol, 0u, ret_arr()); const int4 tint_symbol_1[4] = ret_arr();
tint_symbol_3(tint_symbol, 0u, tint_symbol_1);
const int4 src_let[4] = (int4[4])0; const int4 src_let[4] = (int4[4])0;
tint_symbol_1(tint_symbol, 0u, src_let); tint_symbol_3(tint_symbol, 0u, src_let);
tint_symbol_1(tint_symbol, 0u, src_function); tint_symbol_3(tint_symbol, 0u, src_function);
tint_symbol_1(tint_symbol, 0u, src_private); tint_symbol_3(tint_symbol, 0u, src_private);
tint_symbol_1(tint_symbol, 0u, src_workgroup); tint_symbol_3(tint_symbol, 0u, src_workgroup);
tint_symbol_1(tint_symbol, 0u, ret_struct_arr().arr); const S tint_symbol_2 = ret_struct_arr();
tint_symbol_1(tint_symbol, 0u, tint_symbol_3(src_uniform, 0u)); tint_symbol_3(tint_symbol, 0u, tint_symbol_2.arr);
tint_symbol_1(tint_symbol, 0u, tint_symbol_5(src_storage, 0u)); tint_symbol_3(tint_symbol, 0u, tint_symbol_5(src_uniform, 0u));
tint_symbol_3(tint_symbol, 0u, tint_symbol_7(src_storage, 0u));
int src_nested[4][3][2] = (int[4][3][2])0; int src_nested[4][3][2] = (int[4][3][2])0;
tint_symbol_7(dst_nested, 0u, src_nested); tint_symbol_9(dst_nested, 0u, src_nested);
} }

View File

@ -26,30 +26,32 @@ struct S_nested {
}; };
tint_array_wrapper ret_arr() { tint_array_wrapper ret_arr() {
tint_array_wrapper const tint_symbol = {.arr={}}; tint_array_wrapper const tint_symbol_2 = {.arr={}};
return tint_symbol; return tint_symbol_2;
} }
S ret_struct_arr() { S ret_struct_arr() {
S const tint_symbol_1 = {}; S const tint_symbol_3 = {};
return tint_symbol_1; return tint_symbol_3;
} }
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) { void foo(tint_array_wrapper src_param, device S* const tint_symbol_5, thread tint_array_wrapper* const tint_symbol_6, threadgroup tint_array_wrapper* const tint_symbol_7, const constant S* const tint_symbol_8, device S* const tint_symbol_9, device S_nested* const tint_symbol_10) {
tint_array_wrapper src_function = {}; tint_array_wrapper src_function = {};
tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}}; tint_array_wrapper const tint_symbol_4 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
(*(tint_symbol_3)).arr = tint_symbol_2; (*(tint_symbol_5)).arr = tint_symbol_4;
(*(tint_symbol_3)).arr = src_param; (*(tint_symbol_5)).arr = src_param;
(*(tint_symbol_3)).arr = ret_arr(); tint_array_wrapper const tint_symbol = ret_arr();
(*(tint_symbol_5)).arr = tint_symbol;
tint_array_wrapper const src_let = {.arr={}}; tint_array_wrapper const src_let = {.arr={}};
(*(tint_symbol_3)).arr = src_let; (*(tint_symbol_5)).arr = src_let;
(*(tint_symbol_3)).arr = src_function; (*(tint_symbol_5)).arr = src_function;
(*(tint_symbol_3)).arr = *(tint_symbol_4); (*(tint_symbol_5)).arr = *(tint_symbol_6);
(*(tint_symbol_3)).arr = *(tint_symbol_5); (*(tint_symbol_5)).arr = *(tint_symbol_7);
(*(tint_symbol_3)).arr = ret_struct_arr().arr; S const tint_symbol_1 = ret_struct_arr();
(*(tint_symbol_3)).arr = (*(tint_symbol_6)).arr; (*(tint_symbol_5)).arr = tint_symbol_1.arr;
(*(tint_symbol_3)).arr = (*(tint_symbol_7)).arr; (*(tint_symbol_5)).arr = (*(tint_symbol_8)).arr;
(*(tint_symbol_5)).arr = (*(tint_symbol_9)).arr;
tint_array_wrapper_1 src_nested = {}; tint_array_wrapper_1 src_nested = {};
(*(tint_symbol_8)).arr = src_nested; (*(tint_symbol_10)).arr = src_nested;
} }

View File

@ -106,9 +106,9 @@
OpStore %44 %51 OpStore %44 %51
%52 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %52 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
OpStore %52 %src_param OpStore %52 %src_param
%53 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %53 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr
%54 = OpFunctionCall %_arr_v4int_uint_4 %ret_arr %54 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
OpStore %53 %54 OpStore %54 %53
%55 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %55 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
OpStore %55 %8 OpStore %55 %8
%56 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %56 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
@ -120,10 +120,10 @@
%60 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %60 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
%61 = OpLoad %_arr_v4int_uint_4 %src_workgroup %61 = OpLoad %_arr_v4int_uint_4 %src_workgroup
OpStore %60 %61 OpStore %60 %61
%62 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %62 = OpFunctionCall %S %ret_struct_arr
%63 = OpFunctionCall %S %ret_struct_arr %63 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
%64 = OpCompositeExtract %_arr_v4int_uint_4 %63 0 %64 = OpCompositeExtract %_arr_v4int_uint_4 %62 0
OpStore %62 %64 OpStore %63 %64
%65 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0 %65 = OpAccessChain %_ptr_StorageBuffer__arr_v4int_uint_4 %dst %uint_0
%67 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0 %67 = OpAccessChain %_ptr_Uniform__arr_v4int_uint_4 %src_uniform %uint_0
%68 = OpLoad %_arr_v4int_uint_4 %67 %68 = OpLoad %_arr_v4int_uint_4 %67

View File

@ -20,19 +20,19 @@ layout(binding = 1, std430) buffer S_2 {
shared ivec4 dst[4]; shared ivec4 dst[4];
shared int dst_nested[4][3][2]; shared int dst_nested[4][3][2];
ivec4[4] ret_arr() { ivec4[4] ret_arr() {
ivec4 tint_symbol[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 tint_symbol_1[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
return tint_symbol; return tint_symbol_1;
} }
S ret_struct_arr() { S ret_struct_arr() {
S tint_symbol_1 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0))); S tint_symbol_2 = S(ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)));
return tint_symbol_1; return tint_symbol_2;
} }
void foo(ivec4 src_param[4]) { void foo(ivec4 src_param[4]) {
ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_function[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
ivec4 tint_symbol_2[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3)); ivec4 tint_symbol_3[4] = ivec4[4](ivec4(1), ivec4(2), ivec4(3), ivec4(3));
dst = tint_symbol_2; dst = tint_symbol_3;
dst = src_param; dst = src_param;
dst = ret_arr(); dst = ret_arr();
ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0)); ivec4 src_let[4] = ivec4[4](ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0), ivec4(0, 0, 0, 0));
@ -40,7 +40,8 @@ void foo(ivec4 src_param[4]) {
dst = src_function; dst = src_function;
dst = src_private; dst = src_private;
dst = src_workgroup; dst = src_workgroup;
dst = ret_struct_arr().arr; S tint_symbol = ret_struct_arr();
dst = tint_symbol.arr;
dst = src_uniform.arr; dst = src_uniform.arr;
dst = src_storage.arr; dst = src_storage.arr;
int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0))); int src_nested[4][3][2] = int[4][3][2](int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)), int[3][2](int[2](0, 0), int[2](0, 0), int[2](0, 0)));

View File

@ -18,17 +18,17 @@ groupshared int dst_nested[4][3][2];
typedef int4 ret_arr_ret[4]; typedef int4 ret_arr_ret[4];
ret_arr_ret ret_arr() { ret_arr_ret ret_arr() {
const int4 tint_symbol_5[4] = (int4[4])0; const int4 tint_symbol_6[4] = (int4[4])0;
return tint_symbol_5;
}
S ret_struct_arr() {
const S tint_symbol_6 = (S)0;
return tint_symbol_6; return tint_symbol_6;
} }
typedef int4 tint_symbol_1_ret[4]; S ret_struct_arr() {
tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) { const S tint_symbol_7 = (S)0;
return tint_symbol_7;
}
typedef int4 tint_symbol_2_ret[4];
tint_symbol_2_ret tint_symbol_2(uint4 buffer[4], uint offset) {
int4 arr_1[4] = (int4[4])0; int4 arr_1[4] = (int4[4])0;
{ {
[loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) { [loop] for(uint i = 0u; (i < 4u); i = (i + 1u)) {
@ -39,8 +39,8 @@ tint_symbol_1_ret tint_symbol_1(uint4 buffer[4], uint offset) {
return arr_1; return arr_1;
} }
typedef int4 tint_symbol_3_ret[4]; typedef int4 tint_symbol_4_ret[4];
tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) { tint_symbol_4_ret tint_symbol_4(RWByteAddressBuffer buffer, uint offset) {
int4 arr_2[4] = (int4[4])0; int4 arr_2[4] = (int4[4])0;
{ {
[loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) { [loop] for(uint i_1 = 0u; (i_1 < 4u); i_1 = (i_1 + 1u)) {
@ -52,8 +52,8 @@ tint_symbol_3_ret tint_symbol_3(RWByteAddressBuffer buffer, uint offset) {
void foo(int4 src_param[4]) { void foo(int4 src_param[4]) {
int4 src_function[4] = (int4[4])0; int4 src_function[4] = (int4[4])0;
const int4 tint_symbol_7[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)}; const int4 tint_symbol_8[4] = {int4((1).xxxx), int4((2).xxxx), int4((3).xxxx), int4((3).xxxx)};
tint_symbol = tint_symbol_7; tint_symbol = tint_symbol_8;
tint_symbol = src_param; tint_symbol = src_param;
tint_symbol = ret_arr(); tint_symbol = ret_arr();
const int4 src_let[4] = (int4[4])0; const int4 src_let[4] = (int4[4])0;
@ -61,9 +61,10 @@ void foo(int4 src_param[4]) {
tint_symbol = src_function; tint_symbol = src_function;
tint_symbol = src_private; tint_symbol = src_private;
tint_symbol = src_workgroup; tint_symbol = src_workgroup;
tint_symbol = ret_struct_arr().arr; const S tint_symbol_1 = ret_struct_arr();
tint_symbol = tint_symbol_1(src_uniform, 0u); tint_symbol = tint_symbol_1.arr;
tint_symbol = tint_symbol_3(src_storage, 0u); tint_symbol = tint_symbol_2(src_uniform, 0u);
tint_symbol = tint_symbol_4(src_storage, 0u);
int src_nested[4][3][2] = (int[4][3][2])0; int src_nested[4][3][2] = (int[4][3][2])0;
dst_nested = src_nested; dst_nested = src_nested;
} }

View File

@ -22,30 +22,31 @@ struct tint_array_wrapper_1 {
}; };
tint_array_wrapper ret_arr() { tint_array_wrapper ret_arr() {
tint_array_wrapper const tint_symbol = {.arr={}}; tint_array_wrapper const tint_symbol_1 = {.arr={}};
return tint_symbol;
}
S ret_struct_arr() {
S const tint_symbol_1 = {};
return tint_symbol_1; return tint_symbol_1;
} }
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) { S ret_struct_arr() {
tint_array_wrapper src_function = {}; S const tint_symbol_2 = {};
tint_array_wrapper const tint_symbol_2 = {.arr={int4(1), int4(2), int4(3), int4(3)}}; return tint_symbol_2;
*(tint_symbol_3) = tint_symbol_2; }
*(tint_symbol_3) = src_param;
*(tint_symbol_3) = ret_arr(); void foo(tint_array_wrapper src_param, threadgroup tint_array_wrapper* const tint_symbol_4, thread tint_array_wrapper* const tint_symbol_5, threadgroup tint_array_wrapper* const tint_symbol_6, const constant S* const tint_symbol_7, device S* const tint_symbol_8, threadgroup tint_array_wrapper_1* const tint_symbol_9) {
tint_array_wrapper const src_let = {.arr={}}; tint_array_wrapper src_function = {};
*(tint_symbol_3) = src_let; tint_array_wrapper const tint_symbol_3 = {.arr={int4(1), int4(2), int4(3), int4(3)}};
*(tint_symbol_3) = src_function; *(tint_symbol_4) = tint_symbol_3;
*(tint_symbol_3) = *(tint_symbol_4); *(tint_symbol_4) = src_param;
*(tint_symbol_3) = *(tint_symbol_5); *(tint_symbol_4) = ret_arr();
*(tint_symbol_3) = ret_struct_arr().arr; tint_array_wrapper const src_let = {.arr={}};
*(tint_symbol_3) = (*(tint_symbol_6)).arr; *(tint_symbol_4) = src_let;
*(tint_symbol_3) = (*(tint_symbol_7)).arr; *(tint_symbol_4) = src_function;
tint_array_wrapper_1 src_nested = {}; *(tint_symbol_4) = *(tint_symbol_5);
*(tint_symbol_8) = src_nested; *(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_array_wrapper_1 src_nested = {};
*(tint_symbol_9) = src_nested;
} }

View File

@ -1,18 +1,23 @@
#version 310 es #version 310 es
float[4] f1() { float[4] f1() {
float tint_symbol_1[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f); float tint_symbol_6[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
return tint_symbol_1; return tint_symbol_6;
} }
float[3][4] f2() { float[3][4] f2() {
float tint_symbol_2[3][4] = float[3][4](f1(), f1(), f1()); float tint_symbol_1[4] = f1();
return tint_symbol_2; float tint_symbol_2[4] = f1();
float tint_symbol_3[4] = f1();
float tint_symbol_7[3][4] = float[3][4](tint_symbol_1, tint_symbol_2, tint_symbol_3);
return tint_symbol_7;
} }
float[2][3][4] f3() { float[2][3][4] f3() {
float tint_symbol_3[2][3][4] = float[2][3][4](f2(), f2()); float tint_symbol_4[3][4] = f2();
return tint_symbol_3; float tint_symbol_5[3][4] = f2();
float tint_symbol_8[2][3][4] = float[2][3][4](tint_symbol_4, tint_symbol_5);
return tint_symbol_8;
} }
void tint_symbol() { void tint_symbol() {

View File

@ -1,19 +1,24 @@
typedef float f1_ret[4]; typedef float f1_ret[4];
f1_ret f1() { f1_ret f1() {
const float tint_symbol[4] = (float[4])0; const float tint_symbol_5[4] = (float[4])0;
return tint_symbol; return tint_symbol_5;
} }
typedef float f2_ret[3][4]; typedef float f2_ret[3][4];
f2_ret f2() { f2_ret f2() {
const float tint_symbol_1[3][4] = {f1(), f1(), f1()}; const float tint_symbol[4] = f1();
return tint_symbol_1; const float tint_symbol_1[4] = f1();
const float tint_symbol_2[4] = f1();
const float tint_symbol_6[3][4] = {tint_symbol, tint_symbol_1, tint_symbol_2};
return tint_symbol_6;
} }
typedef float f3_ret[2][3][4]; typedef float f3_ret[2][3][4];
f3_ret f3() { f3_ret f3() {
const float tint_symbol_2[2][3][4] = {f2(), f2()}; const float tint_symbol_3[3][4] = f2();
return tint_symbol_2; const float tint_symbol_4[3][4] = f2();
const float tint_symbol_7[2][3][4] = {tint_symbol_3, tint_symbol_4};
return tint_symbol_7;
} }
[numthreads(1, 1, 1)] [numthreads(1, 1, 1)]

View File

@ -6,8 +6,8 @@ struct tint_array_wrapper {
}; };
tint_array_wrapper f1() { tint_array_wrapper f1() {
tint_array_wrapper const tint_symbol_1 = {.arr={}}; tint_array_wrapper const tint_symbol_6 = {.arr={}};
return tint_symbol_1; return tint_symbol_6;
} }
struct tint_array_wrapper_1 { struct tint_array_wrapper_1 {
@ -15,8 +15,11 @@ struct tint_array_wrapper_1 {
}; };
tint_array_wrapper_1 f2() { tint_array_wrapper_1 f2() {
tint_array_wrapper_1 const tint_symbol_2 = {.arr={f1(), f1(), f1()}}; tint_array_wrapper const tint_symbol_1 = f1();
return tint_symbol_2; tint_array_wrapper const tint_symbol_2 = f1();
tint_array_wrapper const tint_symbol_3 = f1();
tint_array_wrapper_1 const tint_symbol_7 = {.arr={tint_symbol_1, tint_symbol_2, tint_symbol_3}};
return tint_symbol_7;
} }
struct tint_array_wrapper_2 { struct tint_array_wrapper_2 {
@ -24,8 +27,10 @@ struct tint_array_wrapper_2 {
}; };
tint_array_wrapper_2 f3() { tint_array_wrapper_2 f3() {
tint_array_wrapper_2 const tint_symbol_3 = {.arr={f2(), f2()}}; tint_array_wrapper_1 const tint_symbol_4 = f2();
return tint_symbol_3; tint_array_wrapper_1 const tint_symbol_5 = f2();
tint_array_wrapper_2 const tint_symbol_8 = {.arr={tint_symbol_4, tint_symbol_5}};
return tint_symbol_8;
} }
kernel void tint_symbol() { kernel void tint_symbol() {

View File

@ -83,7 +83,10 @@ float linearDepth(float depthSample) {
uvec3 getTile(vec4 fragCoord) { uvec3 getTile(vec4 fragCoord) {
float sliceScale = (float(tileCount.z) / log2((camera.zFar / camera.zNear))); float sliceScale = (float(tileCount.z) / log2((camera.zFar / camera.zNear)));
float sliceBias = -(((float(tileCount.z) * log2(camera.zNear)) / log2((camera.zFar / camera.zNear)))); float sliceBias = -(((float(tileCount.z) * log2(camera.zNear)) / log2((camera.zFar / camera.zNear))));
uint zTile = uint(max(((log2(linearDepth(fragCoord.z)) * sliceScale) + sliceBias), 0.0f)); float tint_symbol_3 = linearDepth(fragCoord.z);
float tint_symbol_4 = log2(tint_symbol_3);
float tint_symbol_5 = max(((tint_symbol_4 * sliceScale) + sliceBias), 0.0f);
uint zTile = uint(tint_symbol_5);
return uvec3(uint((fragCoord.x / (camera.outputSize.x / float(tileCount.x)))), uint((fragCoord.y / (camera.outputSize.y / float(tileCount.y)))), zTile); return uvec3(uint((fragCoord.x / (camera.outputSize.x / float(tileCount.x)))), uint((fragCoord.y / (camera.outputSize.y / float(tileCount.y)))), zTile);
} }
@ -157,7 +160,9 @@ float pointLightVisibility(uint lightIndex, vec3 worldPos, vec3 pointToLight) {
if ((shadowIndex == -1)) { if ((shadowIndex == -1)) {
return 1.0f; return 1.0f;
} }
shadowIndex = (shadowIndex + getCubeFace((pointToLight * -1.0f))); int tint_symbol_6 = shadowIndex;
int tint_symbol_7 = getCubeFace((pointToLight * -1.0f));
shadowIndex = (tint_symbol_6 + tint_symbol_7);
vec4 viewport = shadow.properties[shadowIndex].viewport; vec4 viewport = shadow.properties[shadowIndex].viewport;
vec4 lightPos = (shadow.properties[shadowIndex].viewProj * vec4(worldPos, 1.0f)); vec4 lightPos = (shadow.properties[shadowIndex].viewProj * vec4(worldPos, 1.0f));
vec3 shadowPos = vec3((((lightPos.xy / lightPos.w) * vec2(0.5f, -0.5f)) + vec2(0.5f, 0.5f)), (lightPos.z / lightPos.w)); vec3 shadowPos = vec3((((lightPos.xy / lightPos.w) * vec2(0.5f, -0.5f)) + vec2(0.5f, 0.5f)), (lightPos.z / lightPos.w));
@ -312,7 +317,9 @@ vec3 lightRadiance(PuctualLight light, SurfaceInfo surface) {
vec3 numerator = ((NDF * G) * F); vec3 numerator = ((NDF * G) * F);
float denominator = max(((4.0f * max(dot(surface.normal, surface.v), 0.0f)) * NdotL), 0.001f); float denominator = max(((4.0f * max(dot(surface.normal, surface.v), 0.0f)) * NdotL), 0.001f);
vec3 specular = (numerator / vec3(denominator)); vec3 specular = (numerator / vec3(denominator));
vec3 radiance = ((light.color * light.intensity) * lightAttenuation(light)); vec3 tint_symbol_8 = (light.color * light.intensity);
float tint_symbol_9 = lightAttenuation(light);
vec3 radiance = (tint_symbol_8 * tint_symbol_9);
return (((((kD * surface.albedo) / vec3(PI)) + specular) * radiance) * NdotL); return (((((kD * surface.albedo) / vec3(PI)) + specular) * radiance) * NdotL);
} }
@ -333,7 +340,9 @@ FragmentOutput fragmentMain(VertexOutput tint_symbol) {
light.color = globalLights.dirColor; light.color = globalLights.dirColor;
light.intensity = globalLights.dirIntensity; light.intensity = globalLights.dirIntensity;
float lightVis = dirLightVisibility(tint_symbol.worldPos); float lightVis = dirLightVisibility(tint_symbol.worldPos);
Lo = (Lo + (lightRadiance(light, surface) * lightVis)); vec3 tint_symbol_10 = Lo;
vec3 tint_symbol_11 = lightRadiance(light, surface);
Lo = (tint_symbol_10 + (tint_symbol_11 * lightVis));
} }
uint clusterIndex = getClusterIndex(tint_symbol.position); uint clusterIndex = getClusterIndex(tint_symbol.position);
uint lightOffset = clusterLights.lights[clusterIndex].offset; uint lightOffset = clusterLights.lights[clusterIndex].offset;
@ -348,7 +357,9 @@ FragmentOutput fragmentMain(VertexOutput tint_symbol) {
light.color = globalLights.lights[i].color; light.color = globalLights.lights[i].color;
light.intensity = globalLights.lights[i].intensity; light.intensity = globalLights.lights[i].intensity;
float lightVis = pointLightVisibility(i, tint_symbol.worldPos, light.pointToLight); float lightVis = pointLightVisibility(i, tint_symbol.worldPos, light.pointToLight);
Lo = (Lo + (lightRadiance(light, surface) * lightVis)); vec3 tint_symbol_12 = Lo;
vec3 tint_symbol_13 = lightRadiance(light, surface);
Lo = (tint_symbol_12 + (tint_symbol_13 * lightVis));
} }
} }
vec2 ssaoCoord = (tint_symbol.position.xy / vec2(textureSize(ssaoTexture_1, 0).xy)); vec2 ssaoCoord = (tint_symbol.position.xy / vec2(textureSize(ssaoTexture_1, 0).xy));
@ -362,8 +373,8 @@ FragmentOutput fragmentMain(VertexOutput tint_symbol) {
} }
void main() { void main() {
VertexOutput tint_symbol_3 = VertexOutput(gl_FragCoord, worldPos_1, view_1, texcoord_1, texcoord2_1, color_1, instanceColor_1, normal_1, tangent_1, bitangent_1); VertexOutput tint_symbol_14 = VertexOutput(gl_FragCoord, worldPos_1, view_1, texcoord_1, texcoord2_1, color_1, instanceColor_1, normal_1, tangent_1, bitangent_1);
FragmentOutput inner_result = fragmentMain(tint_symbol_3); FragmentOutput inner_result = fragmentMain(tint_symbol_14);
color_2 = inner_result.color; color_2 = inner_result.color;
emissive_1 = inner_result.emissive; emissive_1 = inner_result.emissive;
return; return;

View File

@ -20,13 +20,13 @@ FragIn tint_symbol_inner(FragIn in, float b) {
if ((in.mask == 0u)) { if ((in.mask == 0u)) {
return in; return in;
} }
FragIn const tint_symbol_5 = {.a=b, .mask=1u}; FragIn const tint_symbol_4 = {.a=b, .mask=1u};
return tint_symbol_5; return tint_symbol_4;
} }
fragment tint_symbol_3 tint_symbol(uint mask [[sample_mask]], tint_symbol_2 tint_symbol_1 [[stage_in]]) { fragment tint_symbol_3 tint_symbol(uint mask [[sample_mask]], tint_symbol_2 tint_symbol_1 [[stage_in]]) {
FragIn const tint_symbol_4 = {.a=tint_symbol_1.a, .mask=mask}; FragIn const tint_symbol_5 = {.a=tint_symbol_1.a, .mask=mask};
FragIn const inner_result = tint_symbol_inner(tint_symbol_4, tint_symbol_1.b); FragIn const inner_result = tint_symbol_inner(tint_symbol_5, tint_symbol_1.b);
tint_symbol_3 wrapper_result = {}; tint_symbol_3 wrapper_result = {};
wrapper_result.a = inner_result.a; wrapper_result.a = inner_result.a;
wrapper_result.mask = inner_result.mask; wrapper_result.mask = inner_result.mask;

View File

@ -199,7 +199,8 @@ void main_create_lut(uvec3 GlobalInvocationID) {
uint numTriangles = atomicOr(counters.values[voxelIndex], 0u); uint numTriangles = atomicOr(counters.values[voxelIndex], 0u);
int offset = -1; int offset = -1;
if ((numTriangles > 0u)) { if ((numTriangles > 0u)) {
offset = int(atomicAdd(dbg.offsetCounter, numTriangles)); uint tint_symbol = atomicAdd(dbg.offsetCounter, numTriangles);
offset = int(tint_symbol);
} }
atomicExchange(LUT.values[voxelIndex], offset); atomicExchange(LUT.values[voxelIndex], offset);
} }

View File

@ -126,7 +126,8 @@ void main_create_lut_inner(uint3 GlobalInvocationID) {
uint numTriangles = atomicLoad_1(counters, (4u * voxelIndex)); uint numTriangles = atomicLoad_1(counters, (4u * voxelIndex));
int offset = -1; int offset = -1;
if ((numTriangles > 0u)) { if ((numTriangles > 0u)) {
offset = int(atomicAdd_1(dbg, 0u, numTriangles)); const uint tint_symbol_6 = atomicAdd_1(dbg, 0u, numTriangles);
offset = int(tint_symbol_6);
} }
atomicStore_1(LUT, (4u * voxelIndex), offset); atomicStore_1(LUT, (4u * voxelIndex), offset);
} }

View File

@ -58,15 +58,15 @@ struct AI32s {
/* 0x0000 */ atomic_int values[1]; /* 0x0000 */ atomic_int values[1];
}; };
float3 toVoxelPos(float3 position, const constant Uniforms* const tint_symbol) { float3 toVoxelPos(float3 position, const constant Uniforms* const tint_symbol_1) {
float3 bbMin = float3((*(tint_symbol)).bbMin[0], (*(tint_symbol)).bbMin[1], (*(tint_symbol)).bbMin[2]); float3 bbMin = float3((*(tint_symbol_1)).bbMin[0], (*(tint_symbol_1)).bbMin[1], (*(tint_symbol_1)).bbMin[2]);
float3 bbMax = float3((*(tint_symbol)).bbMax[0], (*(tint_symbol)).bbMax[1], (*(tint_symbol)).bbMax[2]); float3 bbMax = float3((*(tint_symbol_1)).bbMax[0], (*(tint_symbol_1)).bbMax[1], (*(tint_symbol_1)).bbMax[2]);
float3 bbSize = (bbMax - bbMin); float3 bbSize = (bbMax - bbMin);
float cubeSize = fmax(fmax(bbSize[0], bbSize[1]), bbSize[2]); float cubeSize = fmax(fmax(bbSize[0], bbSize[1]), bbSize[2]);
float gridSize = float((*(tint_symbol)).gridSize); float gridSize = float((*(tint_symbol_1)).gridSize);
float gx = ((gridSize * (position[0] - (*(tint_symbol)).bbMin[0])) / cubeSize); float gx = ((gridSize * (position[0] - (*(tint_symbol_1)).bbMin[0])) / cubeSize);
float gy = ((gridSize * (position[1] - (*(tint_symbol)).bbMin[1])) / cubeSize); float gy = ((gridSize * (position[1] - (*(tint_symbol_1)).bbMin[1])) / cubeSize);
float gz = ((gridSize * (position[2] - (*(tint_symbol)).bbMin[2])) / cubeSize); float gz = ((gridSize * (position[2] - (*(tint_symbol_1)).bbMin[2])) / cubeSize);
return float3(gx, gy, gz); return float3(gx, gy, gz);
} }
@ -82,89 +82,90 @@ uint3 toIndex3D(uint gridSize, uint index) {
return uint3(x_1, y_1, z_1); return uint3(x_1, y_1, z_1);
} }
float3 loadPosition(uint vertexIndex, device F32s* const tint_symbol_1) { float3 loadPosition(uint vertexIndex, device F32s* const tint_symbol_2) {
float3 position = float3((*(tint_symbol_1)).values[((3u * vertexIndex) + 0u)], (*(tint_symbol_1)).values[((3u * vertexIndex) + 1u)], (*(tint_symbol_1)).values[((3u * vertexIndex) + 2u)]); float3 position = float3((*(tint_symbol_2)).values[((3u * vertexIndex) + 0u)], (*(tint_symbol_2)).values[((3u * vertexIndex) + 1u)], (*(tint_symbol_2)).values[((3u * vertexIndex) + 2u)]);
return position; return position;
} }
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) { void doIgnore(const constant Uniforms* const tint_symbol_3, device Dbg* const tint_symbol_4, device AU32s* const tint_symbol_5, device U32s* const tint_symbol_6, device F32s* const tint_symbol_7, device AI32s* const tint_symbol_8) {
uint g42 = (*(tint_symbol_2)).numTriangles; uint g42 = (*(tint_symbol_3)).numTriangles;
uint kj6 = (*(tint_symbol_3)).value1; uint kj6 = (*(tint_symbol_4)).value1;
uint b53 = atomic_load_explicit(&((*(tint_symbol_4)).values[0]), memory_order_relaxed); uint b53 = atomic_load_explicit(&((*(tint_symbol_5)).values[0]), memory_order_relaxed);
uint rwg = (*(tint_symbol_5)).values[0]; uint rwg = (*(tint_symbol_6)).values[0];
float rb5 = (*(tint_symbol_6)).values[0]; float rb5 = (*(tint_symbol_7)).values[0];
int g55 = atomic_load_explicit(&((*(tint_symbol_7)).values[0]), memory_order_relaxed); int g55 = atomic_load_explicit(&((*(tint_symbol_8)).values[0]), memory_order_relaxed);
} }
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) { void main_count_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_9, device Dbg* const tint_symbol_10, device AU32s* const tint_symbol_11, device U32s* const tint_symbol_12, device F32s* const tint_symbol_13, device AI32s* const tint_symbol_14) {
uint triangleIndex = GlobalInvocationID[0]; uint triangleIndex = GlobalInvocationID[0];
if ((triangleIndex >= (*(tint_symbol_8)).numTriangles)) { if ((triangleIndex >= (*(tint_symbol_9)).numTriangles)) {
return; return;
} }
doIgnore(tint_symbol_8, tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12, tint_symbol_13); doIgnore(tint_symbol_9, tint_symbol_10, tint_symbol_11, tint_symbol_12, tint_symbol_13, tint_symbol_14);
uint i0 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 0u)]; uint i0 = (*(tint_symbol_12)).values[((3u * triangleIndex) + 0u)];
uint i1 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 1u)]; uint i1 = (*(tint_symbol_12)).values[((3u * triangleIndex) + 1u)];
uint i2 = (*(tint_symbol_11)).values[((3u * triangleIndex) + 2u)]; uint i2 = (*(tint_symbol_12)).values[((3u * triangleIndex) + 2u)];
float3 p0 = loadPosition(i0, tint_symbol_12); float3 p0 = loadPosition(i0, tint_symbol_13);
float3 p1 = loadPosition(i1, tint_symbol_12); float3 p1 = loadPosition(i1, tint_symbol_13);
float3 p2 = loadPosition(i2, tint_symbol_12); float3 p2 = loadPosition(i2, tint_symbol_13);
float3 center = (((p0 + p1) + p2) / 3.0f); float3 center = (((p0 + p1) + p2) / 3.0f);
float3 voxelPos = toVoxelPos(center, tint_symbol_8); float3 voxelPos = toVoxelPos(center, tint_symbol_9);
uint voxelIndex = toIndex1D((*(tint_symbol_8)).gridSize, voxelPos); uint voxelIndex = toIndex1D((*(tint_symbol_9)).gridSize, voxelPos);
uint acefg = atomic_fetch_add_explicit(&((*(tint_symbol_10)).values[voxelIndex]), 1u, memory_order_relaxed); uint acefg = atomic_fetch_add_explicit(&((*(tint_symbol_11)).values[voxelIndex]), 1u, memory_order_relaxed);
if ((triangleIndex == 0u)) { if ((triangleIndex == 0u)) {
(*(tint_symbol_9)).value0 = (*(tint_symbol_8)).gridSize; (*(tint_symbol_10)).value0 = (*(tint_symbol_9)).gridSize;
(*(tint_symbol_9)).value_f32_0 = center[0]; (*(tint_symbol_10)).value_f32_0 = center[0];
(*(tint_symbol_9)).value_f32_1 = center[1]; (*(tint_symbol_10)).value_f32_1 = center[1];
(*(tint_symbol_9)).value_f32_2 = center[2]; (*(tint_symbol_10)).value_f32_2 = center[2];
} }
} }
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]]) { kernel void main_count(const constant Uniforms* tint_symbol_15 [[buffer(0)]], device Dbg* tint_symbol_16 [[buffer(1)]], device AU32s* tint_symbol_17 [[buffer(2)]], device U32s* tint_symbol_18 [[buffer(3)]], device F32s* tint_symbol_19 [[buffer(4)]], device AI32s* tint_symbol_20 [[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); main_count_inner(GlobalInvocationID, tint_symbol_15, tint_symbol_16, tint_symbol_17, tint_symbol_18, tint_symbol_19, tint_symbol_20);
return; return;
} }
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) { void main_create_lut_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_21, device Dbg* const tint_symbol_22, device AU32s* const tint_symbol_23, device U32s* const tint_symbol_24, device F32s* const tint_symbol_25, device AI32s* const tint_symbol_26) {
uint voxelIndex = GlobalInvocationID[0]; uint voxelIndex = GlobalInvocationID[0];
doIgnore(tint_symbol_20, tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_24, tint_symbol_25); doIgnore(tint_symbol_21, tint_symbol_22, tint_symbol_23, tint_symbol_24, tint_symbol_25, tint_symbol_26);
uint maxVoxels = (((*(tint_symbol_20)).gridSize * (*(tint_symbol_20)).gridSize) * (*(tint_symbol_20)).gridSize); uint maxVoxels = (((*(tint_symbol_21)).gridSize * (*(tint_symbol_21)).gridSize) * (*(tint_symbol_21)).gridSize);
if ((voxelIndex >= maxVoxels)) { if ((voxelIndex >= maxVoxels)) {
return; return;
} }
uint numTriangles = atomic_load_explicit(&((*(tint_symbol_22)).values[voxelIndex]), memory_order_relaxed); uint numTriangles = atomic_load_explicit(&((*(tint_symbol_23)).values[voxelIndex]), memory_order_relaxed);
int offset = -1; int offset = -1;
if ((numTriangles > 0u)) { if ((numTriangles > 0u)) {
offset = int(atomic_fetch_add_explicit(&((*(tint_symbol_21)).offsetCounter), numTriangles, memory_order_relaxed)); uint const tint_symbol = atomic_fetch_add_explicit(&((*(tint_symbol_22)).offsetCounter), numTriangles, memory_order_relaxed);
offset = int(tint_symbol);
} }
atomic_store_explicit(&((*(tint_symbol_25)).values[voxelIndex]), offset, memory_order_relaxed); atomic_store_explicit(&((*(tint_symbol_26)).values[voxelIndex]), offset, memory_order_relaxed);
} }
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]]) { kernel void main_create_lut(const constant Uniforms* tint_symbol_27 [[buffer(0)]], device Dbg* tint_symbol_28 [[buffer(1)]], device AU32s* tint_symbol_29 [[buffer(2)]], device U32s* tint_symbol_30 [[buffer(3)]], device F32s* tint_symbol_31 [[buffer(4)]], device AI32s* tint_symbol_32 [[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); main_create_lut_inner(GlobalInvocationID, tint_symbol_27, tint_symbol_28, tint_symbol_29, tint_symbol_30, tint_symbol_31, tint_symbol_32);
return; return;
} }
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) { void main_sort_triangles_inner(uint3 GlobalInvocationID, const constant Uniforms* const tint_symbol_33, device Dbg* const tint_symbol_34, device AU32s* const tint_symbol_35, device U32s* const tint_symbol_36, device F32s* const tint_symbol_37, device AI32s* const tint_symbol_38) {
uint triangleIndex = GlobalInvocationID[0]; uint triangleIndex = GlobalInvocationID[0];
doIgnore(tint_symbol_32, tint_symbol_33, tint_symbol_34, tint_symbol_35, tint_symbol_36, tint_symbol_37); doIgnore(tint_symbol_33, tint_symbol_34, tint_symbol_35, tint_symbol_36, tint_symbol_37, tint_symbol_38);
if ((triangleIndex >= (*(tint_symbol_32)).numTriangles)) { if ((triangleIndex >= (*(tint_symbol_33)).numTriangles)) {
return; return;
} }
uint i0 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 0u)]; uint i0 = (*(tint_symbol_36)).values[((3u * triangleIndex) + 0u)];
uint i1 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 1u)]; uint i1 = (*(tint_symbol_36)).values[((3u * triangleIndex) + 1u)];
uint i2 = (*(tint_symbol_35)).values[((3u * triangleIndex) + 2u)]; uint i2 = (*(tint_symbol_36)).values[((3u * triangleIndex) + 2u)];
float3 p0 = loadPosition(i0, tint_symbol_36); float3 p0 = loadPosition(i0, tint_symbol_37);
float3 p1 = loadPosition(i1, tint_symbol_36); float3 p1 = loadPosition(i1, tint_symbol_37);
float3 p2 = loadPosition(i2, tint_symbol_36); float3 p2 = loadPosition(i2, tint_symbol_37);
float3 center = (((p0 + p1) + p2) / 3.0f); float3 center = (((p0 + p1) + p2) / 3.0f);
float3 voxelPos = toVoxelPos(center, tint_symbol_32); float3 voxelPos = toVoxelPos(center, tint_symbol_33);
uint voxelIndex = toIndex1D((*(tint_symbol_32)).gridSize, voxelPos); uint voxelIndex = toIndex1D((*(tint_symbol_33)).gridSize, voxelPos);
int triangleOffset = atomic_fetch_add_explicit(&((*(tint_symbol_37)).values[voxelIndex]), 1, memory_order_relaxed); int triangleOffset = atomic_fetch_add_explicit(&((*(tint_symbol_38)).values[voxelIndex]), 1, memory_order_relaxed);
} }
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]]) { kernel void main_sort_triangles(const constant Uniforms* tint_symbol_39 [[buffer(0)]], device Dbg* tint_symbol_40 [[buffer(1)]], device AU32s* tint_symbol_41 [[buffer(2)]], device U32s* tint_symbol_42 [[buffer(3)]], device F32s* tint_symbol_43 [[buffer(4)]], device AI32s* tint_symbol_44 [[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); main_sort_triangles_inner(GlobalInvocationID, tint_symbol_39, tint_symbol_40, tint_symbol_41, tint_symbol_42, tint_symbol_43, tint_symbol_44);
return; return;
} }

View File

@ -542,11 +542,11 @@
OpSelectionMerge %321 None OpSelectionMerge %321 None
OpBranchConditional %320 %322 %321 OpBranchConditional %320 %322 %321
%322 = OpLabel %322 = OpLabel
%326 = OpAccessChain %_ptr_StorageBuffer_uint_0 %dbg %uint_0 %325 = OpAccessChain %_ptr_StorageBuffer_uint_0 %dbg %uint_0
%327 = OpLoad %uint %numTriangles %326 = OpLoad %uint %numTriangles
%324 = OpAtomicIAdd %uint %326 %uint_1 %uint_0 %327 %323 = OpAtomicIAdd %uint %325 %uint_1 %uint_0 %326
%323 = OpBitcast %int %324 %327 = OpBitcast %int %323
OpStore %offset %323 OpStore %offset %327
OpBranch %321 OpBranch %321
%321 = OpLabel %321 = OpLabel
%330 = OpLoad %uint %voxelIndex_0 %330 = OpLoad %uint %voxelIndex_0

View File

@ -7,7 +7,8 @@ int foo() {
void tint_symbol() { void tint_symbol() {
float arr[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f); float arr[4] = float[4](0.0f, 0.0f, 0.0f, 0.0f);
int a_save = foo(); int tint_symbol_1 = foo();
int a_save = tint_symbol_1;
{ {
for(; ; ) { for(; ; ) {
float x = arr[a_save]; float x = arr[a_save];

View File

@ -11,7 +11,8 @@ struct tint_array_wrapper {
fragment void tint_symbol() { fragment void tint_symbol() {
tint_array_wrapper arr = {.arr={}}; tint_array_wrapper arr = {.arr={}};
int const a_save = foo(); int const tint_symbol_1 = foo();
int const a_save = tint_symbol_1;
for(; ; ) { for(; ; ) {
float const x = arr.arr[a_save]; float const x = arr.arr[a_save];
break; break;

View File

@ -37,7 +37,8 @@ void tint_symbol_1(uvec3 GlobalInvocationID) {
uvec4 dstColorBits = uvec4(dstColor); uvec4 dstColorBits = uvec4(dstColor);
{ {
for(uint i = 0u; (i < uniforms.channelCount); i = (i + 1u)) { for(uint i = 0u; (i < uniforms.channelCount); i = (i + 1u)) {
srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]); uint tint_symbol_2 = ConvertToFp16FloatValue(srcColor[i]);
srcColorBits[i] = tint_symbol_2;
bool tint_tmp = success; bool tint_tmp = success;
if (tint_tmp) { if (tint_tmp) {
tint_tmp = (srcColorBits[i] == dstColorBits[i]); tint_tmp = (srcColorBits[i] == dstColorBits[i]);

View File

@ -33,7 +33,8 @@ void main_inner(uint3 GlobalInvocationID) {
uint4 dstColorBits = uint4(dstColor); uint4 dstColorBits = uint4(dstColor);
{ {
[loop] for(uint i = 0u; (i < uniforms[0].w); i = (i + 1u)) { [loop] for(uint i = 0u; (i < uniforms[0].w); i = (i + 1u)) {
set_uint4(srcColorBits, i, ConvertToFp16FloatValue(srcColor[i])); const uint tint_symbol_3 = ConvertToFp16FloatValue(srcColor[i]);
set_uint4(srcColorBits, i, tint_symbol_3);
bool tint_tmp_1 = success; bool tint_tmp_1 = success;
if (tint_tmp_1) { if (tint_tmp_1) {
tint_tmp_1 = (srcColorBits[i] == dstColorBits[i]); tint_tmp_1 = (srcColorBits[i] == dstColorBits[i]);

View File

@ -16,32 +16,33 @@ uint ConvertToFp16FloatValue(float fp32) {
return 1u; return 1u;
} }
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) { void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_2, const constant Uniforms* const tint_symbol_3, texture2d<float, access::sample> tint_symbol_4, device OutputBuf* const tint_symbol_5) {
int2 size = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height()); int2 size = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height());
int2 dstTexCoord = int2(uint3(GlobalInvocationID).xy); int2 dstTexCoord = int2(uint3(GlobalInvocationID).xy);
int2 srcTexCoord = dstTexCoord; int2 srcTexCoord = dstTexCoord;
if (((*(tint_symbol_2)).dstTextureFlipY == 1u)) { if (((*(tint_symbol_3)).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))); 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 srcColor = tint_symbol_2.read(uint2(srcTexCoord), 0);
float4 dstColor = tint_symbol_3.read(uint2(dstTexCoord), 0); float4 dstColor = tint_symbol_4.read(uint2(dstTexCoord), 0);
bool success = true; bool success = true;
uint4 srcColorBits = 0u; uint4 srcColorBits = 0u;
uint4 dstColorBits = uint4(dstColor); uint4 dstColorBits = uint4(dstColor);
for(uint i = 0u; (i < (*(tint_symbol_2)).channelCount); i = (i + 1u)) { for(uint i = 0u; (i < (*(tint_symbol_3)).channelCount); i = (i + 1u)) {
srcColorBits[i] = ConvertToFp16FloatValue(srcColor[i]); uint const tint_symbol_1 = ConvertToFp16FloatValue(srcColor[i]);
srcColorBits[i] = tint_symbol_1;
success = (success && (srcColorBits[i] == dstColorBits[i])); success = (success && (srcColorBits[i] == dstColorBits[i]));
} }
uint outputIndex = ((GlobalInvocationID[1] * uint(size[0])) + GlobalInvocationID[0]); uint outputIndex = ((GlobalInvocationID[1] * uint(size[0])) + GlobalInvocationID[0]);
if (success) { if (success) {
(*(tint_symbol_4)).result[outputIndex] = uint(1); (*(tint_symbol_5)).result[outputIndex] = uint(1);
} else { } else {
(*(tint_symbol_4)).result[outputIndex] = uint(0); (*(tint_symbol_5)).result[outputIndex] = uint(0);
} }
} }
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]]) { kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_6 [[texture(0)]], const constant Uniforms* tint_symbol_7 [[buffer(0)]], texture2d<float, access::sample> tint_symbol_8 [[texture(1)]], device OutputBuf* tint_symbol_9 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
tint_symbol_inner(GlobalInvocationID, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8); tint_symbol_inner(GlobalInvocationID, tint_symbol_6, tint_symbol_7, tint_symbol_8, tint_symbol_9);
return; return;
} }

View File

@ -169,13 +169,13 @@
%94 = OpLabel %94 = OpLabel
OpBranch %84 OpBranch %84
%93 = OpLabel %93 = OpLabel
%95 = OpLoad %uint %i %96 = OpLoad %uint %i
%96 = OpAccessChain %_ptr_Function_uint %srcColorBits %95 %98 = OpAccessChain %_ptr_Function_float %srcColor %96
%98 = OpLoad %uint %i %99 = OpLoad %float %98
%100 = OpAccessChain %_ptr_Function_float %srcColor %98 %95 = OpFunctionCall %uint %ConvertToFp16FloatValue %99
%101 = OpLoad %float %100 %100 = OpLoad %uint %i
%97 = OpFunctionCall %uint %ConvertToFp16FloatValue %101 %101 = OpAccessChain %_ptr_Function_uint %srcColorBits %100
OpStore %96 %97 OpStore %101 %95
%102 = OpLoad %bool %success %102 = OpLoad %bool %success
OpSelectionMerge %103 None OpSelectionMerge %103 None
OpBranchConditional %102 %104 %103 OpBranchConditional %102 %104 %103

View File

@ -61,18 +61,18 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec
int const x_34_save = x_33; int const x_34_save = x_33;
int const x_35 = (*(tint_symbol_81)).numbers.arr[x_34_save]; int const x_35 = (*(tint_symbol_81)).numbers.arr[x_34_save];
QuicksortObject const x_943 = *(tint_symbol_81); QuicksortObject const x_943 = *(tint_symbol_81);
tint_array_wrapper const tint_symbol_3 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_2 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_4 = {.numbers=tint_symbol_3}; QuicksortObject const tint_symbol_3 = {.numbers=tint_symbol_2};
*(tint_symbol_81) = tint_symbol_4; *(tint_symbol_81) = tint_symbol_3;
*(tint_symbol_81) = x_943; *(tint_symbol_81) = x_943;
float2 const x_527 = float2(x_526[0], x_526[0]); float2 const x_527 = float2(x_526[0], x_526[0]);
int const x_36_save = x_32; int const x_36_save = x_32;
float3 const x_528 = float3(x_524[0], x_524[2], x_524[0]); float3 const x_528 = float3(x_524[0], x_524[2], x_524[0]);
(*(tint_symbol_81)).numbers.arr[x_36_save] = x_35; (*(tint_symbol_81)).numbers.arr[x_36_save] = x_35;
QuicksortObject const x_944 = *(tint_symbol_81); QuicksortObject const x_944 = *(tint_symbol_81);
tint_array_wrapper const tint_symbol_5 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_4 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_6 = {.numbers=tint_symbol_5}; QuicksortObject const tint_symbol_5 = {.numbers=tint_symbol_4};
*(tint_symbol_81) = tint_symbol_6; *(tint_symbol_81) = tint_symbol_5;
*(tint_symbol_81) = x_944; *(tint_symbol_81) = x_944;
float3 const x_529 = float3(x_526[1], x_526[2], x_526[0]); float3 const x_529 = float3(x_526[1], x_526[2], x_526[0]);
int const x_945 = *(i); int const x_945 = *(i);
@ -95,9 +95,9 @@ void swap_i1_i1_(thread int* const i, thread int* const j, thread QuicksortObjec
(*(tint_symbol_81)).numbers.arr[x_36_save] = 0; (*(tint_symbol_81)).numbers.arr[x_36_save] = 0;
(*(tint_symbol_81)).numbers.arr[x_36_save] = x_949; (*(tint_symbol_81)).numbers.arr[x_36_save] = x_949;
QuicksortObject const x_950 = *(tint_symbol_81); QuicksortObject const x_950 = *(tint_symbol_81);
tint_array_wrapper const tint_symbol_7 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_6 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_8 = {.numbers=tint_symbol_7}; QuicksortObject const tint_symbol_7 = {.numbers=tint_symbol_6};
*(tint_symbol_81) = tint_symbol_8; *(tint_symbol_81) = tint_symbol_7;
*(tint_symbol_81) = x_950; *(tint_symbol_81) = x_950;
float3 const x_532 = float3(x_528[0], x_528[1], x_528[0]); float3 const x_532 = float3(x_528[0], x_528[1], x_528[0]);
int const x_951 = (*(tint_symbol_81)).numbers.arr[x_34_save]; int const x_951 = (*(tint_symbol_81)).numbers.arr[x_34_save];
@ -153,9 +153,9 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
float3 const x_536 = float3(x_534[0], x_534[2], x_535[0]); float3 const x_536 = float3(x_534[0], x_534[2], x_535[0]);
j_1 = 10; j_1 = 10;
QuicksortObject const x_960 = *(tint_symbol_82); QuicksortObject const x_960 = *(tint_symbol_82);
tint_array_wrapper const tint_symbol_9 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_8 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_10 = {.numbers=tint_symbol_9}; QuicksortObject const tint_symbol_9 = {.numbers=tint_symbol_8};
*(tint_symbol_82) = tint_symbol_10; *(tint_symbol_82) = tint_symbol_9;
*(tint_symbol_82) = x_960; *(tint_symbol_82) = x_960;
while (true) { while (true) {
int const x_961 = pivot; int const x_961 = pivot;
@ -170,9 +170,9 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
pivot = x_963; pivot = x_963;
x_537 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]); x_537 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[2]);
QuicksortObject const x_964 = *(tint_symbol_82); QuicksortObject const x_964 = *(tint_symbol_82);
tint_array_wrapper const tint_symbol_11 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_10 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_12 = {.numbers=tint_symbol_11}; QuicksortObject const tint_symbol_11 = {.numbers=tint_symbol_10};
*(tint_symbol_82) = tint_symbol_12; *(tint_symbol_82) = tint_symbol_11;
*(tint_symbol_82) = x_964; *(tint_symbol_82) = x_964;
int const x_56 = *(h); int const x_56 = *(h);
int const x_965 = *(h); int const x_965 = *(h);
@ -206,9 +206,9 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
param_1 = x_971; param_1 = x_971;
int const x_62 = (*(tint_symbol_82)).numbers.arr[x_61_save]; int const x_62 = (*(tint_symbol_82)).numbers.arr[x_61_save];
QuicksortObject const x_972 = *(tint_symbol_82); QuicksortObject const x_972 = *(tint_symbol_82);
tint_array_wrapper const tint_symbol_13 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_12 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_14 = {.numbers=tint_symbol_13}; QuicksortObject const tint_symbol_13 = {.numbers=tint_symbol_12};
*(tint_symbol_82) = tint_symbol_14; *(tint_symbol_82) = tint_symbol_13;
*(tint_symbol_82) = x_972; *(tint_symbol_82) = x_972;
int const x_63 = pivot; int const x_63 = pivot;
float2 const x_540 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_534[2]); float2 const x_540 = float2(float3(1.0f, 2.0f, 3.0f)[1], x_534[2]);
@ -267,9 +267,9 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
param_1 = x_985; param_1 = x_985;
} }
QuicksortObject const x_986 = *(tint_symbol_82); QuicksortObject const x_986 = *(tint_symbol_82);
tint_array_wrapper const tint_symbol_15 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_14 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_16 = {.numbers=tint_symbol_15}; QuicksortObject const tint_symbol_15 = {.numbers=tint_symbol_14};
*(tint_symbol_82) = tint_symbol_16; *(tint_symbol_82) = tint_symbol_15;
*(tint_symbol_82) = x_986; *(tint_symbol_82) = x_986;
{ {
int const x_987 = *(h); int const x_987 = *(h);
@ -302,9 +302,9 @@ int performPartition_i1_i1_(thread int* const l, thread int* const h, thread Qui
(*(tint_symbol_82)).numbers.arr[x_42_save] = x_993; (*(tint_symbol_82)).numbers.arr[x_42_save] = x_993;
float2 const x_549 = float2(x_534[0], x_534[1]); float2 const x_549 = float2(x_534[0], x_534[1]);
QuicksortObject const x_994 = *(tint_symbol_82); QuicksortObject const x_994 = *(tint_symbol_82);
tint_array_wrapper const tint_symbol_17 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_16 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_18 = {.numbers=tint_symbol_17}; QuicksortObject const tint_symbol_17 = {.numbers=tint_symbol_16};
*(tint_symbol_82) = tint_symbol_18; *(tint_symbol_82) = tint_symbol_17;
*(tint_symbol_82) = x_994; *(tint_symbol_82) = x_994;
int const x_995 = *(h); int const x_995 = *(h);
*(h) = 0; *(h) = 0;
@ -372,8 +372,8 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
param_5 = x_1007; param_5 = x_1007;
h_1 = 9; h_1 = 9;
tint_array_wrapper const x_1008 = stack; tint_array_wrapper const x_1008 = stack;
tint_array_wrapper const tint_symbol_19 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_18 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_19; stack = tint_symbol_18;
stack = x_1008; stack = x_1008;
float2 const x_556 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1]); float2 const x_556 = float2(float3(1.0f, 2.0f, 3.0f)[1], float3(1.0f, 2.0f, 3.0f)[1]);
int const x_1009 = param_5; int const x_1009 = param_5;
@ -406,15 +406,15 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
param_4 = x_1015; param_4 = x_1015;
int const x_95 = l_1; int const x_95 = l_1;
QuicksortObject const x_1016 = *(tint_symbol_83); QuicksortObject const x_1016 = *(tint_symbol_83);
tint_array_wrapper const tint_symbol_20 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_19 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_21 = {.numbers=tint_symbol_20}; QuicksortObject const tint_symbol_20 = {.numbers=tint_symbol_19};
*(tint_symbol_83) = tint_symbol_21; *(tint_symbol_83) = tint_symbol_20;
*(tint_symbol_83) = x_1016; *(tint_symbol_83) = x_1016;
float3 const x_560 = float3(x_559[1], x_559[0], x_557[0]); float3 const x_560 = float3(x_559[1], x_559[0], x_557[0]);
int const x_96_save = x_94; int const x_96_save = x_94;
tint_array_wrapper const x_1017 = stack; tint_array_wrapper const x_1017 = stack;
tint_array_wrapper const tint_symbol_22 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_21 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_22; stack = tint_symbol_21;
stack = x_1017; stack = x_1017;
float3 const x_561 = float3(x_556[1], x_556[1], x_556[1]); float3 const x_561 = float3(x_556[1], x_556[1], x_556[1]);
int const x_1018 = l_1; int const x_1018 = l_1;
@ -464,13 +464,13 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
h_1 = 0; h_1 = 0;
h_1 = x_1028; h_1 = x_1028;
tint_array_wrapper const x_1029 = stack; tint_array_wrapper const x_1029 = stack;
tint_array_wrapper const tint_symbol_23 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_22 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_23; stack = tint_symbol_22;
stack = x_1029; stack = x_1029;
int const x_106 = top; int const x_106 = top;
tint_array_wrapper const x_1030 = stack; tint_array_wrapper const x_1030 = stack;
tint_array_wrapper const tint_symbol_24 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_23 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_24; stack = tint_symbol_23;
stack = x_1030; stack = x_1030;
float2 const x_567 = float2(x_558[0], x_564[2]); float2 const x_567 = float2(x_558[0], x_564[2]);
int const x_1031 = param_4; int const x_1031 = param_4;
@ -481,9 +481,9 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
break; break;
} }
QuicksortObject const x_1032 = *(tint_symbol_83); QuicksortObject const x_1032 = *(tint_symbol_83);
tint_array_wrapper const tint_symbol_25 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_24 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_26 = {.numbers=tint_symbol_25}; QuicksortObject const tint_symbol_25 = {.numbers=tint_symbol_24};
*(tint_symbol_83) = tint_symbol_26; *(tint_symbol_83) = tint_symbol_25;
*(tint_symbol_83) = x_1032; *(tint_symbol_83) = x_1032;
float3 const x_568 = float3(x_559[1], x_559[0], x_563[1]); float3 const x_568 = float3(x_559[1], x_559[0], x_563[1]);
int const x_1033 = param_4; int const x_1033 = param_4;
@ -508,8 +508,8 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
stack.arr[x_96_save] = x_1037; stack.arr[x_96_save] = x_1037;
int const x_111 = stack.arr[x_110_save]; int const x_111 = stack.arr[x_110_save];
tint_array_wrapper const x_1038 = stack; tint_array_wrapper const x_1038 = stack;
tint_array_wrapper const tint_symbol_27 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_26 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_27; stack = tint_symbol_26;
stack = x_1038; stack = x_1038;
float3 const x_571 = float3(x_559[1], x_559[0], x_564[1]); float3 const x_571 = float3(x_559[1], x_559[0], x_564[1]);
int const x_1039 = l_1; int const x_1039 = l_1;
@ -517,8 +517,8 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
l_1 = x_1039; l_1 = x_1039;
h_1 = x_111; h_1 = x_111;
tint_array_wrapper const x_1040 = stack; tint_array_wrapper const x_1040 = stack;
tint_array_wrapper const tint_symbol_28 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_27 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_28; stack = tint_symbol_27;
stack = x_1040; stack = x_1040;
float2 const x_572 = float2(x_562[1], x_561[1]); float2 const x_572 = float2(x_562[1], x_561[1]);
int const x_1041 = p; int const x_1041 = p;
@ -610,8 +610,8 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
stack.arr[x_100_save] = 0; stack.arr[x_100_save] = 0;
stack.arr[x_100_save] = x_1061; stack.arr[x_100_save] = x_1061;
tint_array_wrapper const x_1062 = stack; tint_array_wrapper const x_1062 = stack;
tint_array_wrapper const tint_symbol_29 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_28 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_29; stack = tint_symbol_28;
stack = x_1062; stack = x_1062;
float2 const x_584 = float2(x_569[2], x_569[1]); float2 const x_584 = float2(x_569[2], x_569[1]);
float3 const x_585 = float3(x_580[1], x_577[0], x_577[0]); float3 const x_585 = float3(x_580[1], x_577[0], x_577[0]);
@ -650,8 +650,8 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
h_1 = x_1070; h_1 = x_1070;
top = x_133; top = x_133;
tint_array_wrapper const x_1071 = stack; tint_array_wrapper const x_1071 = stack;
tint_array_wrapper const tint_symbol_30 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_29 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_30; stack = tint_symbol_29;
stack = x_1071; stack = x_1071;
int const x_134 = p; int const x_134 = p;
float2 const x_590 = float2(x_576[0], x_573[1]); float2 const x_590 = float2(x_576[0], x_573[1]);
@ -676,9 +676,9 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
stack.arr[x_96_save] = x_1076; stack.arr[x_96_save] = x_1076;
float2 const x_592 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[1]); float2 const x_592 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[1]);
QuicksortObject const x_1077 = *(tint_symbol_83); QuicksortObject const x_1077 = *(tint_symbol_83);
tint_array_wrapper const tint_symbol_31 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_30 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_32 = {.numbers=tint_symbol_31}; QuicksortObject const tint_symbol_31 = {.numbers=tint_symbol_30};
*(tint_symbol_83) = tint_symbol_32; *(tint_symbol_83) = tint_symbol_31;
*(tint_symbol_83) = x_1077; *(tint_symbol_83) = x_1077;
int const x_137 = p; int const x_137 = p;
int const x_1078 = stack.arr[x_114_save]; int const x_1078 = stack.arr[x_114_save];
@ -743,8 +743,8 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
float2 const x_601 = float2(x_563[0], x_563[1]); float2 const x_601 = float2(x_563[0], x_563[1]);
stack.arr[x_147_save] = as_type<int>((1u + as_type<uint>(x_145))); stack.arr[x_147_save] = as_type<int>((1u + as_type<uint>(x_145)));
tint_array_wrapper const x_1093 = stack; tint_array_wrapper const x_1093 = stack;
tint_array_wrapper const tint_symbol_33 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_32 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_33; stack = tint_symbol_32;
stack = x_1093; stack = x_1093;
int const x_148 = top; int const x_148 = top;
int const x_1094 = stack.arr[x_114_save]; int const x_1094 = stack.arr[x_114_save];
@ -752,8 +752,8 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
stack.arr[x_114_save] = x_1094; stack.arr[x_114_save] = x_1094;
float2 const x_602 = float2(x_565[1], x_599[1]); float2 const x_602 = float2(x_565[1], x_599[1]);
tint_array_wrapper const x_1095 = stack; tint_array_wrapper const x_1095 = stack;
tint_array_wrapper const tint_symbol_34 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_33 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
stack = tint_symbol_34; stack = tint_symbol_33;
stack = x_1095; stack = x_1095;
int const x_149 = as_type<int>((as_type<uint>(x_148) + as_type<uint>(as_type<int>(1u)))); int const x_149 = as_type<int>((as_type<uint>(x_148) + as_type<uint>(as_type<int>(1u))));
int const x_1096 = stack.arr[x_147_save]; int const x_1096 = stack.arr[x_147_save];
@ -788,9 +788,9 @@ void quicksort_(thread QuicksortObject* const tint_symbol_83) {
l_1 = x_1103; l_1 = x_1103;
float2 const x_604 = float2(x_563[2], x_564[0]); float2 const x_604 = float2(x_563[2], x_564[0]);
QuicksortObject const x_1104 = *(tint_symbol_83); QuicksortObject const x_1104 = *(tint_symbol_83);
tint_array_wrapper const tint_symbol_35 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_34 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_36 = {.numbers=tint_symbol_35}; QuicksortObject const tint_symbol_35 = {.numbers=tint_symbol_34};
*(tint_symbol_83) = tint_symbol_36; *(tint_symbol_83) = tint_symbol_35;
*(tint_symbol_83) = x_1104; *(tint_symbol_83) = x_1104;
} }
} }
@ -809,15 +809,15 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
uv = x_717; uv = x_717;
i_2 = 0; i_2 = 0;
QuicksortObject const x_721 = *(tint_symbol_84); QuicksortObject const x_721 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_37 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_36 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_38 = {.numbers=tint_symbol_37}; QuicksortObject const tint_symbol_37 = {.numbers=tint_symbol_36};
*(tint_symbol_84) = tint_symbol_38; *(tint_symbol_84) = tint_symbol_37;
*(tint_symbol_84) = x_721; *(tint_symbol_84) = x_721;
if (true) { if (true) {
QuicksortObject const x_722 = *(tint_symbol_84); QuicksortObject const x_722 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_39 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_38 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_40 = {.numbers=tint_symbol_39}; QuicksortObject const tint_symbol_39 = {.numbers=tint_symbol_38};
*(tint_symbol_84) = tint_symbol_40; *(tint_symbol_84) = tint_symbol_39;
*(tint_symbol_84) = x_722; *(tint_symbol_84) = x_722;
float2 const x_431 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]); float2 const x_431 = float2(float3(1.0f, 2.0f, 3.0f)[0], float3(1.0f, 2.0f, 3.0f)[0]);
int const x_158 = i_2; int const x_158 = i_2;
@ -829,15 +829,15 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
color = x_725; color = x_725;
float2 const x_432 = float2(x_431[1], x_431[1]); float2 const x_432 = float2(x_431[1], x_431[1]);
QuicksortObject const x_726 = *(tint_symbol_84); QuicksortObject const x_726 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_41 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_40 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_42 = {.numbers=tint_symbol_41}; QuicksortObject const tint_symbol_41 = {.numbers=tint_symbol_40};
*(tint_symbol_84) = tint_symbol_42; *(tint_symbol_84) = tint_symbol_41;
*(tint_symbol_84) = x_726; *(tint_symbol_84) = x_726;
} }
QuicksortObject const x_756 = *(tint_symbol_84); QuicksortObject const x_756 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_43 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_42 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_44 = {.numbers=tint_symbol_43}; QuicksortObject const tint_symbol_43 = {.numbers=tint_symbol_42};
*(tint_symbol_84) = tint_symbol_44; *(tint_symbol_84) = tint_symbol_43;
*(tint_symbol_84) = x_756; *(tint_symbol_84) = x_756;
float2 const x_446 = float2(float2()[0], float2()[0]); float2 const x_446 = float2(float2()[0], float2()[0]);
int const x_757 = i_2; int const x_757 = i_2;
@ -845,9 +845,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
i_2 = x_757; i_2 = x_757;
quicksort_(tint_symbol_84); quicksort_(tint_symbol_84);
QuicksortObject const x_758 = *(tint_symbol_84); QuicksortObject const x_758 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_45 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_44 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_46 = {.numbers=tint_symbol_45}; QuicksortObject const tint_symbol_45 = {.numbers=tint_symbol_44};
*(tint_symbol_84) = tint_symbol_46; *(tint_symbol_84) = tint_symbol_45;
*(tint_symbol_84) = x_758; *(tint_symbol_84) = x_758;
float4 const x_184 = *(tint_symbol_85); float4 const x_184 = *(tint_symbol_85);
float2 const x_759 = uv; float2 const x_759 = uv;
@ -860,18 +860,18 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
float2 const x_185 = float2(x_184[0], x_184[1]); float2 const x_185 = float2(x_184[0], x_184[1]);
float3 const x_448 = float3(x_185[1], x_446[1], x_446[1]); float3 const x_448 = float3(x_185[1], x_446[1], x_446[1]);
QuicksortObject const x_761 = *(tint_symbol_84); QuicksortObject const x_761 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_47 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_46 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_48 = {.numbers=tint_symbol_47}; QuicksortObject const tint_symbol_47 = {.numbers=tint_symbol_46};
*(tint_symbol_84) = tint_symbol_48; *(tint_symbol_84) = tint_symbol_47;
*(tint_symbol_84) = x_761; *(tint_symbol_84) = x_761;
float2 const x_762 = uv; float2 const x_762 = uv;
uv = float2(0.0f, 0.0f); uv = float2(0.0f, 0.0f);
uv = x_762; uv = x_762;
float2 const x_191 = (*(tint_symbol_86)).resolution; float2 const x_191 = (*(tint_symbol_86)).resolution;
QuicksortObject const x_763 = *(tint_symbol_84); QuicksortObject const x_763 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_49 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_48 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_50 = {.numbers=tint_symbol_49}; QuicksortObject const tint_symbol_49 = {.numbers=tint_symbol_48};
*(tint_symbol_84) = tint_symbol_50; *(tint_symbol_84) = tint_symbol_49;
*(tint_symbol_84) = x_763; *(tint_symbol_84) = x_763;
float3 const x_449 = float3(x_184[1], float3(1.0f, 2.0f, 3.0f)[2], x_184[3]); float3 const x_449 = float3(x_184[1], float3(1.0f, 2.0f, 3.0f)[2], x_184[3]);
float3 const x_764 = color; float3 const x_764 = color;
@ -879,9 +879,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
color = x_764; color = x_764;
float2 const x_192 = (x_185 / x_191); float2 const x_192 = (x_185 / x_191);
QuicksortObject const x_765 = *(tint_symbol_84); QuicksortObject const x_765 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_51 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_50 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_52 = {.numbers=tint_symbol_51}; QuicksortObject const tint_symbol_51 = {.numbers=tint_symbol_50};
*(tint_symbol_84) = tint_symbol_52; *(tint_symbol_84) = tint_symbol_51;
*(tint_symbol_84) = x_765; *(tint_symbol_84) = x_765;
float2 const x_450 = float2(x_447[0], x_185[1]); float2 const x_450 = float2(x_447[0], x_185[1]);
float3 const x_766 = color; float3 const x_766 = color;
@ -897,18 +897,18 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
color = x_768; color = x_768;
float3 const x_451 = float3(x_185[0], x_185[1], x_446[1]); float3 const x_451 = float3(x_185[0], x_185[1], x_446[1]);
QuicksortObject const x_769 = *(tint_symbol_84); QuicksortObject const x_769 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_53 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_52 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_54 = {.numbers=tint_symbol_53}; QuicksortObject const tint_symbol_53 = {.numbers=tint_symbol_52};
*(tint_symbol_84) = tint_symbol_54; *(tint_symbol_84) = tint_symbol_53;
*(tint_symbol_84) = x_769; *(tint_symbol_84) = x_769;
int const x_770 = (*(tint_symbol_84)).numbers.arr[0u]; int const x_770 = (*(tint_symbol_84)).numbers.arr[0u];
(*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = 0;
(*(tint_symbol_84)).numbers.arr[0u] = x_770; (*(tint_symbol_84)).numbers.arr[0u] = x_770;
int const x_201 = (*(tint_symbol_84)).numbers.arr[0u]; int const x_201 = (*(tint_symbol_84)).numbers.arr[0u];
QuicksortObject const x_771 = *(tint_symbol_84); QuicksortObject const x_771 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_55 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_54 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_56 = {.numbers=tint_symbol_55}; QuicksortObject const tint_symbol_55 = {.numbers=tint_symbol_54};
*(tint_symbol_84) = tint_symbol_56; *(tint_symbol_84) = tint_symbol_55;
*(tint_symbol_84) = x_771; *(tint_symbol_84) = x_771;
int const x_772 = (*(tint_symbol_84)).numbers.arr[0u]; int const x_772 = (*(tint_symbol_84)).numbers.arr[0u];
(*(tint_symbol_84)).numbers.arr[0u] = 0; (*(tint_symbol_84)).numbers.arr[0u] = 0;
@ -922,9 +922,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
i_2 = 0; i_2 = 0;
i_2 = x_774; i_2 = x_774;
QuicksortObject const x_775 = *(tint_symbol_84); QuicksortObject const x_775 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_57 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_56 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_58 = {.numbers=tint_symbol_57}; QuicksortObject const tint_symbol_57 = {.numbers=tint_symbol_56};
*(tint_symbol_84) = tint_symbol_58; *(tint_symbol_84) = tint_symbol_57;
*(tint_symbol_84) = x_775; *(tint_symbol_84) = x_775;
float3 const x_453 = float3(x_451[0], x_450[0], x_450[1]); float3 const x_453 = float3(x_451[0], x_450[0], x_450[1]);
color[0] = (x_206 + float(x_201)); color[0] = (x_206 + float(x_201));
@ -941,9 +941,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_778; uv[0] = x_778;
QuicksortObject const x_779 = *(tint_symbol_84); QuicksortObject const x_779 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_59 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_58 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_60 = {.numbers=tint_symbol_59}; QuicksortObject const tint_symbol_59 = {.numbers=tint_symbol_58};
*(tint_symbol_84) = tint_symbol_60; *(tint_symbol_84) = tint_symbol_59;
*(tint_symbol_84) = x_779; *(tint_symbol_84) = x_779;
if ((x_210 > 0.25f)) { if ((x_210 > 0.25f)) {
int const x_780 = i_2; int const x_780 = i_2;
@ -958,18 +958,18 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
uv[0] = x_782; uv[0] = x_782;
int const x_216 = (*(tint_symbol_84)).numbers.arr[1]; int const x_216 = (*(tint_symbol_84)).numbers.arr[1];
QuicksortObject const x_783 = *(tint_symbol_84); QuicksortObject const x_783 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_61 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_60 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_62 = {.numbers=tint_symbol_61}; QuicksortObject const tint_symbol_61 = {.numbers=tint_symbol_60};
*(tint_symbol_84) = tint_symbol_62; *(tint_symbol_84) = tint_symbol_61;
*(tint_symbol_84) = x_783; *(tint_symbol_84) = x_783;
float2 const x_457 = float2(x_454[0], x_454[0]); float2 const x_457 = float2(x_454[0], x_454[0]);
float2 const x_784 = uv; float2 const x_784 = uv;
uv = float2(0.0f, 0.0f); uv = float2(0.0f, 0.0f);
uv = x_784; uv = x_784;
QuicksortObject const x_785 = *(tint_symbol_84); QuicksortObject const x_785 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_63 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_62 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_64 = {.numbers=tint_symbol_63}; QuicksortObject const tint_symbol_63 = {.numbers=tint_symbol_62};
*(tint_symbol_84) = tint_symbol_64; *(tint_symbol_84) = tint_symbol_63;
*(tint_symbol_84) = x_785; *(tint_symbol_84) = x_785;
float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2()[1]); float2 const x_458 = float2(float3(1.0f, 2.0f, 3.0f)[2], float2()[1]);
int const x_786 = i_2; int const x_786 = i_2;
@ -1087,9 +1087,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
color[0] = 0.0f; color[0] = 0.0f;
color[0] = x_816; color[0] = x_816;
QuicksortObject const x_817 = *(tint_symbol_84); QuicksortObject const x_817 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_65 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_64 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_66 = {.numbers=tint_symbol_65}; QuicksortObject const tint_symbol_65 = {.numbers=tint_symbol_64};
*(tint_symbol_84) = tint_symbol_66; *(tint_symbol_84) = tint_symbol_65;
*(tint_symbol_84) = x_817; *(tint_symbol_84) = x_817;
float3 const x_468 = float3(x_467[0], x_467[0], x_467[0]); float3 const x_468 = float3(x_467[0], x_467[0], x_467[0]);
float const x_818 = uv[0]; float const x_818 = uv[0];
@ -1198,9 +1198,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
uv[0] = x_844; uv[0] = x_844;
float3 const x_482 = float3(x_455[0], x_475[1], x_455[1]); float3 const x_482 = float3(x_455[0], x_475[1], x_455[1]);
QuicksortObject const x_845 = *(tint_symbol_84); QuicksortObject const x_845 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_67 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_66 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_68 = {.numbers=tint_symbol_67}; QuicksortObject const tint_symbol_67 = {.numbers=tint_symbol_66};
*(tint_symbol_84) = tint_symbol_68; *(tint_symbol_84) = tint_symbol_67;
*(tint_symbol_84) = x_845; *(tint_symbol_84) = x_845;
float const x_846 = uv[1]; float const x_846 = uv[1];
uv[1] = 0.0f; uv[1] = 0.0f;
@ -1271,9 +1271,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
(*(tint_symbol_84)).numbers.arr[6u] = x_863; (*(tint_symbol_84)).numbers.arr[6u] = x_863;
float2 const x_490 = float2(x_480[2], x_480[2]); float2 const x_490 = float2(x_480[2], x_480[2]);
QuicksortObject const x_864 = *(tint_symbol_84); QuicksortObject const x_864 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_69 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_68 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_70 = {.numbers=tint_symbol_69}; QuicksortObject const tint_symbol_69 = {.numbers=tint_symbol_68};
*(tint_symbol_84) = tint_symbol_70; *(tint_symbol_84) = tint_symbol_69;
*(tint_symbol_84) = x_864; *(tint_symbol_84) = x_864;
color[1] = (float(x_280) + x_283); color[1] = (float(x_280) + x_283);
float const x_865 = color[0]; float const x_865 = color[0];
@ -1290,9 +1290,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
color[0] = x_867; color[0] = x_867;
float const x_287 = uv[1]; float const x_287 = uv[1];
QuicksortObject const x_868 = *(tint_symbol_84); QuicksortObject const x_868 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_71 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_70 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_72 = {.numbers=tint_symbol_71}; QuicksortObject const tint_symbol_71 = {.numbers=tint_symbol_70};
*(tint_symbol_84) = tint_symbol_72; *(tint_symbol_84) = tint_symbol_71;
*(tint_symbol_84) = x_868; *(tint_symbol_84) = x_868;
float2 const x_493 = float2(x_475[0], x_475[1]); float2 const x_493 = float2(x_475[0], x_475[1]);
float const x_869 = uv[0]; float const x_869 = uv[0];
@ -1452,9 +1452,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_910; uv[0] = x_910;
QuicksortObject const x_911 = *(tint_symbol_84); QuicksortObject const x_911 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_73 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_72 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_74 = {.numbers=tint_symbol_73}; QuicksortObject const tint_symbol_73 = {.numbers=tint_symbol_72};
*(tint_symbol_84) = tint_symbol_74; *(tint_symbol_84) = tint_symbol_73;
*(tint_symbol_84) = x_911; *(tint_symbol_84) = x_911;
float3 const x_513 = float3(x_505[2], x_505[0], x_448[0]); float3 const x_513 = float3(x_505[2], x_505[0], x_448[0]);
int const x_912 = (*(tint_symbol_84)).numbers.arr[8]; int const x_912 = (*(tint_symbol_84)).numbers.arr[8];
@ -1506,14 +1506,14 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
uv[0] = 0.0f; uv[0] = 0.0f;
uv[0] = x_923; uv[0] = x_923;
QuicksortObject const x_924 = *(tint_symbol_84); QuicksortObject const x_924 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_75 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_74 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_76 = {.numbers=tint_symbol_75}; QuicksortObject const tint_symbol_75 = {.numbers=tint_symbol_74};
*(tint_symbol_84) = tint_symbol_76; *(tint_symbol_84) = tint_symbol_75;
*(tint_symbol_84) = x_924; *(tint_symbol_84) = x_924;
QuicksortObject const x_925 = *(tint_symbol_84); QuicksortObject const x_925 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_77 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_76 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_78 = {.numbers=tint_symbol_77}; QuicksortObject const tint_symbol_77 = {.numbers=tint_symbol_76};
*(tint_symbol_84) = tint_symbol_78; *(tint_symbol_84) = tint_symbol_77;
*(tint_symbol_84) = x_925; *(tint_symbol_84) = x_925;
float const x_926 = color[1]; float const x_926 = color[1];
color[1] = 0.0f; color[1] = 0.0f;
@ -1532,9 +1532,9 @@ void main_1(thread QuicksortObject* const tint_symbol_84, thread float4* const t
uv[0] = x_929; uv[0] = x_929;
*(tint_symbol_87) = x_330; *(tint_symbol_87) = x_330;
QuicksortObject const x_930 = *(tint_symbol_84); QuicksortObject const x_930 = *(tint_symbol_84);
tint_array_wrapper const tint_symbol_79 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}}; tint_array_wrapper const tint_symbol_78 = {.arr={0, 0, 0, 0, 0, 0, 0, 0, 0, 0}};
QuicksortObject const tint_symbol_80 = {.numbers=tint_symbol_79}; QuicksortObject const tint_symbol_79 = {.numbers=tint_symbol_78};
*(tint_symbol_84) = tint_symbol_80; *(tint_symbol_84) = tint_symbol_79;
*(tint_symbol_84) = x_930; *(tint_symbol_84) = x_930;
float3 const x_522 = float3(x_330[3], x_330[1], x_493[0]); float3 const x_522 = float3(x_330[3], x_330[1], x_493[0]);
float const x_931 = color[0]; float const x_931 = color[0];
@ -1554,8 +1554,8 @@ struct tint_symbol_1 {
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) { 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; *(tint_symbol_88) = gl_FragCoord_param;
main_1(tint_symbol_89, tint_symbol_88, tint_symbol_90, tint_symbol_91); main_1(tint_symbol_89, tint_symbol_88, tint_symbol_90, tint_symbol_91);
main_out const tint_symbol_2 = {.x_GLF_color_1=*(tint_symbol_91)}; main_out const tint_symbol_80 = {.x_GLF_color_1=*(tint_symbol_91)};
return tint_symbol_2; return tint_symbol_80;
} }
fragment tint_symbol_1 tint_symbol(const constant buf0* tint_symbol_94 [[buffer(0)]], float4 gl_FragCoord_param [[position]]) { fragment tint_symbol_1 tint_symbol(const constant buf0* tint_symbol_94 [[buffer(0)]], float4 gl_FragCoord_param [[position]]) {

View File

@ -57,33 +57,33 @@ void tint_symbol_1(uvec3 GlobalInvocationID) {
vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), 0); vec4 srcColor = texelFetch(src_1, ivec2(srcTexCoord), 0);
vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), 0); vec4 dstColor = texelFetch(dst_1, ivec2(dstTexCoord), 0);
if ((uniforms.channelCount == 2u)) { if ((uniforms.channelCount == 2u)) {
bool tint_tmp_5 = success; bool tint_symbol_3 = success;
if (tint_tmp_5) { if (tint_symbol_3) {
tint_tmp_5 = aboutEqual(dstColor.r, srcColor.r); tint_symbol_3 = aboutEqual(dstColor.r, srcColor.r);
} }
bool tint_tmp_4 = (tint_tmp_5); bool tint_symbol_2 = tint_symbol_3;
if (tint_tmp_4) { if (tint_symbol_2) {
tint_tmp_4 = aboutEqual(dstColor.g, srcColor.g); tint_symbol_2 = aboutEqual(dstColor.g, srcColor.g);
} }
success = (tint_tmp_4); success = tint_symbol_2;
} else { } else {
bool tint_tmp_9 = success; bool tint_symbol_7 = success;
if (tint_tmp_9) { if (tint_symbol_7) {
tint_tmp_9 = aboutEqual(dstColor.r, srcColor.r); tint_symbol_7 = aboutEqual(dstColor.r, srcColor.r);
} }
bool tint_tmp_8 = (tint_tmp_9); bool tint_symbol_6 = tint_symbol_7;
if (tint_tmp_8) { if (tint_symbol_6) {
tint_tmp_8 = aboutEqual(dstColor.g, srcColor.g); tint_symbol_6 = aboutEqual(dstColor.g, srcColor.g);
} }
bool tint_tmp_7 = (tint_tmp_8); bool tint_symbol_5 = tint_symbol_6;
if (tint_tmp_7) { if (tint_symbol_5) {
tint_tmp_7 = aboutEqual(dstColor.b, srcColor.b); tint_symbol_5 = aboutEqual(dstColor.b, srcColor.b);
} }
bool tint_tmp_6 = (tint_tmp_7); bool tint_symbol_4 = tint_symbol_5;
if (tint_tmp_6) { if (tint_symbol_4) {
tint_tmp_6 = aboutEqual(dstColor.a, srcColor.a); tint_symbol_4 = aboutEqual(dstColor.a, srcColor.a);
} }
success = (tint_tmp_6); success = tint_symbol_4;
} }
} }
uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x); uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x);

View File

@ -49,33 +49,33 @@ void main_inner(uint3 GlobalInvocationID) {
const float4 srcColor = src.Load(int3(int2(srcTexCoord), 0)); const float4 srcColor = src.Load(int3(int2(srcTexCoord), 0));
const float4 dstColor = tint_symbol.Load(int3(int2(dstTexCoord), 0)); const float4 dstColor = tint_symbol.Load(int3(int2(dstTexCoord), 0));
if ((uniforms[0].y == 2u)) { if ((uniforms[0].y == 2u)) {
bool tint_tmp_7 = success; bool tint_symbol_4 = success;
if (tint_tmp_7) { if (tint_symbol_4) {
tint_tmp_7 = aboutEqual(dstColor.r, srcColor.r); tint_symbol_4 = aboutEqual(dstColor.r, srcColor.r);
} }
bool tint_tmp_6 = (tint_tmp_7); bool tint_symbol_3 = tint_symbol_4;
if (tint_tmp_6) { if (tint_symbol_3) {
tint_tmp_6 = aboutEqual(dstColor.g, srcColor.g); tint_symbol_3 = aboutEqual(dstColor.g, srcColor.g);
} }
success = (tint_tmp_6); success = tint_symbol_3;
} else { } else {
bool tint_tmp_11 = success; bool tint_symbol_8 = success;
if (tint_tmp_11) { if (tint_symbol_8) {
tint_tmp_11 = aboutEqual(dstColor.r, srcColor.r); tint_symbol_8 = aboutEqual(dstColor.r, srcColor.r);
} }
bool tint_tmp_10 = (tint_tmp_11); bool tint_symbol_7 = tint_symbol_8;
if (tint_tmp_10) { if (tint_symbol_7) {
tint_tmp_10 = aboutEqual(dstColor.g, srcColor.g); tint_symbol_7 = aboutEqual(dstColor.g, srcColor.g);
} }
bool tint_tmp_9 = (tint_tmp_10); bool tint_symbol_6 = tint_symbol_7;
if (tint_tmp_9) { if (tint_symbol_6) {
tint_tmp_9 = aboutEqual(dstColor.b, srcColor.b); tint_symbol_6 = aboutEqual(dstColor.b, srcColor.b);
} }
bool tint_tmp_8 = (tint_tmp_9); bool tint_symbol_5 = tint_symbol_6;
if (tint_tmp_8) { if (tint_symbol_5) {
tint_tmp_8 = aboutEqual(dstColor.a, srcColor.a); tint_symbol_5 = aboutEqual(dstColor.a, srcColor.a);
} }
success = (tint_tmp_8); success = tint_symbol_5;
} }
} }
const uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x); const uint outputIndex = ((GlobalInvocationID.y * uint(dstSize.x)) + GlobalInvocationID.x);

View File

@ -17,37 +17,61 @@ bool aboutEqual(float value, float expect) {
return (fabs((value - expect)) < 0.001f); return (fabs((value - expect)) < 0.001f);
} }
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) { void tint_symbol_inner(uint3 GlobalInvocationID, texture2d<float, access::sample> tint_symbol_7, texture2d<float, access::sample> tint_symbol_8, const constant Uniforms* const tint_symbol_9, device OutputBuf* const tint_symbol_10) {
int2 const srcSize = int2(tint_symbol_1.get_width(), tint_symbol_1.get_height()); int2 const srcSize = int2(tint_symbol_7.get_width(), tint_symbol_7.get_height());
int2 const dstSize = int2(tint_symbol_2.get_width(), tint_symbol_2.get_height()); int2 const dstSize = int2(tint_symbol_8.get_width(), tint_symbol_8.get_height());
uint2 const dstTexCoord = uint2(uint3(GlobalInvocationID).xy); uint2 const dstTexCoord = uint2(uint3(GlobalInvocationID).xy);
float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f); float4 const nonCoveredColor = float4(0.0f, 1.0f, 0.0f, 1.0f);
bool success = true; bool success = true;
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])))) { if (((((dstTexCoord[0] < (*(tint_symbol_9)).dstCopyOrigin[0]) || (dstTexCoord[1] < (*(tint_symbol_9)).dstCopyOrigin[1])) || (dstTexCoord[0] >= ((*(tint_symbol_9)).dstCopyOrigin[0] + (*(tint_symbol_9)).copySize[0]))) || (dstTexCoord[1] >= ((*(tint_symbol_9)).dstCopyOrigin[1] + (*(tint_symbol_9)).copySize[1])))) {
success = (success && all((tint_symbol_2.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor))); success = (success && all((tint_symbol_8.read(uint2(int2(dstTexCoord)), 0) == nonCoveredColor)));
} else { } else {
uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_3)).dstCopyOrigin) + (*(tint_symbol_3)).srcCopyOrigin); uint2 srcTexCoord = ((dstTexCoord - (*(tint_symbol_9)).dstCopyOrigin) + (*(tint_symbol_9)).srcCopyOrigin);
if (((*(tint_symbol_3)).dstTextureFlipY == 1u)) { if (((*(tint_symbol_9)).dstTextureFlipY == 1u)) {
srcTexCoord[1] = ((uint(srcSize[1]) - srcTexCoord[1]) - 1u); srcTexCoord[1] = ((uint(srcSize[1]) - srcTexCoord[1]) - 1u);
} }
float4 const srcColor = tint_symbol_1.read(uint2(int2(srcTexCoord)), 0); float4 const srcColor = tint_symbol_7.read(uint2(int2(srcTexCoord)), 0);
float4 const dstColor = tint_symbol_2.read(uint2(int2(dstTexCoord)), 0); float4 const dstColor = tint_symbol_8.read(uint2(int2(dstTexCoord)), 0);
if (((*(tint_symbol_3)).channelCount == 2u)) { if (((*(tint_symbol_9)).channelCount == 2u)) {
success = ((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1])); bool tint_symbol_2 = success;
if (tint_symbol_2) {
tint_symbol_2 = aboutEqual(dstColor[0], srcColor[0]);
}
bool tint_symbol_1 = tint_symbol_2;
if (tint_symbol_1) {
tint_symbol_1 = aboutEqual(dstColor[1], srcColor[1]);
}
success = tint_symbol_1;
} else { } else {
success = ((((success && aboutEqual(dstColor[0], srcColor[0])) && aboutEqual(dstColor[1], srcColor[1])) && aboutEqual(dstColor[2], srcColor[2])) && aboutEqual(dstColor[3], srcColor[3])); bool tint_symbol_6 = success;
if (tint_symbol_6) {
tint_symbol_6 = aboutEqual(dstColor[0], srcColor[0]);
}
bool tint_symbol_5 = tint_symbol_6;
if (tint_symbol_5) {
tint_symbol_5 = aboutEqual(dstColor[1], srcColor[1]);
}
bool tint_symbol_4 = tint_symbol_5;
if (tint_symbol_4) {
tint_symbol_4 = aboutEqual(dstColor[2], srcColor[2]);
}
bool tint_symbol_3 = tint_symbol_4;
if (tint_symbol_3) {
tint_symbol_3 = aboutEqual(dstColor[3], srcColor[3]);
}
success = tint_symbol_3;
} }
} }
uint const outputIndex = ((GlobalInvocationID[1] * uint(dstSize[0])) + GlobalInvocationID[0]); uint const outputIndex = ((GlobalInvocationID[1] * uint(dstSize[0])) + GlobalInvocationID[0]);
if (success) { if (success) {
(*(tint_symbol_4)).result[outputIndex] = 1u; (*(tint_symbol_10)).result[outputIndex] = 1u;
} else { } else {
(*(tint_symbol_4)).result[outputIndex] = 0u; (*(tint_symbol_10)).result[outputIndex] = 0u;
} }
} }
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]]) { kernel void tint_symbol(texture2d<float, access::sample> tint_symbol_11 [[texture(0)]], texture2d<float, access::sample> tint_symbol_12 [[texture(1)]], const constant Uniforms* tint_symbol_13 [[buffer(0)]], device OutputBuf* tint_symbol_14 [[buffer(1)]], uint3 GlobalInvocationID [[thread_position_in_grid]]) {
tint_symbol_inner(GlobalInvocationID, tint_symbol_5, tint_symbol_6, tint_symbol_7, tint_symbol_8); tint_symbol_inner(GlobalInvocationID, tint_symbol_11, tint_symbol_12, tint_symbol_13, tint_symbol_14);
return; return;
} }

View File

@ -1,7 +1,7 @@
; SPIR-V ; SPIR-V
; Version: 1.3 ; Version: 1.3
; Generator: Google Tint Compiler; 0 ; Generator: Google Tint Compiler; 0
; Bound: 193 ; Bound: 205
; Schema: 0 ; Schema: 0
OpCapability Shader OpCapability Shader
OpCapability ImageQuery OpCapability ImageQuery
@ -29,6 +29,12 @@
OpName %GlobalInvocationID "GlobalInvocationID" OpName %GlobalInvocationID "GlobalInvocationID"
OpName %success "success" OpName %success "success"
OpName %srcTexCoord "srcTexCoord" OpName %srcTexCoord "srcTexCoord"
OpName %tint_symbol_1 "tint_symbol_1"
OpName %tint_symbol "tint_symbol"
OpName %tint_symbol_5 "tint_symbol_5"
OpName %tint_symbol_4 "tint_symbol_4"
OpName %tint_symbol_3 "tint_symbol_3"
OpName %tint_symbol_2 "tint_symbol_2"
OpName %main "main" OpName %main "main"
OpDecorate %GlobalInvocationID_1 BuiltIn GlobalInvocationId OpDecorate %GlobalInvocationID_1 BuiltIn GlobalInvocationId
OpDecorate %src DescriptorSet 0 OpDecorate %src DescriptorSet 0
@ -93,7 +99,7 @@
%110 = OpConstantNull %v2uint %110 = OpConstantNull %v2uint
%_ptr_Function_uint = OpTypePointer Function %uint %_ptr_Function_uint = OpTypePointer Function %uint
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%188 = OpTypeFunction %void %200 = OpTypeFunction %void
%aboutEqual = OpFunction %bool None %18 %aboutEqual = OpFunction %bool None %18
%value = OpFunctionParameter %float %value = OpFunctionParameter %float
%expect = OpFunctionParameter %float %expect = OpFunctionParameter %float
@ -108,6 +114,12 @@
%33 = OpLabel %33 = OpLabel
%success = OpVariable %_ptr_Function_bool Function %50 %success = OpVariable %_ptr_Function_bool Function %50
%srcTexCoord = OpVariable %_ptr_Function_v2uint Function %110 %srcTexCoord = OpVariable %_ptr_Function_v2uint Function %110
%tint_symbol_1 = OpVariable %_ptr_Function_bool Function %50
%tint_symbol = OpVariable %_ptr_Function_bool Function %50
%tint_symbol_5 = OpVariable %_ptr_Function_bool Function %50
%tint_symbol_4 = OpVariable %_ptr_Function_bool Function %50
%tint_symbol_3 = OpVariable %_ptr_Function_bool Function %50
%tint_symbol_2 = OpVariable %_ptr_Function_bool Function %50
%37 = OpLoad %7 %src %37 = OpLoad %7 %src
%34 = OpImageQuerySizeLod %v2int %37 %int_0 %34 = OpImageQuerySizeLod %v2int %37 %int_0
%40 = OpLoad %7 %dst %40 = OpLoad %7 %dst
@ -209,92 +221,110 @@
OpBranchConditional %133 %135 %136 OpBranchConditional %133 %135 %136
%135 = OpLabel %135 = OpLabel
%137 = OpLoad %bool %success %137 = OpLoad %bool %success
OpSelectionMerge %138 None OpStore %tint_symbol_1 %137
OpBranchConditional %137 %139 %138 %139 = OpLoad %bool %tint_symbol_1
%139 = OpLabel OpSelectionMerge %140 None
%141 = OpCompositeExtract %float %128 0 OpBranchConditional %139 %141 %140
%142 = OpCompositeExtract %float %124 0 %141 = OpLabel
%140 = OpFunctionCall %bool %aboutEqual %141 %142 %143 = OpCompositeExtract %float %128 0
OpBranch %138 %144 = OpCompositeExtract %float %124 0
%138 = OpLabel %142 = OpFunctionCall %bool %aboutEqual %143 %144
%143 = OpPhi %bool %137 %135 %140 %139 OpStore %tint_symbol_1 %142
OpSelectionMerge %144 None OpBranch %140
OpBranchConditional %143 %145 %144 %140 = OpLabel
%145 = OpLabel %145 = OpLoad %bool %tint_symbol_1
%147 = OpCompositeExtract %float %128 1 OpStore %tint_symbol %145
%148 = OpCompositeExtract %float %124 1 %147 = OpLoad %bool %tint_symbol
%146 = OpFunctionCall %bool %aboutEqual %147 %148 OpSelectionMerge %148 None
OpBranch %144 OpBranchConditional %147 %149 %148
%144 = OpLabel %149 = OpLabel
%149 = OpPhi %bool %143 %138 %146 %145 %151 = OpCompositeExtract %float %128 1
OpStore %success %149 %152 = OpCompositeExtract %float %124 1
%150 = OpFunctionCall %bool %aboutEqual %151 %152
OpStore %tint_symbol %150
OpBranch %148
%148 = OpLabel
%153 = OpLoad %bool %tint_symbol
OpStore %success %153
OpBranch %134 OpBranch %134
%136 = OpLabel %136 = OpLabel
%150 = OpLoad %bool %success %154 = OpLoad %bool %success
OpSelectionMerge %151 None OpStore %tint_symbol_5 %154
OpBranchConditional %150 %152 %151 %156 = OpLoad %bool %tint_symbol_5
%152 = OpLabel
%154 = OpCompositeExtract %float %128 0
%155 = OpCompositeExtract %float %124 0
%153 = OpFunctionCall %bool %aboutEqual %154 %155
OpBranch %151
%151 = OpLabel
%156 = OpPhi %bool %150 %136 %153 %152
OpSelectionMerge %157 None OpSelectionMerge %157 None
OpBranchConditional %156 %158 %157 OpBranchConditional %156 %158 %157
%158 = OpLabel %158 = OpLabel
%160 = OpCompositeExtract %float %128 1 %160 = OpCompositeExtract %float %128 0
%161 = OpCompositeExtract %float %124 1 %161 = OpCompositeExtract %float %124 0
%159 = OpFunctionCall %bool %aboutEqual %160 %161 %159 = OpFunctionCall %bool %aboutEqual %160 %161
OpStore %tint_symbol_5 %159
OpBranch %157 OpBranch %157
%157 = OpLabel %157 = OpLabel
%162 = OpPhi %bool %156 %151 %159 %158 %162 = OpLoad %bool %tint_symbol_5
OpSelectionMerge %163 None OpStore %tint_symbol_4 %162
OpBranchConditional %162 %164 %163 %164 = OpLoad %bool %tint_symbol_4
%164 = OpLabel OpSelectionMerge %165 None
%166 = OpCompositeExtract %float %128 2 OpBranchConditional %164 %166 %165
%167 = OpCompositeExtract %float %124 2 %166 = OpLabel
%165 = OpFunctionCall %bool %aboutEqual %166 %167 %168 = OpCompositeExtract %float %128 1
OpBranch %163 %169 = OpCompositeExtract %float %124 1
%163 = OpLabel %167 = OpFunctionCall %bool %aboutEqual %168 %169
%168 = OpPhi %bool %162 %157 %165 %164 OpStore %tint_symbol_4 %167
OpSelectionMerge %169 None OpBranch %165
OpBranchConditional %168 %170 %169 %165 = OpLabel
%170 = OpLabel %170 = OpLoad %bool %tint_symbol_4
%172 = OpCompositeExtract %float %128 3 OpStore %tint_symbol_3 %170
%173 = OpCompositeExtract %float %124 3 %172 = OpLoad %bool %tint_symbol_3
%171 = OpFunctionCall %bool %aboutEqual %172 %173 OpSelectionMerge %173 None
OpBranch %169 OpBranchConditional %172 %174 %173
%169 = OpLabel %174 = OpLabel
%174 = OpPhi %bool %168 %163 %171 %170 %176 = OpCompositeExtract %float %128 2
OpStore %success %174 %177 = OpCompositeExtract %float %124 2
%175 = OpFunctionCall %bool %aboutEqual %176 %177
OpStore %tint_symbol_3 %175
OpBranch %173
%173 = OpLabel
%178 = OpLoad %bool %tint_symbol_3
OpStore %tint_symbol_2 %178
%180 = OpLoad %bool %tint_symbol_2
OpSelectionMerge %181 None
OpBranchConditional %180 %182 %181
%182 = OpLabel
%184 = OpCompositeExtract %float %128 3
%185 = OpCompositeExtract %float %124 3
%183 = OpFunctionCall %bool %aboutEqual %184 %185
OpStore %tint_symbol_2 %183
OpBranch %181
%181 = OpLabel
%186 = OpLoad %bool %tint_symbol_2
OpStore %success %186
OpBranch %134 OpBranch %134
%134 = OpLabel %134 = OpLabel
OpBranch %87 OpBranch %87
%87 = OpLabel %87 = OpLabel
%175 = OpCompositeExtract %uint %GlobalInvocationID 1 %187 = OpCompositeExtract %uint %GlobalInvocationID 1
%177 = OpCompositeExtract %int %39 0 %189 = OpCompositeExtract %int %39 0
%176 = OpBitcast %uint %177 %188 = OpBitcast %uint %189
%178 = OpIMul %uint %175 %176 %190 = OpIMul %uint %187 %188
%179 = OpCompositeExtract %uint %GlobalInvocationID 0 %191 = OpCompositeExtract %uint %GlobalInvocationID 0
%180 = OpIAdd %uint %178 %179 %192 = OpIAdd %uint %190 %191
%181 = OpLoad %bool %success %193 = OpLoad %bool %success
OpSelectionMerge %182 None OpSelectionMerge %194 None
OpBranchConditional %181 %183 %184 OpBranchConditional %193 %195 %196
%183 = OpLabel %195 = OpLabel
%186 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %180 %198 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %192
OpStore %186 %uint_1 OpStore %198 %uint_1
OpBranch %182 OpBranch %194
%184 = OpLabel %196 = OpLabel
%187 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %180 %199 = OpAccessChain %_ptr_StorageBuffer_uint %output %uint_0 %192
OpStore %187 %uint_0 OpStore %199 %uint_0
OpBranch %182 OpBranch %194
%182 = OpLabel %194 = OpLabel
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %188 %main = OpFunction %void None %200
%190 = OpLabel %202 = OpLabel
%192 = OpLoad %v3uint %GlobalInvocationID_1 %204 = OpLoad %v3uint %GlobalInvocationID_1
%191 = OpFunctionCall %void %main_inner %192 %203 = OpFunctionCall %void %main_inner %204
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -96,7 +96,8 @@ void tint_symbol(uvec3 local_id, uvec3 global_id, uint local_invocation_index) {
for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
uint inputRow = (tileRow + innerRow); uint inputRow = (tileRow + innerRow);
uint inputCol = (tileColA + innerCol); uint inputCol = (tileColA + innerCol);
mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol)); float tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
mm_Asub[inputRow][inputCol] = tint_symbol_1;
} }
} }
} }
@ -107,7 +108,8 @@ void tint_symbol(uvec3 local_id, uvec3 global_id, uint local_invocation_index) {
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
uint inputRow = (tileRowB + innerRow); uint inputRow = (tileRowB + innerRow);
uint inputCol = (tileCol + innerCol); uint inputCol = (tileCol + innerCol);
mm_Bsub[innerCol][inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol)); float tint_symbol_2 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
mm_Bsub[innerCol][inputCol] = tint_symbol_2;
} }
} }
} }

View File

@ -89,7 +89,8 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
[loop] for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) { [loop] for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
const uint inputRow = (tileRow + innerRow); const uint inputRow = (tileRow + innerRow);
const uint inputCol = (tileColA + innerCol); const uint inputCol = (tileColA + innerCol);
mm_Asub[inputRow][inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol)); const float tint_symbol_2 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol));
mm_Asub[inputRow][inputCol] = tint_symbol_2;
} }
} }
} }
@ -100,7 +101,8 @@ void main_inner(uint3 local_id, uint3 global_id, uint local_invocation_index) {
[loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) { [loop] for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
const uint inputRow = (tileRowB + innerRow); const uint inputRow = (tileRowB + innerRow);
const uint inputCol = (tileCol + innerCol); const uint inputCol = (tileCol + innerCol);
mm_Bsub[innerCol][inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol)); const float tint_symbol_3 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol));
mm_Bsub[innerCol][inputCol] = tint_symbol_3;
} }
} }
} }

View File

@ -11,26 +11,26 @@ struct Matrix {
/* 0x0000 */ float numbers[1]; /* 0x0000 */ float numbers[1];
}; };
float mm_readA(uint row, uint col, const constant Uniforms* const tint_symbol_1, const device Matrix* const tint_symbol_2) { float mm_readA(uint row, uint col, const constant Uniforms* const tint_symbol_3, const device Matrix* const tint_symbol_4) {
if (((row < (*(tint_symbol_1)).dimAOuter) && (col < (*(tint_symbol_1)).dimInner))) { if (((row < (*(tint_symbol_3)).dimAOuter) && (col < (*(tint_symbol_3)).dimInner))) {
float const result = (*(tint_symbol_2)).numbers[((row * (*(tint_symbol_1)).dimInner) + col)]; float const result = (*(tint_symbol_4)).numbers[((row * (*(tint_symbol_3)).dimInner) + col)];
return result; return result;
} }
return 0.0f; return 0.0f;
} }
float mm_readB(uint row, uint col, const constant Uniforms* const tint_symbol_3, const device Matrix* const tint_symbol_4) { float mm_readB(uint row, uint col, const constant Uniforms* const tint_symbol_5, const device Matrix* const tint_symbol_6) {
if (((row < (*(tint_symbol_3)).dimInner) && (col < (*(tint_symbol_3)).dimBOuter))) { if (((row < (*(tint_symbol_5)).dimInner) && (col < (*(tint_symbol_5)).dimBOuter))) {
float const result = (*(tint_symbol_4)).numbers[((row * (*(tint_symbol_3)).dimBOuter) + col)]; float const result = (*(tint_symbol_6)).numbers[((row * (*(tint_symbol_5)).dimBOuter) + col)];
return result; return result;
} }
return 0.0f; return 0.0f;
} }
void mm_write(uint row, uint col, float value, const constant Uniforms* const tint_symbol_5, device Matrix* const tint_symbol_6) { void mm_write(uint row, uint col, float value, const constant Uniforms* const tint_symbol_7, device Matrix* const tint_symbol_8) {
if (((row < (*(tint_symbol_5)).dimAOuter) && (col < (*(tint_symbol_5)).dimBOuter))) { if (((row < (*(tint_symbol_7)).dimAOuter) && (col < (*(tint_symbol_7)).dimBOuter))) {
uint const index = (col + (row * (*(tint_symbol_5)).dimBOuter)); uint const index = (col + (row * (*(tint_symbol_7)).dimBOuter));
(*(tint_symbol_6)).numbers[index] = value; (*(tint_symbol_8)).numbers[index] = value;
} }
} }
@ -60,19 +60,19 @@ struct tint_array_wrapper_3 {
float arr[4]; float arr[4];
}; };
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) { void tint_symbol_inner(uint3 local_id, uint3 global_id, uint local_invocation_index, threadgroup tint_array_wrapper* const tint_symbol_9, threadgroup tint_array_wrapper* const tint_symbol_10, const constant Uniforms* const tint_symbol_11, const device Matrix* const tint_symbol_12, const device Matrix* const tint_symbol_13, device Matrix* const tint_symbol_14) {
for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 256u)) { for(uint idx = local_invocation_index; (idx < 4096u); idx = (idx + 256u)) {
uint const i = (idx / 64u); uint const i = (idx / 64u);
uint const i_1 = (idx % 64u); uint const i_1 = (idx % 64u);
(*(tint_symbol_7)).arr[i].arr[i_1] = float(); (*(tint_symbol_9)).arr[i].arr[i_1] = float();
(*(tint_symbol_8)).arr[i].arr[i_1] = float(); (*(tint_symbol_10)).arr[i].arr[i_1] = float();
} }
threadgroup_barrier(mem_flags::mem_threadgroup); threadgroup_barrier(mem_flags::mem_threadgroup);
uint const tileRow = (local_id[1] * RowPerThread); uint const tileRow = (local_id[1] * RowPerThread);
uint const tileCol = (local_id[0] * ColPerThread); uint const tileCol = (local_id[0] * ColPerThread);
uint const globalRow = (global_id[1] * RowPerThread); uint const globalRow = (global_id[1] * RowPerThread);
uint const globalCol = (global_id[0] * ColPerThread); uint const globalCol = (global_id[0] * ColPerThread);
uint const numTiles = ((((*(tint_symbol_9)).dimInner - 1u) / TileInner) + 1u); uint const numTiles = ((((*(tint_symbol_11)).dimInner - 1u) / TileInner) + 1u);
tint_array_wrapper_2 acc = {}; tint_array_wrapper_2 acc = {};
float ACached = 0.0f; float ACached = 0.0f;
tint_array_wrapper_3 BCached = {}; tint_array_wrapper_3 BCached = {};
@ -88,23 +88,25 @@ void tint_symbol_inner(uint3 local_id, uint3 global_id, uint local_invocation_in
for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThreadA); innerCol = (innerCol + 1u)) {
uint const inputRow = (tileRow + innerRow); uint const inputRow = (tileRow + innerRow);
uint const inputCol = (tileColA + innerCol); uint const inputCol = (tileColA + innerCol);
(*(tint_symbol_7)).arr[inputRow].arr[inputCol] = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol), tint_symbol_9, tint_symbol_10); float const tint_symbol_1 = mm_readA((globalRow + innerRow), ((t * TileInner) + inputCol), tint_symbol_11, tint_symbol_12);
(*(tint_symbol_9)).arr[inputRow].arr[inputCol] = tint_symbol_1;
} }
} }
for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) { for(uint innerRow = 0u; (innerRow < RowPerThreadB); innerRow = (innerRow + 1u)) {
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
uint const inputRow = (tileRowB + innerRow); uint const inputRow = (tileRowB + innerRow);
uint const inputCol = (tileCol + innerCol); uint const inputCol = (tileCol + innerCol);
(*(tint_symbol_8)).arr[innerCol].arr[inputCol] = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol), tint_symbol_9, tint_symbol_11); float const tint_symbol_2 = mm_readB(((t * TileInner) + inputRow), (globalCol + innerCol), tint_symbol_11, tint_symbol_13);
(*(tint_symbol_10)).arr[innerCol].arr[inputCol] = tint_symbol_2;
} }
} }
threadgroup_barrier(mem_flags::mem_threadgroup); threadgroup_barrier(mem_flags::mem_threadgroup);
for(uint k = 0u; (k < TileInner); k = (k + 1u)) { for(uint k = 0u; (k < TileInner); k = (k + 1u)) {
for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) { for(uint inner = 0u; (inner < ColPerThread); inner = (inner + 1u)) {
BCached.arr[inner] = (*(tint_symbol_8)).arr[k].arr[(tileCol + inner)]; BCached.arr[inner] = (*(tint_symbol_10)).arr[k].arr[(tileCol + inner)];
} }
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) { for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
ACached = (*(tint_symbol_7)).arr[(tileRow + innerRow)].arr[k]; ACached = (*(tint_symbol_9)).arr[(tileRow + innerRow)].arr[k];
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
uint const index = ((innerRow * ColPerThread) + innerCol); uint const index = ((innerRow * ColPerThread) + innerCol);
acc.arr[index] = (acc.arr[index] + (ACached * BCached.arr[innerCol])); acc.arr[index] = (acc.arr[index] + (ACached * BCached.arr[innerCol]));
@ -116,15 +118,15 @@ void tint_symbol_inner(uint3 local_id, uint3 global_id, uint local_invocation_in
for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) { for(uint innerRow = 0u; (innerRow < RowPerThread); innerRow = (innerRow + 1u)) {
for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) { for(uint innerCol = 0u; (innerCol < ColPerThread); innerCol = (innerCol + 1u)) {
uint const index = ((innerRow * ColPerThread) + innerCol); uint const index = ((innerRow * ColPerThread) + innerCol);
mm_write((globalRow + innerRow), (globalCol + innerCol), acc.arr[index], tint_symbol_9, tint_symbol_12); mm_write((globalRow + innerRow), (globalCol + innerCol), acc.arr[index], tint_symbol_11, tint_symbol_14);
} }
} }
} }
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]]) { kernel void tint_symbol(const constant Uniforms* tint_symbol_17 [[buffer(0)]], const device Matrix* tint_symbol_18 [[buffer(2)]], const device Matrix* tint_symbol_19 [[buffer(3)]], device Matrix* tint_symbol_20 [[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_15;
threadgroup tint_array_wrapper tint_symbol_14; threadgroup tint_array_wrapper tint_symbol_16;
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); tint_symbol_inner(local_id, global_id, local_invocation_index, &(tint_symbol_15), &(tint_symbol_16), tint_symbol_17, tint_symbol_18, tint_symbol_19, tint_symbol_20);
return; return;
} }

View File

@ -364,14 +364,14 @@
%206 = OpIAdd %uint %131 %205 %206 = OpIAdd %uint %131 %205
%207 = OpLoad %uint %innerCol %207 = OpLoad %uint %innerCol
%208 = OpIAdd %uint %171 %207 %208 = OpIAdd %uint %171 %207
%209 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %206 %208 %210 = OpLoad %uint %innerRow
%211 = OpLoad %uint %innerRow %211 = OpIAdd %uint %135 %210
%212 = OpIAdd %uint %135 %211 %212 = OpLoad %uint %t
%213 = OpLoad %uint %t %213 = OpIMul %uint %212 %TileAOuter
%214 = OpIMul %uint %213 %TileAOuter %214 = OpIAdd %uint %213 %208
%215 = OpIAdd %uint %214 %208 %209 = OpFunctionCall %float %mm_readA %211 %214
%210 = OpFunctionCall %float %mm_readA %212 %215 %215 = OpAccessChain %_ptr_Workgroup_float %mm_Asub %206 %208
OpStore %209 %210 OpStore %215 %209
OpBranch %198 OpBranch %198
%198 = OpLabel %198 = OpLabel
%216 = OpLoad %uint %innerCol %216 = OpLoad %uint %innerCol
@ -418,15 +418,15 @@
%241 = OpIAdd %uint %174 %240 %241 = OpIAdd %uint %174 %240
%242 = OpLoad %uint %innerCol_0 %242 = OpLoad %uint %innerCol_0
%243 = OpIAdd %uint %133 %242 %243 = OpIAdd %uint %133 %242
%244 = OpLoad %uint %innerCol_0 %245 = OpLoad %uint %t
%245 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %244 %243 %246 = OpIMul %uint %245 %TileAOuter
%247 = OpLoad %uint %t %247 = OpIAdd %uint %246 %241
%248 = OpIMul %uint %247 %TileAOuter %248 = OpLoad %uint %innerCol_0
%249 = OpIAdd %uint %248 %241 %249 = OpIAdd %uint %137 %248
%244 = OpFunctionCall %float %mm_readB %247 %249
%250 = OpLoad %uint %innerCol_0 %250 = OpLoad %uint %innerCol_0
%251 = OpIAdd %uint %137 %250 %251 = OpAccessChain %_ptr_Workgroup_float %mm_Bsub %250 %243
%246 = OpFunctionCall %float %mm_readB %249 %251 OpStore %251 %244
OpStore %245 %246
OpBranch %233 OpBranch %233
%233 = OpLabel %233 = OpLabel
%252 = OpLoad %uint %innerCol_0 %252 = OpLoad %uint %innerCol_0

View File

@ -16,7 +16,8 @@ layout(binding = 0, std430) buffer S_1 {
uint i; uint i;
} io; } io;
void tint_symbol(uint idx) { void tint_symbol(uint idx) {
io.v = Bad(io.i, io.v); vec3 tint_symbol_1 = Bad(io.i, io.v);
io.v = tint_symbol_1;
} }
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

View File

@ -15,7 +15,8 @@ struct tint_symbol_1 {
}; };
void main_inner(uint idx) { void main_inner(uint idx) {
io.Store3(0u, asuint(Bad(io.Load(12u), asfloat(io.Load3(0u))))); const float3 tint_symbol_2 = Bad(io.Load(12u), asfloat(io.Load3(0u)));
io.Store3(0u, asuint(tint_symbol_2));
} }
[numthreads(1, 1, 1)] [numthreads(1, 1, 1)]

View File

@ -23,12 +23,13 @@ struct S {
/* 0x000c */ uint i; /* 0x000c */ uint i;
}; };
void tint_symbol_inner(uint idx, device S* const tint_symbol_1) { void tint_symbol_inner(uint idx, device S* const tint_symbol_2) {
(*(tint_symbol_1)).v = Bad((*(tint_symbol_1)).i, (*(tint_symbol_1)).v); float3 const tint_symbol_1 = Bad((*(tint_symbol_2)).i, (*(tint_symbol_2)).v);
(*(tint_symbol_2)).v = tint_symbol_1;
} }
kernel void tint_symbol(device S* tint_symbol_2 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) { kernel void tint_symbol(device S* tint_symbol_3 [[buffer(0)]], uint idx [[thread_index_in_threadgroup]]) {
tint_symbol_inner(idx, tint_symbol_2); tint_symbol_inner(idx, tint_symbol_3);
return; return;
} }

View File

@ -42,10 +42,10 @@
%_ptr_Function_float = OpTypePointer Function %float %_ptr_Function_float = OpTypePointer Function %float
%void = OpTypeVoid %void = OpTypeVoid
%27 = OpTypeFunction %void %uint %27 = OpTypeFunction %void %uint
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
%uint_1 = OpConstant %uint 1 %uint_1 = OpConstant %uint 1
%_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint %_ptr_StorageBuffer_uint = OpTypePointer StorageBuffer %uint
%uint_0 = OpConstant %uint 0
%_ptr_StorageBuffer_v3float = OpTypePointer StorageBuffer %v3float
%42 = OpTypeFunction %void %42 = OpTypeFunction %void
%Bad = OpFunction %v3float None %9 %Bad = OpFunction %v3float None %9
%index = OpFunctionParameter %uint %index = OpFunctionParameter %uint
@ -65,13 +65,13 @@
%main_inner = OpFunction %void None %27 %main_inner = OpFunction %void None %27
%idx = OpFunctionParameter %uint %idx = OpFunctionParameter %uint
%31 = OpLabel %31 = OpLabel
%34 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0 %35 = OpAccessChain %_ptr_StorageBuffer_uint %io %uint_1
%38 = OpAccessChain %_ptr_StorageBuffer_uint %io %uint_1 %36 = OpLoad %uint %35
%39 = OpLoad %uint %38 %39 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
%40 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0 %40 = OpLoad %v3float %39
%41 = OpLoad %v3float %40 %32 = OpFunctionCall %v3float %Bad %36 %40
%35 = OpFunctionCall %v3float %Bad %39 %41 %41 = OpAccessChain %_ptr_StorageBuffer_v3float %io %uint_0
OpStore %34 %35 OpStore %41 %32
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %42 %main = OpFunction %void None %42

View File

@ -27,7 +27,9 @@ int runTest() {
} }
void tint_symbol() { void tint_symbol() {
result.value = uint(runTest()); int tint_symbol_1 = runTest();
uint tint_symbol_2 = uint(tint_symbol_1);
result.value = tint_symbol_2;
} }
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

View File

@ -18,6 +18,8 @@ int runTest() {
[numthreads(1, 1, 1)] [numthreads(1, 1, 1)]
void main() { void main() {
result.Store(0u, asuint(uint(runTest()))); const int tint_symbol = runTest();
const uint tint_symbol_1 = uint(tint_symbol);
result.Store(0u, asuint(tint_symbol_1));
return; return;
} }

View File

@ -17,12 +17,14 @@ struct TestData {
/* 0x0000 */ tint_array_wrapper data; /* 0x0000 */ tint_array_wrapper data;
}; };
int runTest(device TestData* const tint_symbol_1, const constant Constants* const tint_symbol_2) { int runTest(device TestData* const tint_symbol_3, const constant Constants* const tint_symbol_4) {
return atomic_load_explicit(&((*(tint_symbol_1)).data.arr[(0u + uint((*(tint_symbol_2)).zero))]), memory_order_relaxed); return atomic_load_explicit(&((*(tint_symbol_3)).data.arr[(0u + uint((*(tint_symbol_4)).zero))]), memory_order_relaxed);
} }
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)]]) { kernel void tint_symbol(device TestData* tint_symbol_5 [[buffer(2)]], const constant Constants* tint_symbol_6 [[buffer(0)]], device Result* tint_symbol_7 [[buffer(1)]]) {
(*(tint_symbol_3)).value = uint(runTest(tint_symbol_4, tint_symbol_5)); int const tint_symbol_1 = runTest(tint_symbol_5, tint_symbol_6);
uint const tint_symbol_2 = uint(tint_symbol_1);
(*(tint_symbol_7)).value = tint_symbol_2;
return; return;
} }

View File

@ -65,9 +65,9 @@
OpFunctionEnd OpFunctionEnd
%main = OpFunction %void None %28 %main = OpFunction %void None %28
%31 = OpLabel %31 = OpLabel
%33 = OpAccessChain %_ptr_StorageBuffer_uint %result %uint_0 %32 = OpFunctionCall %int %runTest
%35 = OpFunctionCall %int %runTest %33 = OpBitcast %uint %32
%34 = OpBitcast %uint %35 %35 = OpAccessChain %_ptr_StorageBuffer_uint %result %uint_0
OpStore %33 %34 OpStore %35 %33
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -9,8 +9,11 @@ bool get_bool() {
} }
void f() { void f() {
bvec2 v2 = bvec2(get_bool()); bool tint_symbol = get_bool();
bvec3 v3 = bvec3(get_bool()); bvec2 v2 = bvec2(tint_symbol);
bvec4 v4 = bvec4(get_bool()); bool tint_symbol_1 = get_bool();
bvec3 v3 = bvec3(tint_symbol_1);
bool tint_symbol_2 = get_bool();
bvec4 v4 = bvec4(tint_symbol_2);
} }

View File

@ -8,7 +8,10 @@ bool get_bool() {
} }
void f() { void f() {
bool2 v2 = bool2((get_bool()).xx); const bool tint_symbol = get_bool();
bool3 v3 = bool3((get_bool()).xxx); bool2 v2 = bool2((tint_symbol).xx);
bool4 v4 = bool4((get_bool()).xxxx); const bool tint_symbol_1 = get_bool();
bool3 v3 = bool3((tint_symbol_1).xxx);
const bool tint_symbol_2 = get_bool();
bool4 v4 = bool4((tint_symbol_2).xxxx);
} }

View File

@ -6,8 +6,11 @@ bool get_bool() {
} }
void f() { void f() {
bool2 v2 = bool2(get_bool()); bool const tint_symbol = get_bool();
bool3 v3 = bool3(get_bool()); bool2 v2 = bool2(tint_symbol);
bool4 v4 = bool4(get_bool()); bool const tint_symbol_1 = get_bool();
bool3 v3 = bool3(tint_symbol_1);
bool const tint_symbol_2 = get_bool();
bool4 v4 = bool4(tint_symbol_2);
} }

View File

@ -40,14 +40,14 @@
%v2 = OpVariable %_ptr_Function_v2bool Function %17 %v2 = OpVariable %_ptr_Function_v2bool Function %17
%v3 = OpVariable %_ptr_Function_v3bool Function %23 %v3 = OpVariable %_ptr_Function_v3bool Function %23
%v4 = OpVariable %_ptr_Function_v4bool Function %29 %v4 = OpVariable %_ptr_Function_v4bool Function %29
%13 = OpFunctionCall %bool %get_bool %12 = OpFunctionCall %bool %get_bool
%14 = OpCompositeConstruct %v2bool %13 %13 %14 = OpCompositeConstruct %v2bool %12 %12
OpStore %v2 %14 OpStore %v2 %14
%19 = OpFunctionCall %bool %get_bool %18 = OpFunctionCall %bool %get_bool
%20 = OpCompositeConstruct %v3bool %19 %19 %19 %20 = OpCompositeConstruct %v3bool %18 %18 %18
OpStore %v3 %20 OpStore %v3 %20
%25 = OpFunctionCall %bool %get_bool %24 = OpFunctionCall %bool %get_bool
%26 = OpCompositeConstruct %v4bool %25 %25 %25 %25 %26 = OpCompositeConstruct %v4bool %24 %24 %24 %24
OpStore %v4 %26 OpStore %v4 %26
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -9,8 +9,11 @@ float get_f32() {
} }
void f() { void f() {
vec2 v2 = vec2(get_f32()); float tint_symbol = get_f32();
vec3 v3 = vec3(get_f32()); vec2 v2 = vec2(tint_symbol);
vec4 v4 = vec4(get_f32()); float tint_symbol_1 = get_f32();
vec3 v3 = vec3(tint_symbol_1);
float tint_symbol_2 = get_f32();
vec4 v4 = vec4(tint_symbol_2);
} }

View File

@ -8,7 +8,10 @@ float get_f32() {
} }
void f() { void f() {
float2 v2 = float2((get_f32()).xx); const float tint_symbol = get_f32();
float3 v3 = float3((get_f32()).xxx); float2 v2 = float2((tint_symbol).xx);
float4 v4 = float4((get_f32()).xxxx); const float tint_symbol_1 = get_f32();
float3 v3 = float3((tint_symbol_1).xxx);
const float tint_symbol_2 = get_f32();
float4 v4 = float4((tint_symbol_2).xxxx);
} }

View File

@ -6,8 +6,11 @@ float get_f32() {
} }
void f() { void f() {
float2 v2 = float2(get_f32()); float const tint_symbol = get_f32();
float3 v3 = float3(get_f32()); float2 v2 = float2(tint_symbol);
float4 v4 = float4(get_f32()); float const tint_symbol_1 = get_f32();
float3 v3 = float3(tint_symbol_1);
float const tint_symbol_2 = get_f32();
float4 v4 = float4(tint_symbol_2);
} }

View File

@ -40,14 +40,14 @@
%v2 = OpVariable %_ptr_Function_v2float Function %17 %v2 = OpVariable %_ptr_Function_v2float Function %17
%v3 = OpVariable %_ptr_Function_v3float Function %23 %v3 = OpVariable %_ptr_Function_v3float Function %23
%v4 = OpVariable %_ptr_Function_v4float Function %29 %v4 = OpVariable %_ptr_Function_v4float Function %29
%13 = OpFunctionCall %float %get_f32 %12 = OpFunctionCall %float %get_f32
%14 = OpCompositeConstruct %v2float %13 %13 %14 = OpCompositeConstruct %v2float %12 %12
OpStore %v2 %14 OpStore %v2 %14
%19 = OpFunctionCall %float %get_f32 %18 = OpFunctionCall %float %get_f32
%20 = OpCompositeConstruct %v3float %19 %19 %19 %20 = OpCompositeConstruct %v3float %18 %18 %18
OpStore %v3 %20 OpStore %v3 %20
%25 = OpFunctionCall %float %get_f32 %24 = OpFunctionCall %float %get_f32
%26 = OpCompositeConstruct %v4float %25 %25 %25 %25 %26 = OpCompositeConstruct %v4float %24 %24 %24 %24
OpStore %v4 %26 OpStore %v4 %26
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -9,8 +9,11 @@ int get_i32() {
} }
void f() { void f() {
ivec2 v2 = ivec2(get_i32()); int tint_symbol = get_i32();
ivec3 v3 = ivec3(get_i32()); ivec2 v2 = ivec2(tint_symbol);
ivec4 v4 = ivec4(get_i32()); int tint_symbol_1 = get_i32();
ivec3 v3 = ivec3(tint_symbol_1);
int tint_symbol_2 = get_i32();
ivec4 v4 = ivec4(tint_symbol_2);
} }

View File

@ -8,7 +8,10 @@ int get_i32() {
} }
void f() { void f() {
int2 v2 = int2((get_i32()).xx); const int tint_symbol = get_i32();
int3 v3 = int3((get_i32()).xxx); int2 v2 = int2((tint_symbol).xx);
int4 v4 = int4((get_i32()).xxxx); const int tint_symbol_1 = get_i32();
int3 v3 = int3((tint_symbol_1).xxx);
const int tint_symbol_2 = get_i32();
int4 v4 = int4((tint_symbol_2).xxxx);
} }

View File

@ -6,8 +6,11 @@ int get_i32() {
} }
void f() { void f() {
int2 v2 = int2(get_i32()); int const tint_symbol = get_i32();
int3 v3 = int3(get_i32()); int2 v2 = int2(tint_symbol);
int4 v4 = int4(get_i32()); int const tint_symbol_1 = get_i32();
int3 v3 = int3(tint_symbol_1);
int const tint_symbol_2 = get_i32();
int4 v4 = int4(tint_symbol_2);
} }

View File

@ -40,14 +40,14 @@
%v2 = OpVariable %_ptr_Function_v2int Function %17 %v2 = OpVariable %_ptr_Function_v2int Function %17
%v3 = OpVariable %_ptr_Function_v3int Function %23 %v3 = OpVariable %_ptr_Function_v3int Function %23
%v4 = OpVariable %_ptr_Function_v4int Function %29 %v4 = OpVariable %_ptr_Function_v4int Function %29
%13 = OpFunctionCall %int %get_i32 %12 = OpFunctionCall %int %get_i32
%14 = OpCompositeConstruct %v2int %13 %13 %14 = OpCompositeConstruct %v2int %12 %12
OpStore %v2 %14 OpStore %v2 %14
%19 = OpFunctionCall %int %get_i32 %18 = OpFunctionCall %int %get_i32
%20 = OpCompositeConstruct %v3int %19 %19 %19 %20 = OpCompositeConstruct %v3int %18 %18 %18
OpStore %v3 %20 OpStore %v3 %20
%25 = OpFunctionCall %int %get_i32 %24 = OpFunctionCall %int %get_i32
%26 = OpCompositeConstruct %v4int %25 %25 %25 %25 %26 = OpCompositeConstruct %v4int %24 %24 %24 %24
OpStore %v4 %26 OpStore %v4 %26
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -9,8 +9,11 @@ uint get_u32() {
} }
void f() { void f() {
uvec2 v2 = uvec2(get_u32()); uint tint_symbol = get_u32();
uvec3 v3 = uvec3(get_u32()); uvec2 v2 = uvec2(tint_symbol);
uvec4 v4 = uvec4(get_u32()); uint tint_symbol_1 = get_u32();
uvec3 v3 = uvec3(tint_symbol_1);
uint tint_symbol_2 = get_u32();
uvec4 v4 = uvec4(tint_symbol_2);
} }

View File

@ -8,7 +8,10 @@ uint get_u32() {
} }
void f() { void f() {
uint2 v2 = uint2((get_u32()).xx); const uint tint_symbol = get_u32();
uint3 v3 = uint3((get_u32()).xxx); uint2 v2 = uint2((tint_symbol).xx);
uint4 v4 = uint4((get_u32()).xxxx); const uint tint_symbol_1 = get_u32();
uint3 v3 = uint3((tint_symbol_1).xxx);
const uint tint_symbol_2 = get_u32();
uint4 v4 = uint4((tint_symbol_2).xxxx);
} }

View File

@ -6,8 +6,11 @@ uint get_u32() {
} }
void f() { void f() {
uint2 v2 = uint2(get_u32()); uint const tint_symbol = get_u32();
uint3 v3 = uint3(get_u32()); uint2 v2 = uint2(tint_symbol);
uint4 v4 = uint4(get_u32()); uint const tint_symbol_1 = get_u32();
uint3 v3 = uint3(tint_symbol_1);
uint const tint_symbol_2 = get_u32();
uint4 v4 = uint4(tint_symbol_2);
} }

View File

@ -40,14 +40,14 @@
%v2 = OpVariable %_ptr_Function_v2uint Function %17 %v2 = OpVariable %_ptr_Function_v2uint Function %17
%v3 = OpVariable %_ptr_Function_v3uint Function %23 %v3 = OpVariable %_ptr_Function_v3uint Function %23
%v4 = OpVariable %_ptr_Function_v4uint Function %29 %v4 = OpVariable %_ptr_Function_v4uint Function %29
%13 = OpFunctionCall %uint %get_u32 %12 = OpFunctionCall %uint %get_u32
%14 = OpCompositeConstruct %v2uint %13 %13 %14 = OpCompositeConstruct %v2uint %12 %12
OpStore %v2 %14 OpStore %v2 %14
%19 = OpFunctionCall %uint %get_u32 %18 = OpFunctionCall %uint %get_u32
%20 = OpCompositeConstruct %v3uint %19 %19 %19 %20 = OpCompositeConstruct %v3uint %18 %18 %18
OpStore %v3 %20 OpStore %v3 %20
%25 = OpFunctionCall %uint %get_u32 %24 = OpFunctionCall %uint %get_u32
%26 = OpCompositeConstruct %v4uint %25 %25 %25 %25 %26 = OpCompositeConstruct %v4uint %24 %24 %24 %24
OpStore %v4 %26 OpStore %v4 %26
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -16,15 +16,16 @@ mat2 arr_to_mat2x2_stride_16(strided_arr arr[2]) {
} }
strided_arr[2] mat2x2_stride_16_to_arr(mat2 m) { strided_arr[2] mat2x2_stride_16_to_arr(mat2 m) {
strided_arr tint_symbol = strided_arr(m[0u]); strided_arr tint_symbol_1 = strided_arr(m[0u]);
strided_arr tint_symbol_1 = strided_arr(m[1u]); strided_arr tint_symbol_2 = strided_arr(m[1u]);
strided_arr tint_symbol_2[2] = strided_arr[2](tint_symbol, tint_symbol_1); strided_arr tint_symbol_3[2] = strided_arr[2](tint_symbol_1, tint_symbol_2);
return tint_symbol_2; return tint_symbol_3;
} }
void f_1() { void f_1() {
mat2 x_15 = arr_to_mat2x2_stride_16(ssbo.m); mat2 x_15 = arr_to_mat2x2_stride_16(ssbo.m);
ssbo.m = mat2x2_stride_16_to_arr(x_15); strided_arr tint_symbol[2] = mat2x2_stride_16_to_arr(x_15);
ssbo.m = tint_symbol;
return; return;
} }

View File

@ -10,44 +10,45 @@ float2x2 arr_to_mat2x2_stride_16(strided_arr arr[2]) {
typedef strided_arr mat2x2_stride_16_to_arr_ret[2]; typedef strided_arr mat2x2_stride_16_to_arr_ret[2];
mat2x2_stride_16_to_arr_ret mat2x2_stride_16_to_arr(float2x2 m) { mat2x2_stride_16_to_arr_ret mat2x2_stride_16_to_arr(float2x2 m) {
const strided_arr tint_symbol_6 = {m[0u]}; const strided_arr tint_symbol_7 = {m[0u]};
const strided_arr tint_symbol_7 = {m[1u]}; const strided_arr tint_symbol_8 = {m[1u]};
const strided_arr tint_symbol_8[2] = {tint_symbol_6, tint_symbol_7}; const strided_arr tint_symbol_9[2] = {tint_symbol_7, tint_symbol_8};
return tint_symbol_8;
}
strided_arr tint_symbol_1(RWByteAddressBuffer buffer, uint offset) {
const strided_arr tint_symbol_9 = {asfloat(buffer.Load2((offset + 0u)))};
return tint_symbol_9; return tint_symbol_9;
} }
typedef strided_arr tint_symbol_ret[2]; strided_arr tint_symbol_2(RWByteAddressBuffer buffer, uint offset) {
tint_symbol_ret tint_symbol(RWByteAddressBuffer buffer, uint offset) { const strided_arr tint_symbol_10 = {asfloat(buffer.Load2((offset + 0u)))};
return tint_symbol_10;
}
typedef strided_arr tint_symbol_1_ret[2];
tint_symbol_1_ret tint_symbol_1(RWByteAddressBuffer buffer, uint offset) {
strided_arr arr_1[2] = (strided_arr[2])0; strided_arr arr_1[2] = (strided_arr[2])0;
{ {
[loop] for(uint i = 0u; (i < 2u); i = (i + 1u)) { [loop] for(uint i = 0u; (i < 2u); i = (i + 1u)) {
arr_1[i] = tint_symbol_1(buffer, (offset + (i * 16u))); arr_1[i] = tint_symbol_2(buffer, (offset + (i * 16u)));
} }
} }
return arr_1; return arr_1;
} }
void tint_symbol_4(RWByteAddressBuffer buffer, uint offset, strided_arr value) { void tint_symbol_5(RWByteAddressBuffer buffer, uint offset, strided_arr value) {
buffer.Store2((offset + 0u), asuint(value.el)); buffer.Store2((offset + 0u), asuint(value.el));
} }
void tint_symbol_3(RWByteAddressBuffer buffer, uint offset, strided_arr value[2]) { void tint_symbol_4(RWByteAddressBuffer buffer, uint offset, strided_arr value[2]) {
strided_arr array[2] = value; strided_arr array[2] = value;
{ {
[loop] for(uint i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) { [loop] for(uint i_1 = 0u; (i_1 < 2u); i_1 = (i_1 + 1u)) {
tint_symbol_4(buffer, (offset + (i_1 * 16u)), array[i_1]); tint_symbol_5(buffer, (offset + (i_1 * 16u)), array[i_1]);
} }
} }
} }
void f_1() { void f_1() {
const float2x2 x_15 = arr_to_mat2x2_stride_16(tint_symbol(ssbo, 0u)); const float2x2 x_15 = arr_to_mat2x2_stride_16(tint_symbol_1(ssbo, 0u));
tint_symbol_3(ssbo, 0u, mat2x2_stride_16_to_arr(x_15)); const strided_arr tint_symbol[2] = mat2x2_stride_16_to_arr(x_15);
tint_symbol_4(ssbo, 0u, tint_symbol);
return; return;
} }

View File

@ -19,20 +19,21 @@ float2x2 arr_to_mat2x2_stride_16(tint_array_wrapper arr) {
} }
tint_array_wrapper mat2x2_stride_16_to_arr(float2x2 m) { tint_array_wrapper mat2x2_stride_16_to_arr(float2x2 m) {
strided_arr const tint_symbol = {.el=m[0u]}; strided_arr const tint_symbol_1 = {.el=m[0u]};
strided_arr const tint_symbol_1 = {.el=m[1u]}; strided_arr const tint_symbol_2 = {.el=m[1u]};
tint_array_wrapper const tint_symbol_2 = {.arr={tint_symbol, tint_symbol_1}}; tint_array_wrapper const tint_symbol_3 = {.arr={tint_symbol_1, tint_symbol_2}};
return tint_symbol_2; return tint_symbol_3;
} }
void f_1(device SSBO* const tint_symbol_3) { void f_1(device SSBO* const tint_symbol_4) {
float2x2 const x_15 = arr_to_mat2x2_stride_16((*(tint_symbol_3)).m); float2x2 const x_15 = arr_to_mat2x2_stride_16((*(tint_symbol_4)).m);
(*(tint_symbol_3)).m = mat2x2_stride_16_to_arr(x_15); tint_array_wrapper const tint_symbol = mat2x2_stride_16_to_arr(x_15);
(*(tint_symbol_4)).m = tint_symbol;
return; return;
} }
kernel void f(device SSBO* tint_symbol_4 [[buffer(0)]]) { kernel void f(device SSBO* tint_symbol_5 [[buffer(0)]]) {
f_1(tint_symbol_4); f_1(tint_symbol_5);
return; return;
} }

View File

@ -66,9 +66,9 @@
%37 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0 %37 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0
%38 = OpLoad %_arr_strided_arr_uint_2 %37 %38 = OpLoad %_arr_strided_arr_uint_2 %37
%35 = OpFunctionCall %mat2v2float %arr_to_mat2x2_stride_16 %38 %35 = OpFunctionCall %mat2v2float %arr_to_mat2x2_stride_16 %38
%39 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0 %39 = OpFunctionCall %_arr_strided_arr_uint_2 %mat2x2_stride_16_to_arr %35
%40 = OpFunctionCall %_arr_strided_arr_uint_2 %mat2x2_stride_16_to_arr %35 %40 = OpAccessChain %_ptr_StorageBuffer__arr_strided_arr_uint_2 %ssbo %uint_0
OpStore %39 %40 OpStore %40 %39
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd
%f = OpFunction %void None %31 %f = OpFunction %void None %31

View File

@ -31,7 +31,9 @@ layout(binding = 4) uniform Uniforms_1 {
void tint_symbol() { void tint_symbol() {
InnerS v = InnerS(0); InnerS v = InnerS(0);
OuterS s = OuterS(S1[8](S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))))); OuterS s = OuterS(S1[8](S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0))), S1(InnerS[8](InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0), InnerS(0)))));
s.a1[getNextIndex()].a2[uniforms.j] = v; InnerS tint_symbol_1 = v;
uint tint_symbol_2 = getNextIndex();
s.a1[tint_symbol_2].a2[uniforms.j] = tint_symbol_1;
} }
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

View File

@ -25,7 +25,8 @@ void main() {
OuterS s = (OuterS)0; OuterS s = (OuterS)0;
{ {
S1 tint_symbol_1[8] = s.a1; S1 tint_symbol_1[8] = s.a1;
const uint tint_symbol_2_save = getNextIndex(); const uint tint_symbol_4 = getNextIndex();
const uint tint_symbol_2_save = tint_symbol_4;
InnerS tint_symbol_3[8] = tint_symbol_1[tint_symbol_2_save].a2; InnerS tint_symbol_3[8] = tint_symbol_1[tint_symbol_2_save].a2;
tint_symbol_3[uniforms[0].y] = v; tint_symbol_3[uniforms[0].y] = v;
tint_symbol_1[tint_symbol_2_save].a2 = tint_symbol_3; tint_symbol_1[tint_symbol_2_save].a2 = tint_symbol_3;

View File

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

View File

@ -69,11 +69,11 @@
%18 = OpLabel %18 = OpLabel
%v = OpVariable %_ptr_Function_InnerS Function %23 %v = OpVariable %_ptr_Function_InnerS Function %23
%s = OpVariable %_ptr_Function_OuterS Function %31 %s = OpVariable %_ptr_Function_OuterS Function %31
%32 = OpLoad %InnerS %v
%33 = OpFunctionCall %uint %getNextIndex %33 = OpFunctionCall %uint %getNextIndex
%35 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1 %36 = OpAccessChain %_ptr_Uniform_uint %uniforms %uint_1
%36 = OpLoad %uint %35 %37 = OpLoad %uint %36
%37 = OpAccessChain %_ptr_Function_InnerS %s %uint_0 %33 %uint_0 %36 %38 = OpAccessChain %_ptr_Function_InnerS %s %uint_0 %33 %uint_0 %37
%38 = OpLoad %InnerS %v OpStore %38 %32
OpStore %37 %38
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd

View File

@ -20,7 +20,8 @@ void tint_symbol() {
OuterS s1 = OuterS(uint[8](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u)); OuterS s1 = OuterS(uint[8](0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u));
vec3 v = vec3(0.0f, 0.0f, 0.0f); vec3 v = vec3(0.0f, 0.0f, 0.0f);
v[s1.a1[uniforms.i]] = 1.0f; v[s1.a1[uniforms.i]] = 1.0f;
v[f(s1.a1[uniforms.i])] = 1.0f; uint tint_symbol_1 = f(s1.a1[uniforms.i]);
v[tint_symbol_1] = 1.0f;
} }
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

View File

@ -19,6 +19,7 @@ void main() {
OuterS s1 = (OuterS)0; OuterS s1 = (OuterS)0;
float3 v = float3(0.0f, 0.0f, 0.0f); float3 v = float3(0.0f, 0.0f, 0.0f);
set_float3(v, s1.a1[uniforms[0].x], 1.0f); set_float3(v, s1.a1[uniforms[0].x], 1.0f);
set_float3(v, f(s1.a1[uniforms[0].x]), 1.0f); const uint tint_symbol = f(s1.a1[uniforms[0].x]);
set_float3(v, tint_symbol, 1.0f);
return; return;
} }

View File

@ -17,11 +17,12 @@ uint f(uint i) {
return (i + 1u); return (i + 1u);
} }
kernel void tint_symbol(const constant Uniforms* tint_symbol_1 [[buffer(0)]]) { kernel void tint_symbol(const constant Uniforms* tint_symbol_2 [[buffer(0)]]) {
OuterS s1 = {}; OuterS s1 = {};
float3 v = 0.0f; float3 v = 0.0f;
v[s1.a1.arr[(*(tint_symbol_1)).i]] = 1.0f; v[s1.a1.arr[(*(tint_symbol_2)).i]] = 1.0f;
v[f(s1.a1.arr[(*(tint_symbol_1)).i])] = 1.0f; uint const tint_symbol_1 = f(s1.a1.arr[(*(tint_symbol_2)).i]);
v[tint_symbol_1] = 1.0f;
return; return;
} }

View File

@ -4,11 +4,11 @@ int f(int a, int b, int c) {
return ((a * b) + c); return ((a * b) + c);
} }
void phony_sink(int p0, int p1, int p2) {
}
void tint_symbol() { void tint_symbol() {
phony_sink(f(1, 2, 3), f(4, 5, 6), f(7, f(8, 9, 10), 11)); int tint_symbol_1 = f(1, 2, 3);
int tint_symbol_2 = f(4, 5, 6);
int tint_symbol_3 = f(8, 9, 10);
int tint_symbol_4 = f(7, tint_symbol_3, 11);
} }
layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in; layout(local_size_x = 1, local_size_y = 1, local_size_z = 1) in;

View File

@ -2,11 +2,11 @@ int f(int a, int b, int c) {
return ((a * b) + c); return ((a * b) + c);
} }
void phony_sink(int p0, int p1, int p2) {
}
[numthreads(1, 1, 1)] [numthreads(1, 1, 1)]
void main() { void main() {
phony_sink(f(1, 2, 3), f(4, 5, 6), f(7, f(8, 9, 10), 11)); const int tint_symbol = f(1, 2, 3);
const int tint_symbol_1 = f(4, 5, 6);
const int tint_symbol_2 = f(8, 9, 10);
const int tint_symbol_3 = f(7, tint_symbol_2, 11);
return; return;
} }

View File

@ -5,11 +5,11 @@ int f(int a, int b, int c) {
return as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(a) * as_type<uint>(b)))) + as_type<uint>(c))); return as_type<int>((as_type<uint>(as_type<int>((as_type<uint>(a) * as_type<uint>(b)))) + as_type<uint>(c)));
} }
void phony_sink(int p0, int p1, int p2) {
}
kernel void tint_symbol() { kernel void tint_symbol() {
phony_sink(f(1, 2, 3), f(4, 5, 6), f(7, f(8, 9, 10), 11)); int const tint_symbol_1 = f(1, 2, 3);
int const tint_symbol_2 = f(4, 5, 6);
int const tint_symbol_3 = f(8, 9, 10);
int const tint_symbol_4 = f(7, tint_symbol_3, 11);
return; return;
} }

View File

@ -22,10 +22,10 @@
%int_4 = OpConstant %int 4 %int_4 = OpConstant %int 4
%int_5 = OpConstant %int 5 %int_5 = OpConstant %int 5
%int_6 = OpConstant %int 6 %int_6 = OpConstant %int 6
%int_7 = OpConstant %int 7
%int_8 = OpConstant %int 8 %int_8 = OpConstant %int 8
%int_9 = OpConstant %int 9 %int_9 = OpConstant %int 9
%int_10 = OpConstant %int 10 %int_10 = OpConstant %int 10
%int_7 = OpConstant %int 7
%int_11 = OpConstant %int 11 %int_11 = OpConstant %int 11
%f = OpFunction %int None %1 %f = OpFunction %int None %1
%a = OpFunctionParameter %int %a = OpFunctionParameter %int
@ -40,9 +40,9 @@
%13 = OpLabel %13 = OpLabel
%14 = OpFunctionCall %int %f %int_1 %int_2 %int_3 %14 = OpFunctionCall %int %f %int_1 %int_2 %int_3
%18 = OpFunctionCall %int %f %int_4 %int_5 %int_6 %18 = OpFunctionCall %int %f %int_4 %int_5 %int_6
%24 = OpFunctionCall %int %f %int_8 %int_9 %int_10 %22 = OpFunctionCall %int %f %int_8 %int_9 %int_10
%22 = OpFunctionCall %int %f %int_7 %24 %int_11 %26 = OpFunctionCall %int %f %int_7 %22 %int_11
%29 = OpIMul %int %18 %22 %29 = OpIMul %int %18 %26
%30 = OpIAdd %int %14 %29 %30 = OpIAdd %int %14 %29
OpReturn OpReturn
OpFunctionEnd OpFunctionEnd