mirror of
https://github.com/encounter/dawn-cmake.git
synced 2025-12-19 09:55:26 +00:00
Implement atomicCompareExchangeWeak returning struct instead of vec2
Also fixed implementation of this atomic in GLSL. It was emitting code that would not compile because, as for HLSL, we must pass in the variable directly to atomic funcs, not via an in/out arg to a function. Bug: tint:1185 Change-Id: Id0e9f99d6368717511ef3a94473634c512e10cb8 Reviewed-on: https://dawn-review.googlesource.com/c/dawn/+/91881 Kokoro: Kokoro <noreply+kokoro@google.com> Reviewed-by: Ben Clayton <bclayton@google.com> Commit-Queue: Antonio Maiorano <amaiorano@google.com>
This commit is contained in:
committed by
Dawn LUCI CQ
parent
61537d3f57
commit
08f4b557fc
@@ -644,14 +644,34 @@ struct DecomposeMemoryAccess::State {
|
||||
<< el_ty->TypeInfo().name;
|
||||
}
|
||||
|
||||
auto* ret_ty = CreateASTTypeFor(ctx, intrinsic->ReturnType());
|
||||
auto* func =
|
||||
b.create<ast::Function>(b.Sym(), params, ret_ty, nullptr,
|
||||
ast::AttributeList{
|
||||
atomic,
|
||||
b.Disable(ast::DisabledValidation::kFunctionHasNoBody),
|
||||
},
|
||||
ast::AttributeList{});
|
||||
const ast::Type* ret_ty = nullptr;
|
||||
|
||||
// For intrinsics that return a struct, there is no AST node for it, so create one now.
|
||||
if (intrinsic->Type() == sem::BuiltinType::kAtomicCompareExchangeWeak) {
|
||||
auto* str = intrinsic->ReturnType()->As<sem::Struct>();
|
||||
TINT_ASSERT(Transform, str && str->Declaration() == nullptr);
|
||||
|
||||
ast::StructMemberList ast_members;
|
||||
ast_members.reserve(str->Members().size());
|
||||
for (auto& m : str->Members()) {
|
||||
ast_members.push_back(
|
||||
b.Member(ctx.Clone(m->Name()), CreateASTTypeFor(ctx, m->Type())));
|
||||
}
|
||||
|
||||
auto name = b.Symbols().New("atomic_compare_exchange_weak_ret_type");
|
||||
auto* new_str = b.Structure(name, std::move(ast_members));
|
||||
ret_ty = b.ty.Of(new_str);
|
||||
} else {
|
||||
ret_ty = CreateASTTypeFor(ctx, intrinsic->ReturnType());
|
||||
}
|
||||
|
||||
auto* func = b.create<ast::Function>(
|
||||
b.Symbols().New(std::string{"tint_"} + intrinsic->str()), params, ret_ty, nullptr,
|
||||
ast::AttributeList{
|
||||
atomic,
|
||||
b.Disable(ast::DisabledValidation::kFunctionHasNoBody),
|
||||
},
|
||||
ast::AttributeList{});
|
||||
|
||||
b.AST().AddFunction(func);
|
||||
return func->symbol;
|
||||
@@ -753,6 +773,10 @@ const DecomposeMemoryAccess::Intrinsic* DecomposeMemoryAccess::Intrinsic::Clone(
|
||||
storage_class, type);
|
||||
}
|
||||
|
||||
bool DecomposeMemoryAccess::Intrinsic::IsAtomic() const {
|
||||
return op != Op::kLoad && op != Op::kStore;
|
||||
}
|
||||
|
||||
DecomposeMemoryAccess::DecomposeMemoryAccess() = default;
|
||||
DecomposeMemoryAccess::~DecomposeMemoryAccess() = default;
|
||||
|
||||
|
||||
@@ -89,6 +89,9 @@ class DecomposeMemoryAccess final : public Castable<DecomposeMemoryAccess, Trans
|
||||
/// @return the newly cloned object
|
||||
const Intrinsic* Clone(CloneContext* ctx) const override;
|
||||
|
||||
/// @return true if op is atomic
|
||||
bool IsAtomic() const;
|
||||
|
||||
/// The op of the intrinsic
|
||||
const Op op;
|
||||
|
||||
|
||||
@@ -2467,95 +2467,105 @@ struct SB {
|
||||
@group(0) @binding(0) var<storage, read_write> sb : SB;
|
||||
|
||||
@internal(intrinsic_atomic_store_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32)
|
||||
fn tint_atomicStore(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32)
|
||||
|
||||
@internal(intrinsic_atomic_load_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> i32
|
||||
fn tint_atomicLoad(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_add_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicAdd(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_sub_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicSub(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_max_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicMax(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_min_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicMin(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_and_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicAnd(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_or_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicOr(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_xor_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicXor(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_exchange_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicExchange(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
struct atomic_compare_exchange_weak_ret_type {
|
||||
old_value : i32,
|
||||
exchanged : bool,
|
||||
}
|
||||
|
||||
@internal(intrinsic_atomic_compare_exchange_weak_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> vec2<i32>
|
||||
fn tint_atomicCompareExchangeWeak(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> atomic_compare_exchange_weak_ret_type
|
||||
|
||||
@internal(intrinsic_atomic_store_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32)
|
||||
fn tint_atomicStore_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32)
|
||||
|
||||
@internal(intrinsic_atomic_load_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> u32
|
||||
fn tint_atomicLoad_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_add_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicAdd_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_sub_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicSub_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_max_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicMax_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_min_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicMin_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_and_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicAnd_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_or_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicOr_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_xor_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicXor_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_exchange_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicExchange_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
struct atomic_compare_exchange_weak_ret_type_1 {
|
||||
old_value : u32,
|
||||
exchanged : bool,
|
||||
}
|
||||
|
||||
@internal(intrinsic_atomic_compare_exchange_weak_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> vec2<u32>
|
||||
fn tint_atomicCompareExchangeWeak_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> atomic_compare_exchange_weak_ret_type_1
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
tint_symbol(sb, 16u, 123);
|
||||
tint_symbol_1(sb, 16u);
|
||||
tint_symbol_2(sb, 16u, 123);
|
||||
tint_symbol_3(sb, 16u, 123);
|
||||
tint_symbol_4(sb, 16u, 123);
|
||||
tint_symbol_5(sb, 16u, 123);
|
||||
tint_symbol_6(sb, 16u, 123);
|
||||
tint_symbol_7(sb, 16u, 123);
|
||||
tint_symbol_8(sb, 16u, 123);
|
||||
tint_symbol_9(sb, 16u, 123);
|
||||
tint_symbol_10(sb, 16u, 123, 345);
|
||||
tint_symbol_11(sb, 20u, 123u);
|
||||
tint_symbol_12(sb, 20u);
|
||||
tint_symbol_13(sb, 20u, 123u);
|
||||
tint_symbol_14(sb, 20u, 123u);
|
||||
tint_symbol_15(sb, 20u, 123u);
|
||||
tint_symbol_16(sb, 20u, 123u);
|
||||
tint_symbol_17(sb, 20u, 123u);
|
||||
tint_symbol_18(sb, 20u, 123u);
|
||||
tint_symbol_19(sb, 20u, 123u);
|
||||
tint_symbol_20(sb, 20u, 123u);
|
||||
tint_symbol_21(sb, 20u, 123u, 345u);
|
||||
tint_atomicStore(sb, 16u, 123);
|
||||
tint_atomicLoad(sb, 16u);
|
||||
tint_atomicAdd(sb, 16u, 123);
|
||||
tint_atomicSub(sb, 16u, 123);
|
||||
tint_atomicMax(sb, 16u, 123);
|
||||
tint_atomicMin(sb, 16u, 123);
|
||||
tint_atomicAnd(sb, 16u, 123);
|
||||
tint_atomicOr(sb, 16u, 123);
|
||||
tint_atomicXor(sb, 16u, 123);
|
||||
tint_atomicExchange(sb, 16u, 123);
|
||||
tint_atomicCompareExchangeWeak(sb, 16u, 123, 345);
|
||||
tint_atomicStore_1(sb, 20u, 123u);
|
||||
tint_atomicLoad_1(sb, 20u);
|
||||
tint_atomicAdd_1(sb, 20u, 123u);
|
||||
tint_atomicSub_1(sb, 20u, 123u);
|
||||
tint_atomicMax_1(sb, 20u, 123u);
|
||||
tint_atomicMin_1(sb, 20u, 123u);
|
||||
tint_atomicAnd_1(sb, 20u, 123u);
|
||||
tint_atomicOr_1(sb, 20u, 123u);
|
||||
tint_atomicXor_1(sb, 20u, 123u);
|
||||
tint_atomicExchange_1(sb, 20u, 123u);
|
||||
tint_atomicCompareExchangeWeak_1(sb, 20u, 123u, 345u);
|
||||
}
|
||||
)";
|
||||
|
||||
@@ -2604,95 +2614,105 @@ struct SB {
|
||||
|
||||
auto* expect = R"(
|
||||
@internal(intrinsic_atomic_store_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32)
|
||||
fn tint_atomicStore(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32)
|
||||
|
||||
@internal(intrinsic_atomic_load_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> i32
|
||||
fn tint_atomicLoad(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_add_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_2(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicAdd(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_sub_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_3(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicSub(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_max_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_4(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicMax(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_min_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_5(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicMin(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_and_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_6(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicAnd(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_or_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_7(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicOr(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_xor_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_8(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicXor(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
@internal(intrinsic_atomic_exchange_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_9(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
fn tint_atomicExchange(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32) -> i32
|
||||
|
||||
struct atomic_compare_exchange_weak_ret_type {
|
||||
old_value : i32,
|
||||
exchanged : bool,
|
||||
}
|
||||
|
||||
@internal(intrinsic_atomic_compare_exchange_weak_storage_i32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_10(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> vec2<i32>
|
||||
fn tint_atomicCompareExchangeWeak(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> atomic_compare_exchange_weak_ret_type
|
||||
|
||||
@internal(intrinsic_atomic_store_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_11(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32)
|
||||
fn tint_atomicStore_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32)
|
||||
|
||||
@internal(intrinsic_atomic_load_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_12(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> u32
|
||||
fn tint_atomicLoad_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_add_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_13(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicAdd_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_sub_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_14(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicSub_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_max_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_15(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicMax_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_min_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_16(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicMin_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_and_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_17(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicAnd_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_or_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_18(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicOr_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_xor_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_19(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicXor_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
@internal(intrinsic_atomic_exchange_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_20(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
fn tint_atomicExchange_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32) -> u32
|
||||
|
||||
struct atomic_compare_exchange_weak_ret_type_1 {
|
||||
old_value : u32,
|
||||
exchanged : bool,
|
||||
}
|
||||
|
||||
@internal(intrinsic_atomic_compare_exchange_weak_storage_u32) @internal(disable_validation__function_has_no_body)
|
||||
fn tint_symbol_21(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> vec2<u32>
|
||||
fn tint_atomicCompareExchangeWeak_1(@internal(disable_validation__ignore_constructible_function_parameter) buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> atomic_compare_exchange_weak_ret_type_1
|
||||
|
||||
@stage(compute) @workgroup_size(1)
|
||||
fn main() {
|
||||
tint_symbol(sb, 16u, 123);
|
||||
tint_symbol_1(sb, 16u);
|
||||
tint_symbol_2(sb, 16u, 123);
|
||||
tint_symbol_3(sb, 16u, 123);
|
||||
tint_symbol_4(sb, 16u, 123);
|
||||
tint_symbol_5(sb, 16u, 123);
|
||||
tint_symbol_6(sb, 16u, 123);
|
||||
tint_symbol_7(sb, 16u, 123);
|
||||
tint_symbol_8(sb, 16u, 123);
|
||||
tint_symbol_9(sb, 16u, 123);
|
||||
tint_symbol_10(sb, 16u, 123, 345);
|
||||
tint_symbol_11(sb, 20u, 123u);
|
||||
tint_symbol_12(sb, 20u);
|
||||
tint_symbol_13(sb, 20u, 123u);
|
||||
tint_symbol_14(sb, 20u, 123u);
|
||||
tint_symbol_15(sb, 20u, 123u);
|
||||
tint_symbol_16(sb, 20u, 123u);
|
||||
tint_symbol_17(sb, 20u, 123u);
|
||||
tint_symbol_18(sb, 20u, 123u);
|
||||
tint_symbol_19(sb, 20u, 123u);
|
||||
tint_symbol_20(sb, 20u, 123u);
|
||||
tint_symbol_21(sb, 20u, 123u, 345u);
|
||||
tint_atomicStore(sb, 16u, 123);
|
||||
tint_atomicLoad(sb, 16u);
|
||||
tint_atomicAdd(sb, 16u, 123);
|
||||
tint_atomicSub(sb, 16u, 123);
|
||||
tint_atomicMax(sb, 16u, 123);
|
||||
tint_atomicMin(sb, 16u, 123);
|
||||
tint_atomicAnd(sb, 16u, 123);
|
||||
tint_atomicOr(sb, 16u, 123);
|
||||
tint_atomicXor(sb, 16u, 123);
|
||||
tint_atomicExchange(sb, 16u, 123);
|
||||
tint_atomicCompareExchangeWeak(sb, 16u, 123, 345);
|
||||
tint_atomicStore_1(sb, 20u, 123u);
|
||||
tint_atomicLoad_1(sb, 20u);
|
||||
tint_atomicAdd_1(sb, 20u, 123u);
|
||||
tint_atomicSub_1(sb, 20u, 123u);
|
||||
tint_atomicMax_1(sb, 20u, 123u);
|
||||
tint_atomicMin_1(sb, 20u, 123u);
|
||||
tint_atomicAnd_1(sb, 20u, 123u);
|
||||
tint_atomicOr_1(sb, 20u, 123u);
|
||||
tint_atomicXor_1(sb, 20u, 123u);
|
||||
tint_atomicExchange_1(sb, 20u, 123u);
|
||||
tint_atomicCompareExchangeWeak_1(sb, 20u, 123u, 345u);
|
||||
}
|
||||
|
||||
@group(0) @binding(0) var<storage, read_write> sb : SB;
|
||||
|
||||
@@ -49,7 +49,7 @@ Output Manager::Run(const Program* program, const DataMap& data) const {
|
||||
Output out;
|
||||
for (const auto& transform : transforms_) {
|
||||
if (!transform->ShouldRun(in, data)) {
|
||||
TINT_IF_PRINT_PROGRAM(std::cout << "Skipping " << transform->TypeInfo().name);
|
||||
TINT_IF_PRINT_PROGRAM(std::cout << "Skipping " << transform->TypeInfo().name << std::endl);
|
||||
continue;
|
||||
}
|
||||
TINT_IF_PRINT_PROGRAM(print_program("Input to", transform.get()));
|
||||
|
||||
Reference in New Issue
Block a user