From 6f31eae79d5b4297d0099c5779a9806a786cf9f8 Mon Sep 17 00:00:00 2001 From: Yong He Date: Wed, 1 Mar 2023 13:19:33 -0800 Subject: Implement derivatives for HLSL intrinsics. (#2684) * Implement derivatives for HLSL intrinsics. * Vector intrinsics. * Add all intrinsics. --------- Co-authored-by: Yong He --- tests/autodiff-dstdlib/vector-cross.slang | 40 +++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 tests/autodiff-dstdlib/vector-cross.slang (limited to 'tests/autodiff-dstdlib/vector-cross.slang') diff --git a/tests/autodiff-dstdlib/vector-cross.slang b/tests/autodiff-dstdlib/vector-cross.slang new file mode 100644 index 000000000..be08894cb --- /dev/null +++ b/tests/autodiff-dstdlib/vector-cross.slang @@ -0,0 +1,40 @@ +//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type +//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type + +//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0 0 0 0 0], stride=4):out,name=outputBuffer +RWStructuredBuffer outputBuffer; + +[BackwardDifferentiable] +float3 crossImpl(float3 x, float3 y) +{ + return float3(x.y * y.z - y.y * x.z, + x.z * y.x - y.z * x.x, + x.x * y.y - y.x * x.y); +} + +[numthreads(1, 1, 1)] +void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID) +{ + { + let x = float3(-0.51, 0.74, 0.86); + let y = float3(1.43, -0.92, 4.36); + let dOut = float3(3.41, 6.55, 2.39); + var dpx = diffPair(x); + var dpy = diffPair(y); + __bwd_diff(cross)(dpx, dpy, dOut); + outputBuffer[0] = dpx.d[0]; + outputBuffer[1] = dpx.d[1]; + outputBuffer[2] = dpx.d[2]; + outputBuffer[3] = dpy.d[0]; + outputBuffer[4] = dpy.d[1]; + outputBuffer[5] = dpy.d[2]; + + __bwd_diff(crossImpl)(dpx, dpy, dOut); + outputBuffer[6] = dpx.d[0]; + outputBuffer[7] = dpx.d[1]; + outputBuffer[8] = dpx.d[2]; + outputBuffer[9] = dpy.d[0]; + outputBuffer[10] = dpy.d[1]; + outputBuffer[11] = dpy.d[2]; + } +} -- cgit v1.2.3