diff options
| -rw-r--r-- | source/slang/hlsl.meta.slang | 2 | ||||
| -rw-r--r-- | tests/hlsl-intrinsic/matrix-int-mul.slang | 18 |
2 files changed, 20 insertions, 0 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang index 489bcbab6..ff2762b23 100644 --- a/source/slang/hlsl.meta.slang +++ b/source/slang/hlsl.meta.slang @@ -12190,6 +12190,7 @@ vector<T, M> mul(vector<T, N> left, matrix<T, N, M> right) } __generic<T : __BuiltinLogicalType, let N : int, let M : int> [__readNone] +[OverloadRank(-1)] [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, sm_4_0_version)] vector<T, M> mul(vector<T, N> left, matrix<T, N, M> right) { @@ -12353,6 +12354,7 @@ matrix<T,R,C> mul(matrix<T,R,N> left, matrix<T,N,C> right) } __generic<T : __BuiltinLogicalType, let R : int, let N : int, let C : int> [__readNone] +[OverloadRank(-1)] [require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, sm_4_0_version)] matrix<T,R,C> mul(matrix<T,R,N> left, matrix<T,N,C> right) { diff --git a/tests/hlsl-intrinsic/matrix-int-mul.slang b/tests/hlsl-intrinsic/matrix-int-mul.slang new file mode 100644 index 000000000..d78a486a9 --- /dev/null +++ b/tests/hlsl-intrinsic/matrix-int-mul.slang @@ -0,0 +1,18 @@ +//TEST:SIMPLE(filecheck=CHECK):-target hlsl -entry main -stage compute + +//CHECK-NOT: error 39999: ambiguous call to 'mul' + +[shader("compute")] +void main() { + int2x2 matrixA = { + 1, 2, + 3, 4 + }; + int2 vecA = { + 1, 2 + }; + + int2x2 matrixB = mul(matrixA, matrixA); // M * M + int2 vecB = mul(vecA, matrixA); // V * M + int2 vecC = mul(matrixA, vecA); // M * V +} |
