From 18f12ad9c999f672ae7b61878e2242ebb3da94ac Mon Sep 17 00:00:00 2001 From: Darren Wihandi <65404740+fairywreath@users.noreply.github.com> Date: Wed, 22 Jan 2025 11:58:40 -0500 Subject: Use SPIRV integer vector dot product instructions (#6141) * Use SPIRV integer vector dot product instructions * fix test --------- Co-authored-by: Yong He --- source/slang/hlsl.meta.slang | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) (limited to 'source') 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 x, vector 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()) + { + 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) -- cgit v1.2.3