dawn-cmake/test/var/workgroup.wgsl.expected.msl
Ben Clayton 75db82c96b sanitizers: Use the ZeroInitWorkgroupMemory transform
Zero the workgroup memory for all backends.
We can probably disable this for the backends that support workgroup zeroing, but that's an optimization we can perform later.

Fixed: tint:280
Change-Id: I9cad919ba3a15b8cedfe6939317d1f6b95425453
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/55244
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: David Neto <dneto@google.com>
Reviewed-by: James Price <jrprice@google.com>
2021-06-18 22:44:31 +00:00

67 lines
1.6 KiB
Plaintext

#include <metal_stdlib>
using namespace metal;
void uses_a(threadgroup int* const tint_symbol_3) {
*(tint_symbol_3) = (*(tint_symbol_3) + 1);
}
void uses_b(threadgroup int* const tint_symbol_4) {
*(tint_symbol_4) = (*(tint_symbol_4) * 2);
}
void uses_a_and_b(threadgroup int* const tint_symbol_5, threadgroup int* const tint_symbol_6) {
*(tint_symbol_5) = *(tint_symbol_6);
}
void no_uses() {
}
void outer(threadgroup int* const tint_symbol_7, threadgroup int* const tint_symbol_8) {
*(tint_symbol_7) = 0;
uses_a(tint_symbol_7);
uses_a_and_b(tint_symbol_8, tint_symbol_7);
uses_b(tint_symbol_8);
no_uses();
}
kernel void main1(uint local_invocation_index [[thread_index_in_threadgroup]]) {
threadgroup int tint_symbol_9;
if ((local_invocation_index == 0u)) {
tint_symbol_9 = int();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
tint_symbol_9 = 42;
uses_a(&(tint_symbol_9));
return;
}
kernel void main2(uint local_invocation_index_1 [[thread_index_in_threadgroup]]) {
threadgroup int tint_symbol_10;
if ((local_invocation_index_1 == 0u)) {
tint_symbol_10 = int();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
tint_symbol_10 = 7;
uses_b(&(tint_symbol_10));
return;
}
kernel void main3(uint local_invocation_index_2 [[thread_index_in_threadgroup]]) {
threadgroup int tint_symbol_11;
threadgroup int tint_symbol_12;
if ((local_invocation_index_2 == 0u)) {
tint_symbol_11 = int();
tint_symbol_12 = int();
}
threadgroup_barrier(mem_flags::mem_threadgroup);
outer(&(tint_symbol_11), &(tint_symbol_12));
no_uses();
return;
}
kernel void main4() {
no_uses();
return;
}