summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/autodiff/inout-parameters-jvp.slang30
-rw-r--r--tests/autodiff/inout-parameters-jvp.slang.expected.txt5
-rw-r--r--tests/autodiff/out-parameters-jvp.slang28
-rw-r--r--tests/autodiff/out-parameters-jvp.slang.expected.txt5
4 files changed, 68 insertions, 0 deletions
diff --git a/tests/autodiff/inout-parameters-jvp.slang b/tests/autodiff/inout-parameters-jvp.slang
new file mode 100644
index 000000000..989e56c02
--- /dev/null
+++ b/tests/autodiff/inout-parameters-jvp.slang
@@ -0,0 +1,30 @@
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
+RWStructuredBuffer<float> outputBuffer;
+
+__differentiate_jvp void h(float x, float y, inout float z)
+{
+ float m = x + y;
+ float n = x - y;
+ z = z + m * n + 2 * x * y;
+}
+
+
+[numthreads(1, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ float x = 2.0;
+ float y = 3.5;
+ float z = 1.0;
+ float dx = 1.0;
+ float dy = 0.5;
+ float dz = 2.5;
+
+ __jvp(h)(x, y, z, dx, dy, dz);
+
+ outputBuffer[0] = dz; // Expect: 12.0
+ outputBuffer[1] = z; // Expect: 1.0
+
+} \ No newline at end of file
diff --git a/tests/autodiff/inout-parameters-jvp.slang.expected.txt b/tests/autodiff/inout-parameters-jvp.slang.expected.txt
new file mode 100644
index 000000000..d8a590c0e
--- /dev/null
+++ b/tests/autodiff/inout-parameters-jvp.slang.expected.txt
@@ -0,0 +1,5 @@
+type: float
+12.0
+1.0
+0.0
+0.0 \ No newline at end of file
diff --git a/tests/autodiff/out-parameters-jvp.slang b/tests/autodiff/out-parameters-jvp.slang
new file mode 100644
index 000000000..58c6cfeb0
--- /dev/null
+++ b/tests/autodiff/out-parameters-jvp.slang
@@ -0,0 +1,28 @@
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -shaderobj -output-using-type
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute -shaderobj -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name=outputBuffer
+RWStructuredBuffer<float> outputBuffer;
+
+__differentiate_jvp void h(float x, float y, out float result)
+{
+ float m = x + y;
+ float n = x - y;
+ result = m * n + 2 * x * y;
+}
+
+
+[numthreads(1, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ float x = 2.0;
+ float y = 3.5;
+ float dx = 1.0;
+ float dy = 0.5;
+
+ float dresult = 0.0f;
+ __jvp(h)(x, y, dx, dy, dresult);
+
+ outputBuffer[0] = dresult; // Expect: 9.5
+
+} \ No newline at end of file
diff --git a/tests/autodiff/out-parameters-jvp.slang.expected.txt b/tests/autodiff/out-parameters-jvp.slang.expected.txt
new file mode 100644
index 000000000..555935fc4
--- /dev/null
+++ b/tests/autodiff/out-parameters-jvp.slang.expected.txt
@@ -0,0 +1,5 @@
+type: float
+9.5
+0.0
+0.0
+0.0 \ No newline at end of file