summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorjsmall-nvidia <jsmall@nvidia.com>2020-01-30 16:28:50 -0500
committerGitHub <noreply@github.com>2020-01-30 16:28:50 -0500
commit5942ff81d9a63ee1e37ba81172ea579646be774e (patch)
tree2a4cdb5851348f11a8fcde1605e81c29c1227727 /tests
parent415409fc10cfd0d6b2eb805df8f37bdabc4f2405 (diff)
Support for 64 bit integer types (#1191)
* * For integer literals add postfix, and use unsigned/signed output appropriately * Extend GLSL extension handling by type, and for adding 64 bit int extensions * Added tests for int/uint64 types * Add explicit Int/UInt64 emit functions to avoid ambiguity.
Diffstat (limited to 'tests')
-rw-r--r--tests/hlsl-intrinsic/scalar-int64.slang21
-rw-r--r--tests/hlsl-intrinsic/scalar-int64.slang.expected.txt4
-rw-r--r--tests/hlsl-intrinsic/scalar-uint64.slang24
-rw-r--r--tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt4
4 files changed, 53 insertions, 0 deletions
diff --git a/tests/hlsl-intrinsic/scalar-int64.slang b/tests/hlsl-intrinsic/scalar-int64.slang
new file mode 100644
index 000000000..4da2a553e
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-int64.slang
@@ -0,0 +1,21 @@
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+// No support for int64_t on dx11
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+// No support for int64_t on HLSL
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -use-dxil
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ uint idx = dispatchThreadID.x;
+
+ int64_t v = int64_t(idx) * 0x400010035435435ll;
+
+ outputBuffer[idx] = int(v) ^ int(((v >> 32) & 0xffffffff));
+} \ No newline at end of file
diff --git a/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt b/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
new file mode 100644
index 000000000..c0bb016cd
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
@@ -0,0 +1,4 @@
+0
+31435535
+6286AA6A
+93C9FF9F
diff --git a/tests/hlsl-intrinsic/scalar-uint64.slang b/tests/hlsl-intrinsic/scalar-uint64.slang
new file mode 100644
index 000000000..a990ccc22
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-uint64.slang
@@ -0,0 +1,24 @@
+//TEST(compute):COMPARE_COMPUTE_EX:-cpu -compute
+// No support for uint64_t on DX11
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute
+// No support for uint64_t on fxc - we need SM6.0 and dxil
+// https://docs.microsoft.com/en-us/windows/win32/direct3dhlsl/hlsl-shader-model-6-0-features-for-direct3d-12
+//DISABLE_TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12
+//TEST(compute):COMPARE_COMPUTE_EX:-slang -compute -dx12 -profile cs_6_3 -use-dxil
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-vk -compute
+//TEST(compute, vulkan):COMPARE_COMPUTE_EX:-cuda -compute
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ uint idx = dispatchThreadID.x;
+
+ uint64_t v = uint64_t(idx) * 0x8000100354354354ull;
+ // Let's check all the bits make it
+ v |= 0x8000000000000000ull;
+
+ outputBuffer[idx] = int(v) ^ int(v >> 32);
+} \ No newline at end of file
diff --git a/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt b/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
new file mode 100644
index 000000000..b8be0469a
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
@@ -0,0 +1,4 @@
+80000000
+D4355357
+286AA6AE
+7C9FF9F5