summaryrefslogtreecommitdiff
path: root/source/slang/hlsl.meta.slang
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2022-05-05 10:48:14 -0700
committerGitHub <noreply@github.com>2022-05-05 10:48:14 -0700
commit3088d901fee6447b6d80fa67f258626ece4408dc (patch)
tree95b7d6bcc4b549e58d705fcf0056dde71a52ae8e /source/slang/hlsl.meta.slang
parentaa03cea0da38b2950e6f8694dc8b1405352eda66 (diff)
Various vulkan/glsl fixes. (#2222)
* Various vulkan/glsl fixes. * Fix. * Fix. * Canonicalize type constraints for name mangling. Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Theresa Foley <10618364+tangent-vector@users.noreply.github.com>
Diffstat (limited to 'source/slang/hlsl.meta.slang')
-rw-r--r--source/slang/hlsl.meta.slang21
1 files changed, 19 insertions, 2 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 2c969e174..7d107888a 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -1582,7 +1582,7 @@ T distance(vector<T, N> x, vector<T, N> y)
// Vector dot product
-__generic<T : __BuiltinArithmeticType, let N : int>
+__generic<T : __BuiltinFloatingPointType, let N : int>
__target_intrinsic(hlsl)
__target_intrinsic(glsl)
T dot(vector<T, N> x, vector<T, N> y)
@@ -1593,6 +1593,17 @@ T dot(vector<T, N> x, vector<T, N> y)
return result;
}
+__generic<T : __BuiltinIntegerType, let N : int>
+__target_intrinsic(hlsl)
+T dot(vector<T, N> x, vector<T, N> y)
+{
+ T result = T(0);
+ for(int i = 0; i < N; ++i)
+ result += x[i] * y[i];
+ return result;
+}
+
+
// Helper for computing distance terms for lighting (obsolete)
__generic<T : __BuiltinFloatingPointType> vector<T,4> dst(vector<T,4> x, vector<T,4> y);
@@ -2568,13 +2579,19 @@ __intrinsic_op($(kIROp_Mul))
matrix<T, N, M> mul(T x, matrix<T, N, M> y);
// vector-vector (dot product)
-__generic<T : __BuiltinArithmeticType, let N : int>
+__generic<T : __BuiltinFloatingPointType, let N : int>
__target_intrinsic(hlsl)
__target_intrinsic(glsl, "dot")
T mul(vector<T, N> x, vector<T, N> y)
{
return dot(x, y);
}
+__generic<T : __BuiltinIntegerType, let N : int>
+__target_intrinsic(hlsl)
+T mul(vector<T, N> x, vector<T, N> y)
+{
+ return dot(x, y);
+}
// vector-matrix
__generic<T : __BuiltinArithmeticType, let N : int, let M : int>