summaryrefslogtreecommitdiffstats
path: root/source/slang
diff options
context:
space:
mode:
authorEllie Hermaszewska <ellieh@nvidia.com>2025-10-11 01:42:43 +0900
committerGitHub <noreply@github.com>2025-10-10 16:42:43 +0000
commitb4023f715885ada9a2777ea3b0d6d9739860b39b (patch)
tree6bceec79ba7747e6826603f3893f89e4697975a4 /source/slang
parent48afbf9a1075fcf541b2c196c6313aeda57e9637 (diff)
implement dot products for 1 vectors (#8599)
Closes https://github.com/shader-slang/slang/issues/8378
Diffstat (limited to 'source/slang')
-rw-r--r--source/slang/hlsl.meta.slang12
1 files changed, 12 insertions, 0 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 86e77c650..73bdee96e 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -8884,6 +8884,12 @@ __generic<T : __BuiltinFloatingPointType, let N : int>
[require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, sm_4_0_version)]
T dot(vector<T, N> x, vector<T, N> y)
{
+ // Handle 1-vector case explicitly since many backends don't support it natively
+ if (N == 1)
+ {
+ return x[0] * y[0];
+ }
+
__target_switch
{
case glsl: __intrinsic_asm "dot";
@@ -8906,6 +8912,12 @@ __generic<T : __BuiltinIntegerType, let N : int>
[require(cpp_cuda_glsl_hlsl_metal_spirv_wgsl, sm_4_0_version)]
T dot(vector<T, N> x, vector<T, N> y)
{
+ // Handle 1-vector case explicitly since many backends don't support it natively
+ if (N == 1)
+ {
+ return x[0] * y[0];
+ }
+
__target_switch
{
case hlsl: __intrinsic_asm "dot";