diff --git a/src/ast/disable_validation_decoration.cc b/src/ast/disable_validation_decoration.cc index 28adae45fe..0a7fda3239 100644 --- a/src/ast/disable_validation_decoration.cc +++ b/src/ast/disable_validation_decoration.cc @@ -38,6 +38,8 @@ std::string DisableValidationDecoration::InternalName() const { return "disable_validation__ignore_storage_class"; case DisabledValidation::kEntryPointParameter: return "disable_validation__entry_point_parameter"; + case DisabledValidation::kIgnoreAtomicFunctionParameter: + return "disable_validation__ignore_atomic_function_parameter"; } return ""; } diff --git a/src/ast/disable_validation_decoration.h b/src/ast/disable_validation_decoration.h index e2b7bb956e..d1c33c6980 100644 --- a/src/ast/disable_validation_decoration.h +++ b/src/ast/disable_validation_decoration.h @@ -37,6 +37,9 @@ enum class DisabledValidation { /// When applied to an entry-point function parameter, the validator will not /// check for entry IO decorations. kEntryPointParameter, + /// When applied to a function parameter, the validator will not + /// check if parameter type is atomic-free + kIgnoreAtomicFunctionParameter, }; /// An internal decoration used to tell the validator to ignore specific diff --git a/src/resolver/resolver.cc b/src/resolver/resolver.cc index 0a083b09f5..d16c95831f 100644 --- a/src/resolver/resolver.cc +++ b/src/resolver/resolver.cc @@ -932,8 +932,12 @@ bool Resolver::ValidateParameter(const ast::Function* func, if (!ValidateVariable(info)) { return false; } + for (auto* deco : info->declaration->decorations()) { - if (!func->IsEntryPoint()) { + if (!func->IsEntryPoint() && + !IsValidationDisabled( + info->declaration->decorations(), + ast::DisabledValidation::kIgnoreAtomicFunctionParameter)) { AddError("decoration is not valid for function parameters", deco->source()); return false; @@ -945,9 +949,12 @@ bool Resolver::ValidateParameter(const ast::Function* func, } } else if (!deco->IsAnyOf() && - !IsValidationDisabled( - info->declaration->decorations(), - ast::DisabledValidation::kEntryPointParameter)) { + !(IsValidationDisabled( + info->declaration->decorations(), + ast::DisabledValidation::kEntryPointParameter) || + IsValidationDisabled(info->declaration->decorations(), + ast::DisabledValidation:: + kIgnoreAtomicFunctionParameter))) { AddError("decoration is not valid for function parameters", deco->source()); return false; diff --git a/src/transform/decompose_memory_access.cc b/src/transform/decompose_memory_access.cc index 7f81894711..7be526a168 100644 --- a/src/transform/decompose_memory_access.cc +++ b/src/transform/decompose_memory_access.cc @@ -475,6 +475,10 @@ struct DecomposeMemoryAccess::State { return utils::GetOrCreate( load_funcs, LoadStoreKey{storage_class, buf_ty, el_ty}, [&] { auto* buf_ast_ty = CreateASTTypeFor(&ctx, buf_ty); + auto* disable_validation = + ctx.dst->ASTNodes().Create( + ctx.dst->ID(), + ast::DisabledValidation::kIgnoreAtomicFunctionParameter); ast::VariableList params = { // Note: The buffer parameter requires the StorageClass in @@ -483,7 +487,7 @@ struct DecomposeMemoryAccess::State { ctx.dst->create( ctx.dst->Sym("buffer"), storage_class, var_user->Variable()->Access(), buf_ast_ty, true, nullptr, - ast::DecorationList{}), + ast::DecorationList{disable_validation}), ctx.dst->Param("offset", ctx.dst->ty.u32()), }; @@ -560,13 +564,18 @@ struct DecomposeMemoryAccess::State { store_funcs, LoadStoreKey{storage_class, buf_ty, el_ty}, [&] { auto* buf_ast_ty = CreateASTTypeFor(&ctx, buf_ty); auto* el_ast_ty = CreateASTTypeFor(&ctx, el_ty); + auto* disable_validation = + ctx.dst->ASTNodes().Create( + ctx.dst->ID(), + ast::DisabledValidation::kIgnoreAtomicFunctionParameter); ast::VariableList params{ // Note: The buffer parameter requires the StorageClass in // order for HLSL to emit this as a ByteAddressBuffer. + ctx.dst->create( ctx.dst->Sym("buffer"), storage_class, var_user->Variable()->Access(), buf_ast_ty, true, nullptr, - ast::DecorationList{}), + ast::DecorationList{disable_validation}), ctx.dst->Param("offset", ctx.dst->ty.u32()), ctx.dst->Param("value", el_ast_ty), }; @@ -650,7 +659,10 @@ struct DecomposeMemoryAccess::State { auto op = intrinsic->Type(); return utils::GetOrCreate(atomic_funcs, AtomicKey{buf_ty, el_ty, op}, [&] { auto* buf_ast_ty = CreateASTTypeFor(&ctx, buf_ty); - + auto* disable_validation = + ctx.dst->ASTNodes().Create( + ctx.dst->ID(), + ast::DisabledValidation::kIgnoreAtomicFunctionParameter); // The first parameter to all WGSL atomics is the expression to the // atomic. This is replaced with two parameters: the buffer and offset. @@ -660,7 +672,7 @@ struct DecomposeMemoryAccess::State { ctx.dst->create( ctx.dst->Sym("buffer"), ast::StorageClass::kStorage, var_user->Variable()->Access(), buf_ast_ty, true, nullptr, - ast::DecorationList{}), + ast::DecorationList{disable_validation}), ctx.dst->Param("offset", ctx.dst->ty.u32()), }; diff --git a/src/transform/decompose_memory_access_test.cc b/src/transform/decompose_memory_access_test.cc index 5d5d91b76a..a3c71138f0 100644 --- a/src/transform/decompose_memory_access_test.cc +++ b/src/transform/decompose_memory_access_test.cc @@ -107,78 +107,78 @@ struct SB { }; [[internal(intrinsic_load_storage_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32) -> i32 +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> i32 [[internal(intrinsic_load_storage_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_1(buffer : SB, offset : u32) -> u32 +fn tint_symbol_1([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> u32 [[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_2(buffer : SB, offset : u32) -> f32 +fn tint_symbol_2([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> f32 [[internal(intrinsic_load_storage_vec2_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_3(buffer : SB, offset : u32) -> vec2 +fn tint_symbol_3([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec2 [[internal(intrinsic_load_storage_vec2_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_4(buffer : SB, offset : u32) -> vec2 +fn tint_symbol_4([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec2 [[internal(intrinsic_load_storage_vec2_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_5(buffer : SB, offset : u32) -> vec2 +fn tint_symbol_5([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec2 [[internal(intrinsic_load_storage_vec3_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_6(buffer : SB, offset : u32) -> vec3 +fn tint_symbol_6([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec3 [[internal(intrinsic_load_storage_vec3_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_7(buffer : SB, offset : u32) -> vec3 +fn tint_symbol_7([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec3 [[internal(intrinsic_load_storage_vec3_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_8(buffer : SB, offset : u32) -> vec3 +fn tint_symbol_8([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec3 [[internal(intrinsic_load_storage_vec4_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_9(buffer : SB, offset : u32) -> vec4 +fn tint_symbol_9([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec4 [[internal(intrinsic_load_storage_vec4_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_10(buffer : SB, offset : u32) -> vec4 +fn tint_symbol_10([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec4 [[internal(intrinsic_load_storage_vec4_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_11(buffer : SB, offset : u32) -> vec4 +fn tint_symbol_11([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec4 -fn tint_symbol_12(buffer : SB, offset : u32) -> mat2x2 { +fn tint_symbol_12([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat2x2 { return mat2x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u))); } -fn tint_symbol_13(buffer : SB, offset : u32) -> mat2x3 { +fn tint_symbol_13([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat2x3 { return mat2x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u))); } -fn tint_symbol_14(buffer : SB, offset : u32) -> mat2x4 { +fn tint_symbol_14([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat2x4 { return mat2x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u))); } -fn tint_symbol_15(buffer : SB, offset : u32) -> mat3x2 { +fn tint_symbol_15([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat3x2 { return mat3x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u))); } -fn tint_symbol_16(buffer : SB, offset : u32) -> mat3x3 { +fn tint_symbol_16([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat3x3 { return mat3x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u))); } -fn tint_symbol_17(buffer : SB, offset : u32) -> mat3x4 { +fn tint_symbol_17([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat3x4 { return mat3x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u))); } -fn tint_symbol_18(buffer : SB, offset : u32) -> mat4x2 { +fn tint_symbol_18([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat4x2 { return mat4x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u))); } -fn tint_symbol_19(buffer : SB, offset : u32) -> mat4x3 { +fn tint_symbol_19([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat4x3 { return mat4x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u)), tint_symbol_8(buffer, (offset + 48u))); } -fn tint_symbol_20(buffer : SB, offset : u32) -> mat4x4 { +fn tint_symbol_20([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat4x4 { return mat4x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u)), tint_symbol_11(buffer, (offset + 48u))); } -fn tint_symbol_21(buffer : SB, offset : u32) -> array, 2> { +fn tint_symbol_21([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> array, 2> { return array, 2>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u))); } @@ -301,78 +301,78 @@ struct UB { }; [[internal(intrinsic_load_uniform_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : UB, offset : u32) -> i32 +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> i32 [[internal(intrinsic_load_uniform_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_1(buffer : UB, offset : u32) -> u32 +fn tint_symbol_1([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> u32 [[internal(intrinsic_load_uniform_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_2(buffer : UB, offset : u32) -> f32 +fn tint_symbol_2([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> f32 [[internal(intrinsic_load_uniform_vec2_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_3(buffer : UB, offset : u32) -> vec2 +fn tint_symbol_3([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec2 [[internal(intrinsic_load_uniform_vec2_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_4(buffer : UB, offset : u32) -> vec2 +fn tint_symbol_4([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec2 [[internal(intrinsic_load_uniform_vec2_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_5(buffer : UB, offset : u32) -> vec2 +fn tint_symbol_5([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec2 [[internal(intrinsic_load_uniform_vec3_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_6(buffer : UB, offset : u32) -> vec3 +fn tint_symbol_6([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec3 [[internal(intrinsic_load_uniform_vec3_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_7(buffer : UB, offset : u32) -> vec3 +fn tint_symbol_7([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec3 [[internal(intrinsic_load_uniform_vec3_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_8(buffer : UB, offset : u32) -> vec3 +fn tint_symbol_8([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec3 [[internal(intrinsic_load_uniform_vec4_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_9(buffer : UB, offset : u32) -> vec4 +fn tint_symbol_9([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec4 [[internal(intrinsic_load_uniform_vec4_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_10(buffer : UB, offset : u32) -> vec4 +fn tint_symbol_10([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec4 [[internal(intrinsic_load_uniform_vec4_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_11(buffer : UB, offset : u32) -> vec4 +fn tint_symbol_11([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> vec4 -fn tint_symbol_12(buffer : UB, offset : u32) -> mat2x2 { +fn tint_symbol_12([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat2x2 { return mat2x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u))); } -fn tint_symbol_13(buffer : UB, offset : u32) -> mat2x3 { +fn tint_symbol_13([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat2x3 { return mat2x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u))); } -fn tint_symbol_14(buffer : UB, offset : u32) -> mat2x4 { +fn tint_symbol_14([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat2x4 { return mat2x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u))); } -fn tint_symbol_15(buffer : UB, offset : u32) -> mat3x2 { +fn tint_symbol_15([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat3x2 { return mat3x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u))); } -fn tint_symbol_16(buffer : UB, offset : u32) -> mat3x3 { +fn tint_symbol_16([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat3x3 { return mat3x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u))); } -fn tint_symbol_17(buffer : UB, offset : u32) -> mat3x4 { +fn tint_symbol_17([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat3x4 { return mat3x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u))); } -fn tint_symbol_18(buffer : UB, offset : u32) -> mat4x2 { +fn tint_symbol_18([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat4x2 { return mat4x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u))); } -fn tint_symbol_19(buffer : UB, offset : u32) -> mat4x3 { +fn tint_symbol_19([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat4x3 { return mat4x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u)), tint_symbol_8(buffer, (offset + 48u))); } -fn tint_symbol_20(buffer : UB, offset : u32) -> mat4x4 { +fn tint_symbol_20([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> mat4x4 { return mat4x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u)), tint_symbol_11(buffer, (offset + 48u))); } -fn tint_symbol_21(buffer : UB, offset : u32) -> array, 2> { +fn tint_symbol_21([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : UB, offset : u32) -> array, 2> { return array, 2>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u))); } @@ -495,96 +495,96 @@ struct SB { }; [[internal(intrinsic_store_storage_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32, value : i32) +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : i32) [[internal(intrinsic_store_storage_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_1(buffer : SB, offset : u32, value : u32) +fn tint_symbol_1([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : u32) [[internal(intrinsic_store_storage_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_2(buffer : SB, offset : u32, value : f32) +fn tint_symbol_2([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : f32) [[internal(intrinsic_store_storage_vec2_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_3(buffer : SB, offset : u32, value : vec2) +fn tint_symbol_3([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec2) [[internal(intrinsic_store_storage_vec2_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_4(buffer : SB, offset : u32, value : vec2) +fn tint_symbol_4([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec2) [[internal(intrinsic_store_storage_vec2_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_5(buffer : SB, offset : u32, value : vec2) +fn tint_symbol_5([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec2) [[internal(intrinsic_store_storage_vec3_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_6(buffer : SB, offset : u32, value : vec3) +fn tint_symbol_6([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec3) [[internal(intrinsic_store_storage_vec3_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_7(buffer : SB, offset : u32, value : vec3) +fn tint_symbol_7([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec3) [[internal(intrinsic_store_storage_vec3_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_8(buffer : SB, offset : u32, value : vec3) +fn tint_symbol_8([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec3) [[internal(intrinsic_store_storage_vec4_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_9(buffer : SB, offset : u32, value : vec4) +fn tint_symbol_9([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec4) [[internal(intrinsic_store_storage_vec4_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_10(buffer : SB, offset : u32, value : vec4) +fn tint_symbol_10([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec4) [[internal(intrinsic_store_storage_vec4_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_11(buffer : SB, offset : u32, value : vec4) +fn tint_symbol_11([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec4) -fn tint_symbol_12(buffer : SB, offset : u32, value : mat2x2) { +fn tint_symbol_12([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat2x2) { tint_symbol_5(buffer, (offset + 0u), value[0u]); tint_symbol_5(buffer, (offset + 8u), value[1u]); } -fn tint_symbol_13(buffer : SB, offset : u32, value : mat2x3) { +fn tint_symbol_13([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat2x3) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); } -fn tint_symbol_14(buffer : SB, offset : u32, value : mat2x4) { +fn tint_symbol_14([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat2x4) { tint_symbol_11(buffer, (offset + 0u), value[0u]); tint_symbol_11(buffer, (offset + 16u), value[1u]); } -fn tint_symbol_15(buffer : SB, offset : u32, value : mat3x2) { +fn tint_symbol_15([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat3x2) { tint_symbol_5(buffer, (offset + 0u), value[0u]); tint_symbol_5(buffer, (offset + 8u), value[1u]); tint_symbol_5(buffer, (offset + 16u), value[2u]); } -fn tint_symbol_16(buffer : SB, offset : u32, value : mat3x3) { +fn tint_symbol_16([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat3x3) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); tint_symbol_8(buffer, (offset + 32u), value[2u]); } -fn tint_symbol_17(buffer : SB, offset : u32, value : mat3x4) { +fn tint_symbol_17([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat3x4) { tint_symbol_11(buffer, (offset + 0u), value[0u]); tint_symbol_11(buffer, (offset + 16u), value[1u]); tint_symbol_11(buffer, (offset + 32u), value[2u]); } -fn tint_symbol_18(buffer : SB, offset : u32, value : mat4x2) { +fn tint_symbol_18([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat4x2) { tint_symbol_5(buffer, (offset + 0u), value[0u]); tint_symbol_5(buffer, (offset + 8u), value[1u]); tint_symbol_5(buffer, (offset + 16u), value[2u]); tint_symbol_5(buffer, (offset + 24u), value[3u]); } -fn tint_symbol_19(buffer : SB, offset : u32, value : mat4x3) { +fn tint_symbol_19([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat4x3) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); tint_symbol_8(buffer, (offset + 32u), value[2u]); tint_symbol_8(buffer, (offset + 48u), value[3u]); } -fn tint_symbol_20(buffer : SB, offset : u32, value : mat4x4) { +fn tint_symbol_20([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat4x4) { tint_symbol_11(buffer, (offset + 0u), value[0u]); tint_symbol_11(buffer, (offset + 16u), value[1u]); tint_symbol_11(buffer, (offset + 32u), value[2u]); tint_symbol_11(buffer, (offset + 48u), value[3u]); } -fn tint_symbol_21(buffer : SB, offset : u32, value : array, 2>) { +fn tint_symbol_21([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : array, 2>) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); } @@ -687,82 +687,82 @@ struct SB { }; [[internal(intrinsic_load_storage_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32) -> i32 +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> i32 [[internal(intrinsic_load_storage_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_1(buffer : SB, offset : u32) -> u32 +fn tint_symbol_1([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> u32 [[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_2(buffer : SB, offset : u32) -> f32 +fn tint_symbol_2([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> f32 [[internal(intrinsic_load_storage_vec2_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_3(buffer : SB, offset : u32) -> vec2 +fn tint_symbol_3([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec2 [[internal(intrinsic_load_storage_vec2_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_4(buffer : SB, offset : u32) -> vec2 +fn tint_symbol_4([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec2 [[internal(intrinsic_load_storage_vec2_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_5(buffer : SB, offset : u32) -> vec2 +fn tint_symbol_5([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec2 [[internal(intrinsic_load_storage_vec3_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_6(buffer : SB, offset : u32) -> vec3 +fn tint_symbol_6([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec3 [[internal(intrinsic_load_storage_vec3_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_7(buffer : SB, offset : u32) -> vec3 +fn tint_symbol_7([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec3 [[internal(intrinsic_load_storage_vec3_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_8(buffer : SB, offset : u32) -> vec3 +fn tint_symbol_8([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec3 [[internal(intrinsic_load_storage_vec4_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_9(buffer : SB, offset : u32) -> vec4 +fn tint_symbol_9([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec4 [[internal(intrinsic_load_storage_vec4_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_10(buffer : SB, offset : u32) -> vec4 +fn tint_symbol_10([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec4 [[internal(intrinsic_load_storage_vec4_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_11(buffer : SB, offset : u32) -> vec4 +fn tint_symbol_11([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> vec4 -fn tint_symbol_12(buffer : SB, offset : u32) -> mat2x2 { +fn tint_symbol_12([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat2x2 { return mat2x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u))); } -fn tint_symbol_13(buffer : SB, offset : u32) -> mat2x3 { +fn tint_symbol_13([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat2x3 { return mat2x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u))); } -fn tint_symbol_14(buffer : SB, offset : u32) -> mat2x4 { +fn tint_symbol_14([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat2x4 { return mat2x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u))); } -fn tint_symbol_15(buffer : SB, offset : u32) -> mat3x2 { +fn tint_symbol_15([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat3x2 { return mat3x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u))); } -fn tint_symbol_16(buffer : SB, offset : u32) -> mat3x3 { +fn tint_symbol_16([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat3x3 { return mat3x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u))); } -fn tint_symbol_17(buffer : SB, offset : u32) -> mat3x4 { +fn tint_symbol_17([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat3x4 { return mat3x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u))); } -fn tint_symbol_18(buffer : SB, offset : u32) -> mat4x2 { +fn tint_symbol_18([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat4x2 { return mat4x2(tint_symbol_5(buffer, (offset + 0u)), tint_symbol_5(buffer, (offset + 8u)), tint_symbol_5(buffer, (offset + 16u)), tint_symbol_5(buffer, (offset + 24u))); } -fn tint_symbol_19(buffer : SB, offset : u32) -> mat4x3 { +fn tint_symbol_19([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat4x3 { return mat4x3(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u)), tint_symbol_8(buffer, (offset + 32u)), tint_symbol_8(buffer, (offset + 48u))); } -fn tint_symbol_20(buffer : SB, offset : u32) -> mat4x4 { +fn tint_symbol_20([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> mat4x4 { return mat4x4(tint_symbol_11(buffer, (offset + 0u)), tint_symbol_11(buffer, (offset + 16u)), tint_symbol_11(buffer, (offset + 32u)), tint_symbol_11(buffer, (offset + 48u))); } -fn tint_symbol_21(buffer : SB, offset : u32) -> array, 2> { +fn tint_symbol_21([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> array, 2> { return array, 2>(tint_symbol_8(buffer, (offset + 0u)), tint_symbol_8(buffer, (offset + 16u))); } -fn tint_symbol_22(buffer : SB, offset : u32) -> SB { +fn tint_symbol_22([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> SB { return SB(tint_symbol(buffer, (offset + 0u)), tint_symbol_1(buffer, (offset + 4u)), tint_symbol_2(buffer, (offset + 8u)), tint_symbol_3(buffer, (offset + 16u)), tint_symbol_4(buffer, (offset + 24u)), tint_symbol_5(buffer, (offset + 32u)), tint_symbol_6(buffer, (offset + 48u)), tint_symbol_7(buffer, (offset + 64u)), tint_symbol_8(buffer, (offset + 80u)), tint_symbol_9(buffer, (offset + 96u)), tint_symbol_10(buffer, (offset + 112u)), tint_symbol_11(buffer, (offset + 128u)), tint_symbol_12(buffer, (offset + 144u)), tint_symbol_13(buffer, (offset + 160u)), tint_symbol_14(buffer, (offset + 192u)), tint_symbol_15(buffer, (offset + 224u)), tint_symbol_16(buffer, (offset + 256u)), tint_symbol_17(buffer, (offset + 304u)), tint_symbol_18(buffer, (offset + 352u)), tint_symbol_19(buffer, (offset + 384u)), tint_symbol_20(buffer, (offset + 448u)), tint_symbol_21(buffer, (offset + 512u))); } @@ -843,101 +843,101 @@ struct SB { }; [[internal(intrinsic_store_storage_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32, value : i32) +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : i32) [[internal(intrinsic_store_storage_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_1(buffer : SB, offset : u32, value : u32) +fn tint_symbol_1([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : u32) [[internal(intrinsic_store_storage_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_2(buffer : SB, offset : u32, value : f32) +fn tint_symbol_2([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : f32) [[internal(intrinsic_store_storage_vec2_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_3(buffer : SB, offset : u32, value : vec2) +fn tint_symbol_3([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec2) [[internal(intrinsic_store_storage_vec2_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_4(buffer : SB, offset : u32, value : vec2) +fn tint_symbol_4([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec2) [[internal(intrinsic_store_storage_vec2_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_5(buffer : SB, offset : u32, value : vec2) +fn tint_symbol_5([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec2) [[internal(intrinsic_store_storage_vec3_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_6(buffer : SB, offset : u32, value : vec3) +fn tint_symbol_6([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec3) [[internal(intrinsic_store_storage_vec3_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_7(buffer : SB, offset : u32, value : vec3) +fn tint_symbol_7([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec3) [[internal(intrinsic_store_storage_vec3_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_8(buffer : SB, offset : u32, value : vec3) +fn tint_symbol_8([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec3) [[internal(intrinsic_store_storage_vec4_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_9(buffer : SB, offset : u32, value : vec4) +fn tint_symbol_9([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec4) [[internal(intrinsic_store_storage_vec4_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_10(buffer : SB, offset : u32, value : vec4) +fn tint_symbol_10([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec4) [[internal(intrinsic_store_storage_vec4_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_11(buffer : SB, offset : u32, value : vec4) +fn tint_symbol_11([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : vec4) -fn tint_symbol_12(buffer : SB, offset : u32, value : mat2x2) { +fn tint_symbol_12([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat2x2) { tint_symbol_5(buffer, (offset + 0u), value[0u]); tint_symbol_5(buffer, (offset + 8u), value[1u]); } -fn tint_symbol_13(buffer : SB, offset : u32, value : mat2x3) { +fn tint_symbol_13([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat2x3) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); } -fn tint_symbol_14(buffer : SB, offset : u32, value : mat2x4) { +fn tint_symbol_14([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat2x4) { tint_symbol_11(buffer, (offset + 0u), value[0u]); tint_symbol_11(buffer, (offset + 16u), value[1u]); } -fn tint_symbol_15(buffer : SB, offset : u32, value : mat3x2) { +fn tint_symbol_15([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat3x2) { tint_symbol_5(buffer, (offset + 0u), value[0u]); tint_symbol_5(buffer, (offset + 8u), value[1u]); tint_symbol_5(buffer, (offset + 16u), value[2u]); } -fn tint_symbol_16(buffer : SB, offset : u32, value : mat3x3) { +fn tint_symbol_16([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat3x3) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); tint_symbol_8(buffer, (offset + 32u), value[2u]); } -fn tint_symbol_17(buffer : SB, offset : u32, value : mat3x4) { +fn tint_symbol_17([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat3x4) { tint_symbol_11(buffer, (offset + 0u), value[0u]); tint_symbol_11(buffer, (offset + 16u), value[1u]); tint_symbol_11(buffer, (offset + 32u), value[2u]); } -fn tint_symbol_18(buffer : SB, offset : u32, value : mat4x2) { +fn tint_symbol_18([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat4x2) { tint_symbol_5(buffer, (offset + 0u), value[0u]); tint_symbol_5(buffer, (offset + 8u), value[1u]); tint_symbol_5(buffer, (offset + 16u), value[2u]); tint_symbol_5(buffer, (offset + 24u), value[3u]); } -fn tint_symbol_19(buffer : SB, offset : u32, value : mat4x3) { +fn tint_symbol_19([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat4x3) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); tint_symbol_8(buffer, (offset + 32u), value[2u]); tint_symbol_8(buffer, (offset + 48u), value[3u]); } -fn tint_symbol_20(buffer : SB, offset : u32, value : mat4x4) { +fn tint_symbol_20([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : mat4x4) { tint_symbol_11(buffer, (offset + 0u), value[0u]); tint_symbol_11(buffer, (offset + 16u), value[1u]); tint_symbol_11(buffer, (offset + 32u), value[2u]); tint_symbol_11(buffer, (offset + 48u), value[3u]); } -fn tint_symbol_21(buffer : SB, offset : u32, value : array, 2>) { +fn tint_symbol_21([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : array, 2>) { tint_symbol_8(buffer, (offset + 0u), value[0u]); tint_symbol_8(buffer, (offset + 16u), value[1u]); } -fn tint_symbol_22(buffer : SB, offset : u32, value : SB) { +fn tint_symbol_22([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, value : SB) { tint_symbol(buffer, (offset + 0u), value.a); tint_symbol_1(buffer, (offset + 4u), value.b); tint_symbol_2(buffer, (offset + 8u), value.c); @@ -1032,7 +1032,7 @@ struct SB { }; [[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32) -> f32 +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> f32 [[group(0), binding(0)]] var sb : SB; @@ -1100,7 +1100,7 @@ struct SB { }; [[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32) -> f32 +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> f32 [[group(0), binding(0)]] var sb : SB; @@ -1187,7 +1187,7 @@ struct SB { }; [[internal(intrinsic_load_storage_f32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32) -> f32 +fn tint_symbol([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> f32 [[group(0), binding(0)]] var sb : SB; @@ -1251,64 +1251,64 @@ struct SB { }; [[internal(intrinsic_atomic_store_storage_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol(buffer : SB, offset : u32, param_1 : i32) +fn tint_symbol([[internal(disable_validation__ignore_atomic_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(buffer : SB, offset : u32) -> i32 +fn tint_symbol_1([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> i32 [[internal(intrinsic_atomic_add_storage_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_2(buffer : SB, offset : u32, param_1 : i32) -> i32 +fn tint_symbol_2([[internal(disable_validation__ignore_atomic_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_3(buffer : SB, offset : u32, param_1 : i32) -> i32 +fn tint_symbol_3([[internal(disable_validation__ignore_atomic_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_4(buffer : SB, offset : u32, param_1 : i32) -> i32 +fn tint_symbol_4([[internal(disable_validation__ignore_atomic_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_5(buffer : SB, offset : u32, param_1 : i32) -> i32 +fn tint_symbol_5([[internal(disable_validation__ignore_atomic_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_6(buffer : SB, offset : u32, param_1 : i32) -> i32 +fn tint_symbol_6([[internal(disable_validation__ignore_atomic_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_7(buffer : SB, offset : u32, param_1 : i32) -> i32 +fn tint_symbol_7([[internal(disable_validation__ignore_atomic_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_8(buffer : SB, offset : u32, param_1 : i32) -> i32 +fn tint_symbol_8([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, param_1 : i32) -> i32 [[internal(intrinsic_atomic_compare_exchange_weak_storage_i32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_9(buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> vec2 +fn tint_symbol_9([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, param_1 : i32, param_2 : i32) -> vec2 [[internal(intrinsic_atomic_store_storage_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_10(buffer : SB, offset : u32, param_1 : u32) +fn tint_symbol_10([[internal(disable_validation__ignore_atomic_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_11(buffer : SB, offset : u32) -> u32 +fn tint_symbol_11([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32) -> u32 [[internal(intrinsic_atomic_add_storage_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_12(buffer : SB, offset : u32, param_1 : u32) -> u32 +fn tint_symbol_12([[internal(disable_validation__ignore_atomic_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_13(buffer : SB, offset : u32, param_1 : u32) -> u32 +fn tint_symbol_13([[internal(disable_validation__ignore_atomic_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_14(buffer : SB, offset : u32, param_1 : u32) -> u32 +fn tint_symbol_14([[internal(disable_validation__ignore_atomic_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_15(buffer : SB, offset : u32, param_1 : u32) -> u32 +fn tint_symbol_15([[internal(disable_validation__ignore_atomic_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_16(buffer : SB, offset : u32, param_1 : u32) -> u32 +fn tint_symbol_16([[internal(disable_validation__ignore_atomic_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_17(buffer : SB, offset : u32, param_1 : u32) -> u32 +fn tint_symbol_17([[internal(disable_validation__ignore_atomic_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_18(buffer : SB, offset : u32, param_1 : u32) -> u32 +fn tint_symbol_18([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, param_1 : u32) -> u32 [[internal(intrinsic_atomic_compare_exchange_weak_storage_u32), internal(disable_validation__function_has_no_body)]] -fn tint_symbol_19(buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> vec2 +fn tint_symbol_19([[internal(disable_validation__ignore_atomic_function_parameter)]] buffer : SB, offset : u32, param_1 : u32, param_2 : u32) -> vec2 [[group(0), binding(0)]] var sb : SB;