summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/hlsl-intrinsic/scalar-int64.slang15
-rw-r--r--tests/hlsl-intrinsic/scalar-int64.slang.expected.txt6
-rw-r--r--tests/hlsl-intrinsic/scalar-uint64.slang17
-rw-r--r--tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt8
4 files changed, 34 insertions, 12 deletions
diff --git a/tests/hlsl-intrinsic/scalar-int64.slang b/tests/hlsl-intrinsic/scalar-int64.slang
index 17ab4a9f9..68f3c4da9 100644
--- a/tests/hlsl-intrinsic/scalar-int64.slang
+++ b/tests/hlsl-intrinsic/scalar-int64.slang
@@ -20,10 +20,21 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
ti += max(2, idx);
ti += min(idx, 1);
ti += abs(idx - 2);
- ti += (idx * 3) % 5;
-
ti += clamp(idx * 10, 11, 23);
+ // Math
+ ti = ti - idx;
+ ti = ti + (ti % (idx + 5));
+ ti = ti + (ti / (idx + 20));
+
+ // Logical ops
+ ti = ti | idx;
+ ti = ti ^ (idx & (idx + 1));
+
+ // Shift
+ ti = ti + (idx >> 1);
+ ti = ti + (idx << 2);
+
int64_t v = (ti * 0x400010035435435ll) / 3ll + 7ll - 9ll;
outputBuffer[idx] = int(v) ^ int(((v >> 32) & 0xffffffff));
diff --git a/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt b/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
index 6ca5a87e0..d98a04780 100644
--- a/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
+++ b/tests/hlsl-intrinsic/scalar-int64.slang.expected.txt
@@ -1,4 +1,4 @@
1E50A006
-2793FF3D
-8A1AA9A7
-ED76E236
+68D74A70
+3CA14012
+FB81B54E
diff --git a/tests/hlsl-intrinsic/scalar-uint64.slang b/tests/hlsl-intrinsic/scalar-uint64.slang
index f195f17f2..089a756fa 100644
--- a/tests/hlsl-intrinsic/scalar-uint64.slang
+++ b/tests/hlsl-intrinsic/scalar-uint64.slang
@@ -19,13 +19,24 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
uint64_t ti = 0;
ti += max(2, idx);
- ti += min(idx, 1ull);
- ti += (idx * 3) % 5;
-
+ ti += min(idx, 1ull);
ti += clamp(idx * 10, 11, 23);
ti += countbits(idx * 13);
+ // Math
+ ti = ti - idx;
+ ti = ti + (ti % (idx + 5));
+ ti = ti + (ti / (idx + 20));
+
+ // Logical ops
+ ti = ti | idx;
+ ti = ti ^ (idx & (idx + 1));
+
+ // Shift
+ ti = ti + (idx >> 1);
+ ti = ti + (idx << 2);
+
uint64_t v = uint64_t(ti) * 0x8000100354354354ull;
// Let's check all the bits make it
uint64_t u = v | 0x8000000000000000ull;
diff --git a/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt b/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
index d3843ea52..460172e38 100644
--- a/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
+++ b/tests/hlsl-intrinsic/scalar-uint64.slang.expected.txt
@@ -1,4 +1,4 @@
-C6B4BB6F
-142802D2
-619FA985
-34A0408
+C3553575
+B9320367
+ABB0EB5F
+49FF9F5F