summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorvenkataram-nv <vedavamadath@nvidia.com>2025-07-31 15:12:21 -0700
committerGitHub <noreply@github.com>2025-07-31 22:12:21 +0000
commit30fd3c63fb4af9ea8d482c75921710df1b40e59e (patch)
treecd1001e90f5328f20fa7bc6d030bcfcc4e01979f /tests
parentaefd1e3e0dbe4e77f8d7dbbfa04e15c2db615394 (diff)
Add matrix select intrinsic (#7566)
* Add matrix select intrinsic * Fix hlsl test * Restrict matrix select to HLSL * Better test for HLSL side * Select route for GLSL/SPIRV * Exclude matrices from select legalization * Exclude CUDA from select test * Inline and move * format code --------- Co-authored-by: slangbot <186143334+slangbot@users.noreply.github.com>
Diffstat (limited to 'tests')
-rw-r--r--tests/hlsl-intrinsic/matrix-cast-to-vector.slang9
-rw-r--r--tests/language-feature/matrix-select.slang45
2 files changed, 49 insertions, 5 deletions
diff --git a/tests/hlsl-intrinsic/matrix-cast-to-vector.slang b/tests/hlsl-intrinsic/matrix-cast-to-vector.slang
index 522f3ce11..74df140d3 100644
--- a/tests/hlsl-intrinsic/matrix-cast-to-vector.slang
+++ b/tests/hlsl-intrinsic/matrix-cast-to-vector.slang
@@ -17,10 +17,9 @@ void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
float2x2 matrix2x2_2 = (float2x2)vector4_2;
outputBuffer[0] = uint(true
- && all(vector4_1 == float4(1, 2, 3, 4))
-
- && all(matrix2x2_2[0] == float2(1,2))
- && all(matrix2x2_2[1] == float2(3,4))
- );
+ && all(vector4_1 == float4(1, 2, 3, 4))
+ && all(matrix2x2_2[0] == float2(1,2))
+ && all(matrix2x2_2[1] == float2(3,4))
+ );
//BUF: 1
}
diff --git a/tests/language-feature/matrix-select.slang b/tests/language-feature/matrix-select.slang
new file mode 100644
index 000000000..a3cab6906
--- /dev/null
+++ b/tests/language-feature/matrix-select.slang
@@ -0,0 +1,45 @@
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-dx12 -use-dxil -compute -shaderobj -output-using-type -xslang -matrix-layout-column-major
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-dx12 -use-dxil -compute -shaderobj -output-using-type -xslang -matrix-layout-row-major
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-vk -compute -shaderobj -output-using-type -xslang -matrix-layout-column-major
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-vk -compute -shaderobj -output-using-type -xslang -matrix-layout-row-major
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-mtl -compute -output-using-type -xslang -matrix-layout-column-major
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-mtl -compute -output-using-type -xslang -matrix-layout-row-major
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-wgpu -compute -output-using-type -xslang -matrix-layout-column-major
+//TEST(compute):COMPARE_COMPUTE_EX(filecheck-buffer=CHK):-wgpu -compute -output-using-type -xslang -matrix-layout-row-major
+
+//TEST_INPUT:ubuffer(data=[0], stride=4):out,name=outputBuffer
+RWStructuredBuffer<int> outputBuffer;
+
+int selectDims<int N, int M>(bool cond)
+{
+ return select(
+ matrix<bool, N, M>(cond),
+ matrix<int, N, M>(1),
+ matrix<int, N, M>(0)
+ )[0][0];
+}
+
+int selectDimsDigit<int N, int M, int D>(int x)
+{
+ return selectDims<N, M>(((x >> D) & 0b1) == 0b1) << D;
+}
+
+[numthreads(1, 1, 1)]
+void computeMain(uint3 dispatchThreadID : SV_DispatchThreadID)
+{
+ int x = 324;
+
+ int s = 0;
+ s += selectDimsDigit<2, 2, 0>(x);
+ s += selectDimsDigit<2, 3, 1>(x);
+ s += selectDimsDigit<2, 4, 2>(x);
+ s += selectDimsDigit<3, 2, 3>(x);
+ s += selectDimsDigit<3, 3, 4>(x);
+ s += selectDimsDigit<3, 4, 5>(x);
+ s += selectDimsDigit<4, 2, 6>(x);
+ s += selectDimsDigit<4, 3, 7>(x);
+ s += selectDimsDigit<4, 4, 8>(x);
+
+ // CHK: 324
+ outputBuffer[0] = s;
+} \ No newline at end of file