summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/library/export-library-generics.slang4
-rw-r--r--tests/library/module-library-pointer-param.slang10
-rw-r--r--tests/library/precompiled-dxil-generics.slang2
-rw-r--r--tests/library/precompiled-spirv-generics.slang2
-rw-r--r--tests/library/precompiled-spirv-pointer-param.slang31
5 files changed, 45 insertions, 4 deletions
diff --git a/tests/library/export-library-generics.slang b/tests/library/export-library-generics.slang
index f88541da3..3f17e0664 100644
--- a/tests/library/export-library-generics.slang
+++ b/tests/library/export-library-generics.slang
@@ -33,7 +33,7 @@ public int normalFuncUsesGeneric(int a)
return genericFunc(obj);
}
-public int normalFunc(int a)
+public int normalFunc(int a, float b)
{
- return a - 2;
+ return a - floor(b);
}
diff --git a/tests/library/module-library-pointer-param.slang b/tests/library/module-library-pointer-param.slang
new file mode 100644
index 000000000..fff4f67c6
--- /dev/null
+++ b/tests/library/module-library-pointer-param.slang
@@ -0,0 +1,10 @@
+//TEST_IGNORE_FILE:
+
+// module-library-pointer-param.slang
+
+module "module-library-pointer-param";
+
+public int ptrFunc(int* a)
+{
+ return *a;
+}
diff --git a/tests/library/precompiled-dxil-generics.slang b/tests/library/precompiled-dxil-generics.slang
index a0b371519..a57f31ac0 100644
--- a/tests/library/precompiled-dxil-generics.slang
+++ b/tests/library/precompiled-dxil-generics.slang
@@ -24,5 +24,5 @@ struct Attributes
[shader("anyhit")]
void anyhit(inout Payload payload, Attributes attrib)
{
- payload.val = normalFunc(x * y) + normalFuncUsesGeneric(y);
+ payload.val = normalFunc(floor(x * y), x) + normalFuncUsesGeneric(y);
}
diff --git a/tests/library/precompiled-spirv-generics.slang b/tests/library/precompiled-spirv-generics.slang
index a55f58513..64fd8a64c 100644
--- a/tests/library/precompiled-spirv-generics.slang
+++ b/tests/library/precompiled-spirv-generics.slang
@@ -24,5 +24,5 @@ struct Attributes
[shader("anyhit")]
void anyhit(inout Payload payload, Attributes attrib)
{
- payload.val = normalFunc(x * y) + normalFuncUsesGeneric(y);
+ payload.val = normalFunc(floor(x * y), x) + normalFuncUsesGeneric(y);
}
diff --git a/tests/library/precompiled-spirv-pointer-param.slang b/tests/library/precompiled-spirv-pointer-param.slang
new file mode 100644
index 000000000..10cd7124b
--- /dev/null
+++ b/tests/library/precompiled-spirv-pointer-param.slang
@@ -0,0 +1,31 @@
+// precompiled-spirv-pointer-param.slang
+
+// A test that uses slang-modules with embedded precompiled SPIRV and a library containing
+// a function with a pointer parameter.
+// The test compiles a library slang (module-library-pointer-param.slang) with -embed-downstream-ir then links the
+// library to entrypoint slang (this file).
+// The test passes if there is no errror thrown.
+// TODO: Check if final linkage used only the precompiled spirv.
+
+//TEST:COMPILE: tests/library/module-library-pointer-param.slang -o tests/library/module-library-pointer-param.slang-module -target spirv -embed-downstream-ir -incomplete-library
+//TEST:COMPILE: tests/library/precompiled-spirv-pointer-param.slang -target spirv -stage anyhit -entry anyhit -o tests/library/linked.spirv
+
+import "module-library-pointer-param";
+
+struct Payload
+{
+ int val;
+}
+
+struct Attributes
+{
+ float2 bary;
+}
+
+[vk::push_constant] int* g_int;
+
+[shader("anyhit")]
+void anyhit(inout Payload payload, Attributes attrib)
+{
+ payload.val = ptrFunc(g_int);
+}