summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang24
1 files changed, 24 insertions, 0 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 371659fc9..97e2c7be5 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -8292,6 +8292,30 @@ T dot(vector<T, N> x, vector<T, N> y)
{
case hlsl: __intrinsic_asm "dot";
case wgsl: __intrinsic_asm "dot";
+ case spirv:
+ {
+ spirv_asm
+ {
+ OpCapability DotProduct;
+ OpCapability DotProductInputAll;
+ OpExtension "SPV_KHR_integer_dot_product";
+ };
+
+ if (__isSignedInt<T>())
+ {
+ return spirv_asm
+ {
+ result:$$T = OpSDot $x $y;
+ };
+ }
+ else
+ {
+ return spirv_asm
+ {
+ result:$$T = OpUDot $x $y;
+ };
+ }
+ }
default:
T result = T(0);
for(int i = 0; i < N; ++i)