dawn-cmake/test/var/private.wgsl.expected.msl
James Price 2940c7002c writer/msl: Avoid generating unnecessary pointers
When moving private and workgroup variables into the entry point,
generate pointers to pass as arguments to sub-functions on demand,
instead of upfront. This removes a bunch of unnecessary dereferences
for accesses inside the entry point, and one function variable.

Change-Id: I7d1aabdf14eae33b569b3316dfc0f9fbd288131e
Reviewed-on: https://dawn-review.googlesource.com/c/tint/+/54300
Auto-Submit: James Price <jrprice@google.com>
Kokoro: Kokoro <noreply+kokoro@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Commit-Queue: James Price <jrprice@google.com>
2021-06-11 12:29:56 +00:00

54 lines
1.0 KiB
Plaintext

#include <metal_stdlib>
using namespace metal;
void uses_a(thread int* const tint_symbol) {
*(tint_symbol) = (*(tint_symbol) + 1);
}
void uses_b(thread int* const tint_symbol_1) {
*(tint_symbol_1) = (*(tint_symbol_1) * 2);
}
void uses_a_and_b(thread int* const tint_symbol_2, thread int* const tint_symbol_3) {
*(tint_symbol_2) = *(tint_symbol_3);
}
void no_uses() {
}
void outer(thread int* const tint_symbol_4, thread int* const tint_symbol_5) {
*(tint_symbol_4) = 0;
uses_a(tint_symbol_4);
uses_a_and_b(tint_symbol_5, tint_symbol_4);
uses_b(tint_symbol_5);
no_uses();
}
kernel void main1() {
thread int tint_symbol_6 = 0;
tint_symbol_6 = 42;
uses_a(&(tint_symbol_6));
return;
}
kernel void main2() {
thread int tint_symbol_7 = 0;
tint_symbol_7 = 7;
uses_b(&(tint_symbol_7));
return;
}
kernel void main3() {
thread int tint_symbol_8 = 0;
thread int tint_symbol_9 = 0;
outer(&(tint_symbol_8), &(tint_symbol_9));
no_uses();
return;
}
kernel void main4() {
no_uses();
return;
}