summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2024-07-10 15:10:25 +0800
committerGitHub <noreply@github.com>2024-07-10 15:10:25 +0800
commit97bd7e69f76dc63a4f97321e6f4edbdb692588cc (patch)
treeeaf8edea15c39f9667ec3d52d2f2f5d52c425c3b
parentcde025ec6dbfe6664c16587b561bd6384de2293f (diff)
Add individual tests for scalar double intrinsics (#4591)
-rw-r--r--tests/hlsl-intrinsic/scalar-double-.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-abs.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-abs.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-acos.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-acos.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-asdouble.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-asdouble.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-asin.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-asin.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-asuint.slang13
-rw-r--r--tests/hlsl-intrinsic/scalar-double-asuint.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-atan.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-atan.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-atan2.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-atan2.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-ceil.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-ceil.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-clamp.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-clamp.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-cos.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-cos.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-exp.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-exp.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-exp2.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-exp2.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-floor.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-floor.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-frac.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-frac.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-ldexp.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-ldexp.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-lerp.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-lerp.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-log.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-log.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-log2.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-log2.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-max.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-max.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-min.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-min.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-pow.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-pow.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-rcp.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-rcp.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-rsqrt.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-rsqrt.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-saturate.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-saturate.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sign.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sign.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sin.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sin.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sincos.slang13
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sincos.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-smoothstep.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-smoothstep.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sqrt.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-sqrt.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-step.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-step.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-tan.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-tan.slang.expected.txt5
-rw-r--r--tests/hlsl-intrinsic/scalar-double-trunc.slang10
-rw-r--r--tests/hlsl-intrinsic/scalar-double-trunc.slang.expected.txt5
65 files changed, 491 insertions, 0 deletions
diff --git a/tests/hlsl-intrinsic/scalar-double-.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-.slang.expected.txt
new file mode 100644
index 000000000..8f4fc17f6
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+150
+300
+600
+1200
diff --git a/tests/hlsl-intrinsic/scalar-double-abs.slang b/tests/hlsl-intrinsic/scalar-double-abs.slang
new file mode 100644
index 000000000..c4b7e65ed
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-abs.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(abs(double(i) - 1.5) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-abs.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-abs.slang.expected.txt
new file mode 100644
index 000000000..3aab68509
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-abs.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+150
+50
+50
+150
diff --git a/tests/hlsl-intrinsic/scalar-double-acos.slang b/tests/hlsl-intrinsic/scalar-double-acos.slang
new file mode 100644
index 000000000..da875f895
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-acos.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(acos(double(i) / 3.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-acos.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-acos.slang.expected.txt
new file mode 100644
index 000000000..ad4630040
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-acos.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+157
+123
+84
+0
diff --git a/tests/hlsl-intrinsic/scalar-double-asdouble.slang b/tests/hlsl-intrinsic/scalar-double-asdouble.slang
new file mode 100644
index 000000000..1aca3867a
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-asdouble.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(asdouble(uint(i * 2), uint(i * 2 + 1)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-asdouble.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-asdouble.slang.expected.txt
new file mode 100644
index 000000000..b9efb5a97
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-asdouble.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+0
+0
+0
diff --git a/tests/hlsl-intrinsic/scalar-double-asin.slang b/tests/hlsl-intrinsic/scalar-double-asin.slang
new file mode 100644
index 000000000..37a493fac
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-asin.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(asin(double(i) / 3.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-asin.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-asin.slang.expected.txt
new file mode 100644
index 000000000..b5bc8a81c
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-asin.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+33
+72
+157
diff --git a/tests/hlsl-intrinsic/scalar-double-asuint.slang b/tests/hlsl-intrinsic/scalar-double-asuint.slang
new file mode 100644
index 000000000..b2fab7c7d
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-asuint.slang
@@ -0,0 +1,13 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ uint low, high;
+ asuint(double(i), low, high);
+ outputBuffer[i * 2] = int(low);
+ outputBuffer[i * 2 + 1] = int(high);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-asuint.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-asuint.slang.expected.txt
new file mode 100644
index 000000000..3d08e2c51
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-asuint.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+0
+0
+1072693248
diff --git a/tests/hlsl-intrinsic/scalar-double-atan.slang b/tests/hlsl-intrinsic/scalar-double-atan.slang
new file mode 100644
index 000000000..02af3f7ea
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-atan.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(atan(double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-atan.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-atan.slang.expected.txt
new file mode 100644
index 000000000..ca43262d1
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-atan.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+78
+110
+124
diff --git a/tests/hlsl-intrinsic/scalar-double-atan2.slang b/tests/hlsl-intrinsic/scalar-double-atan2.slang
new file mode 100644
index 000000000..f806ef8d2
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-atan2.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(atan2(double(i), 2.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-atan2.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-atan2.slang.expected.txt
new file mode 100644
index 000000000..0314fa635
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-atan2.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+46
+78
+98
diff --git a/tests/hlsl-intrinsic/scalar-double-ceil.slang b/tests/hlsl-intrinsic/scalar-double-ceil.slang
new file mode 100644
index 000000000..73f7862cf
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-ceil.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(ceil(double(i) - 0.5) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-ceil.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-ceil.slang.expected.txt
new file mode 100644
index 000000000..4dfaed307
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-ceil.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+100
+200
+300
diff --git a/tests/hlsl-intrinsic/scalar-double-clamp.slang b/tests/hlsl-intrinsic/scalar-double-clamp.slang
new file mode 100644
index 000000000..f123c52b4
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-clamp.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(clamp(double(i), 1.0, 2.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-clamp.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-clamp.slang.expected.txt
new file mode 100644
index 000000000..3f065bde2
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-clamp.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+100
+100
+200
+200
diff --git a/tests/hlsl-intrinsic/scalar-double-cos.slang b/tests/hlsl-intrinsic/scalar-double-cos.slang
new file mode 100644
index 000000000..c7f0abe25
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-cos.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(cos(double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-cos.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-cos.slang.expected.txt
new file mode 100644
index 000000000..1e70b8eff
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-cos.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+100
+54
+-41
+-98
diff --git a/tests/hlsl-intrinsic/scalar-double-exp.slang b/tests/hlsl-intrinsic/scalar-double-exp.slang
new file mode 100644
index 000000000..6748bbcdd
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-exp.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(exp(double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-exp.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-exp.slang.expected.txt
new file mode 100644
index 000000000..3ba256bdb
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-exp.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+100
+271
+738
+2008
diff --git a/tests/hlsl-intrinsic/scalar-double-exp2.slang b/tests/hlsl-intrinsic/scalar-double-exp2.slang
new file mode 100644
index 000000000..2bf2d5db7
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-exp2.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(exp2(double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-exp2.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-exp2.slang.expected.txt
new file mode 100644
index 000000000..0cd919963
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-exp2.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+100
+200
+400
+800
diff --git a/tests/hlsl-intrinsic/scalar-double-floor.slang b/tests/hlsl-intrinsic/scalar-double-floor.slang
new file mode 100644
index 000000000..75f079284
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-floor.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(floor(double(i) + 0.5) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-floor.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-floor.slang.expected.txt
new file mode 100644
index 000000000..4dfaed307
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-floor.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+100
+200
+300
diff --git a/tests/hlsl-intrinsic/scalar-double-frac.slang b/tests/hlsl-intrinsic/scalar-double-frac.slang
new file mode 100644
index 000000000..85aa81cb9
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-frac.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(frac(double(i) * 1.5) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-frac.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-frac.slang.expected.txt
new file mode 100644
index 000000000..6b1afa87d
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-frac.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+50
+0
+50
diff --git a/tests/hlsl-intrinsic/scalar-double-ldexp.slang b/tests/hlsl-intrinsic/scalar-double-ldexp.slang
new file mode 100644
index 000000000..ebd1c9d6c
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-ldexp.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(ldexp(1.5, int(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-ldexp.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-ldexp.slang.expected.txt
new file mode 100644
index 000000000..8f4fc17f6
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-ldexp.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+150
+300
+600
+1200
diff --git a/tests/hlsl-intrinsic/scalar-double-lerp.slang b/tests/hlsl-intrinsic/scalar-double-lerp.slang
new file mode 100644
index 000000000..e304b4e67
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-lerp.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(lerp(-100.0, 100.0, double(i) / 3.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-lerp.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-lerp.slang.expected.txt
new file mode 100644
index 000000000..2a7b8f710
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-lerp.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+-10000
+-3333
+3333
+10000
diff --git a/tests/hlsl-intrinsic/scalar-double-log.slang b/tests/hlsl-intrinsic/scalar-double-log.slang
new file mode 100644
index 000000000..8dbc01815
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-log.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(log(double(i) + 1.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-log.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-log.slang.expected.txt
new file mode 100644
index 000000000..e4a6603c4
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-log.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+69
+109
+138
diff --git a/tests/hlsl-intrinsic/scalar-double-log2.slang b/tests/hlsl-intrinsic/scalar-double-log2.slang
new file mode 100644
index 000000000..ca06ab05a
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-log2.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(log2(double(i) + 1.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-log2.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-log2.slang.expected.txt
new file mode 100644
index 000000000..2edb16061
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-log2.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+100
+158
+200
diff --git a/tests/hlsl-intrinsic/scalar-double-max.slang b/tests/hlsl-intrinsic/scalar-double-max.slang
new file mode 100644
index 000000000..e5e1f3156
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-max.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(max(1.0, double(i) / 2.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-max.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-max.slang.expected.txt
new file mode 100644
index 000000000..163764465
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-max.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+100
+100
+100
+150
diff --git a/tests/hlsl-intrinsic/scalar-double-min.slang b/tests/hlsl-intrinsic/scalar-double-min.slang
new file mode 100644
index 000000000..a90d11665
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-min.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(min(1.0, double(i) / 2.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-min.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-min.slang.expected.txt
new file mode 100644
index 000000000..c0bbd3650
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-min.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+50
+100
+100
diff --git a/tests/hlsl-intrinsic/scalar-double-pow.slang b/tests/hlsl-intrinsic/scalar-double-pow.slang
new file mode 100644
index 000000000..3c48c2dac
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-pow.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(pow(double(i), 2.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-pow.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-pow.slang.expected.txt
new file mode 100644
index 000000000..b36b3d527
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-pow.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+100
+400
+900
diff --git a/tests/hlsl-intrinsic/scalar-double-rcp.slang b/tests/hlsl-intrinsic/scalar-double-rcp.slang
new file mode 100644
index 000000000..c3a48bbac
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-rcp.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(rcp(1.0 + double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-rcp.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-rcp.slang.expected.txt
new file mode 100644
index 000000000..9410cd126
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-rcp.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+100
+50
+33
+25
diff --git a/tests/hlsl-intrinsic/scalar-double-rsqrt.slang b/tests/hlsl-intrinsic/scalar-double-rsqrt.slang
new file mode 100644
index 000000000..ef17263d7
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-rsqrt.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(rsqrt(1.0 + double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-rsqrt.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-rsqrt.slang.expected.txt
new file mode 100644
index 000000000..5fddbd630
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-rsqrt.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+100
+70
+57
+50
diff --git a/tests/hlsl-intrinsic/scalar-double-saturate.slang b/tests/hlsl-intrinsic/scalar-double-saturate.slang
new file mode 100644
index 000000000..ac4679f20
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-saturate.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(saturate((double(i) - 1.5) / 2.0) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-saturate.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-saturate.slang.expected.txt
new file mode 100644
index 000000000..e5e38de91
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-saturate.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+0
+25
+75
diff --git a/tests/hlsl-intrinsic/scalar-double-sign.slang b/tests/hlsl-intrinsic/scalar-double-sign.slang
new file mode 100644
index 000000000..7db652fa2
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sign.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(sign(double(i) - 1.5) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-sign.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-sign.slang.expected.txt
new file mode 100644
index 000000000..359497898
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sign.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+-100
+-100
+100
+100
diff --git a/tests/hlsl-intrinsic/scalar-double-sin.slang b/tests/hlsl-intrinsic/scalar-double-sin.slang
new file mode 100644
index 000000000..d580b1ff1
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sin.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(sin(double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-sin.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-sin.slang.expected.txt
new file mode 100644
index 000000000..2d9da37bc
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sin.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+84
+90
+14
diff --git a/tests/hlsl-intrinsic/scalar-double-sincos.slang b/tests/hlsl-intrinsic/scalar-double-sincos.slang
new file mode 100644
index 000000000..2afcf8f8b
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sincos.slang
@@ -0,0 +1,13 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0 0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ double s, c;
+ sincos(double(i), s, c);
+ outputBuffer[i * 2] = int(s * 100);
+ outputBuffer[i * 2 + 1] = int(c * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-sincos.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-sincos.slang.expected.txt
new file mode 100644
index 000000000..b854d6209
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sincos.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+100
+84
+54
diff --git a/tests/hlsl-intrinsic/scalar-double-smoothstep.slang b/tests/hlsl-intrinsic/scalar-double-smoothstep.slang
new file mode 100644
index 000000000..c90d1dcd0
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-smoothstep.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(smoothstep(1.0, 2.0, double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-smoothstep.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-smoothstep.slang.expected.txt
new file mode 100644
index 000000000..30fafd76e
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-smoothstep.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+0
+100
+100
diff --git a/tests/hlsl-intrinsic/scalar-double-sqrt.slang b/tests/hlsl-intrinsic/scalar-double-sqrt.slang
new file mode 100644
index 000000000..bff3a3d6f
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sqrt.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(sqrt(double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-sqrt.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-sqrt.slang.expected.txt
new file mode 100644
index 000000000..a95f0d2ca
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-sqrt.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+100
+141
+173
diff --git a/tests/hlsl-intrinsic/scalar-double-step.slang b/tests/hlsl-intrinsic/scalar-double-step.slang
new file mode 100644
index 000000000..b248a1c82
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-step.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(step(1.5, double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-step.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-step.slang.expected.txt
new file mode 100644
index 000000000..30fafd76e
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-step.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+0
+100
+100
diff --git a/tests/hlsl-intrinsic/scalar-double-tan.slang b/tests/hlsl-intrinsic/scalar-double-tan.slang
new file mode 100644
index 000000000..5c1c14e56
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-tan.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(tan(double(i)) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-tan.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-tan.slang.expected.txt
new file mode 100644
index 000000000..79085b2c5
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-tan.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+155
+-218
+-14
diff --git a/tests/hlsl-intrinsic/scalar-double-trunc.slang b/tests/hlsl-intrinsic/scalar-double-trunc.slang
new file mode 100644
index 000000000..6b04bd6a5
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-trunc.slang
@@ -0,0 +1,10 @@
+//TEST(compute):COMPARE_COMPUTE:-cpu -output-using-type
+
+//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out,name outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+[numthreads(4, 1, 1)]
+void computeMain(in uint i : SV_GroupIndex)
+{
+ outputBuffer[i] = int(trunc(double(i) + 0.5) * 100);
+}
diff --git a/tests/hlsl-intrinsic/scalar-double-trunc.slang.expected.txt b/tests/hlsl-intrinsic/scalar-double-trunc.slang.expected.txt
new file mode 100644
index 000000000..4dfaed307
--- /dev/null
+++ b/tests/hlsl-intrinsic/scalar-double-trunc.slang.expected.txt
@@ -0,0 +1,5 @@
+type: int32_t
+0
+100
+200
+300