dawn-cmake/test/var/workgroup.wgsl.expected.hlsl
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

82 lines
1.3 KiB
HLSL

groupshared int a;
groupshared int b;
groupshared int c;
void uses_a() {
a = (a + 1);
}
void uses_b() {
b = (b * 2);
}
void uses_a_and_b() {
b = a;
}
void no_uses() {
}
void outer() {
a = 0;
uses_a();
uses_a_and_b();
uses_b();
no_uses();
}
struct tint_symbol_1 {
uint local_invocation_index : SV_GroupIndex;
};
[numthreads(1, 1, 1)]
void main1(tint_symbol_1 tint_symbol) {
const uint local_invocation_index = tint_symbol.local_invocation_index;
if ((local_invocation_index == 0u)) {
a = 0;
}
GroupMemoryBarrierWithGroupSync();
a = 42;
uses_a();
return;
}
struct tint_symbol_3 {
uint local_invocation_index_1 : SV_GroupIndex;
};
[numthreads(1, 1, 1)]
void main2(tint_symbol_3 tint_symbol_2) {
const uint local_invocation_index_1 = tint_symbol_2.local_invocation_index_1;
if ((local_invocation_index_1 == 0u)) {
b = 0;
}
GroupMemoryBarrierWithGroupSync();
b = 7;
uses_b();
return;
}
struct tint_symbol_5 {
uint local_invocation_index_2 : SV_GroupIndex;
};
[numthreads(1, 1, 1)]
void main3(tint_symbol_5 tint_symbol_4) {
const uint local_invocation_index_2 = tint_symbol_4.local_invocation_index_2;
if ((local_invocation_index_2 == 0u)) {
a = 0;
b = 0;
}
GroupMemoryBarrierWithGroupSync();
outer();
no_uses();
return;
}
[numthreads(1, 1, 1)]
void main4() {
no_uses();
return;
}