Skip to content

Commit

Permalink
[WebGPU] error: use of undeclared identifier 'inverseSqrt' opening ht…
Browse files Browse the repository at this point in the history
…tps://threejs.org/examples/?q=webgpu#webgpu_clearcoat

https://bugs.webkit.org/show_bug.cgi?id=264141
rdar://117892734

Reviewed by Mike Wyrzykowski.

Add code generation for inverseSqrt, just translates directly to Metal's rsqrt

* Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp:
(WGSL::Metal::FunctionDefinitionWriter::visit):
* Source/WebGPU/WGSL/tests/valid/overload.wgsl:

Canonical link: https://commits.webkit.org/270260@main
  • Loading branch information
tadeuzagallo committed Nov 6, 2023
1 parent 8d5247e commit f1a3f7b
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
1 change: 1 addition & 0 deletions Source/WebGPU/WGSL/Metal/MetalFunctionWriter.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1395,6 +1395,7 @@ void FunctionDefinitionWriter::visit(const Type* type, AST::CallExpression& call
{ "dpdyFine", "dfdy"_s },
{ "fwidthCoarse", "fwidth"_s },
{ "fwidthFine", "fwidth"_s },
{ "inverseSqrt", "rsqrt"_s },
};
static constexpr SortedArrayMap mappedNames { directMappings };
if (call.isConstructor()) {
Expand Down
31 changes: 19 additions & 12 deletions Source/WebGPU/WGSL/tests/valid/overload.wgsl
Original file line number Diff line number Diff line change
Expand Up @@ -1402,30 +1402,37 @@ fn testInsertBits()
}

// 17.5.34
// RUN: %metal-compile testInverseSqrt
@compute @workgroup_size(1)
fn testInverseSqrt()
{
// [T < Float].(T) => T,
let x = 2.f;
{
_ = inverseSqrt(0);
_ = inverseSqrt(0.0);
_ = inverseSqrt(1f);
_ = inverseSqrt(2);
_ = inverseSqrt(2.0);
_ = inverseSqrt(2f);
_ = inverseSqrt(x);
}

// [T < Float, N].(Vector[T, N]) => Vector[T, N],
{
_ = inverseSqrt(vec2(0));
_ = inverseSqrt(vec2(0.0));
_ = inverseSqrt(vec2(1f));
_ = inverseSqrt(vec2(2));
_ = inverseSqrt(vec2(2.0));
_ = inverseSqrt(vec2(2f));
_ = inverseSqrt(vec2(x));
}
{
_ = inverseSqrt(vec3(-1));
_ = inverseSqrt(vec3(-1.0));
_ = inverseSqrt(vec3(-1f));
_ = inverseSqrt(vec3(2));
_ = inverseSqrt(vec3(2.0));
_ = inverseSqrt(vec3(2f));
_ = inverseSqrt(vec3(x));
}
{
_ = inverseSqrt(vec4(-1));
_ = inverseSqrt(vec4(-1.0));
_ = inverseSqrt(vec4(-1f));
_ = inverseSqrt(vec4(2));
_ = inverseSqrt(vec4(2.0));
_ = inverseSqrt(vec4(2f));
_ = inverseSqrt(vec4(x));
}
}

Expand Down

0 comments on commit f1a3f7b

Please sign in to comment.