| #include <metal_stdlib> |
| |
| using namespace metal; |
| |
| #define TINT_ISOLATE_UB(VOLATILE_NAME) \ |
| {volatile bool VOLATILE_NAME = false; if (VOLATILE_NAME) break;} |
| |
| int tint_workgroupUniformLoad(threadgroup int* const p) { |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| int const result = *(p); |
| threadgroup_barrier(mem_flags::mem_threadgroup); |
| return result; |
| } |
| |
| void foo(threadgroup int* const tint_symbol_4, threadgroup int* const tint_symbol_5) { |
| { |
| int i = 0; |
| while(true) { |
| TINT_ISOLATE_UB(tint_volatile_false); |
| int const tint_symbol = i; |
| int const tint_symbol_1 = tint_workgroupUniformLoad(tint_symbol_4); |
| if (!((tint_symbol < tint_symbol_1))) { |
| break; |
| } |
| { |
| } |
| { |
| int const tint_symbol_2 = i; |
| int const tint_symbol_3 = tint_workgroupUniformLoad(tint_symbol_5); |
| i = as_type<int>((as_type<uint>(tint_symbol_2) + as_type<uint>(tint_symbol_3))); |
| } |
| } |
| } |
| } |
| |