mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-08-05 11:45:54 +00:00
Allow the resolver to understand builtin structures, like __frexp_result_f16. This allows backend transforms to declare the types, even if they're "untypable" by the user. Bug: chromium:1430309 Change-Id: I392709118182a058f737ccf1b7b46fc6b0b7264d Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/129482 Kokoro: Ben Clayton <bclayton@google.com> Reviewed-by: Dan Sinclair <dsinclair@chromium.org> Commit-Queue: Ben Clayton <bclayton@google.com>
33 lines
1.1 KiB
Plaintext
33 lines
1.1 KiB
Plaintext
#include <metal_stdlib>
|
|
|
|
using namespace metal;
|
|
|
|
struct atomic_compare_exchange_result_i32 {
|
|
int old_value;
|
|
bool exchanged;
|
|
};
|
|
atomic_compare_exchange_result_i32 atomicCompareExchangeWeak_1(threadgroup atomic_int* atomic, int compare, int value) {
|
|
int old_value = compare;
|
|
bool exchanged = atomic_compare_exchange_weak_explicit(atomic, &old_value, value, memory_order_relaxed, memory_order_relaxed);
|
|
return {old_value, exchanged};
|
|
}
|
|
|
|
void atomicCompareExchangeWeak_e88938(threadgroup atomic_int* const tint_symbol) {
|
|
atomic_compare_exchange_result_i32 res = atomicCompareExchangeWeak_1(tint_symbol, 1, 1);
|
|
}
|
|
|
|
void compute_main_inner(uint local_invocation_index, threadgroup atomic_int* const tint_symbol_1) {
|
|
{
|
|
atomic_store_explicit(tint_symbol_1, 0, memory_order_relaxed);
|
|
}
|
|
threadgroup_barrier(mem_flags::mem_threadgroup);
|
|
atomicCompareExchangeWeak_e88938(tint_symbol_1);
|
|
}
|
|
|
|
kernel void compute_main(uint local_invocation_index [[thread_index_in_threadgroup]]) {
|
|
threadgroup atomic_int tint_symbol_2;
|
|
compute_main_inner(local_invocation_index, &(tint_symbol_2));
|
|
return;
|
|
}
|
|
|