summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorRobert Stepinski <rob.stepinski@gmail.com>2019-03-06 21:45:37 -0500
committerTim Foley <tfoleyNV@users.noreply.github.com>2019-03-06 18:45:37 -0800
commit0630bf9a6254de8ec69ef144d11d9ed4a432453c (patch)
treed8c08b0149b5e75a9d58aac34c1bf4a003e0c14f /source
parentc850ba44164ac2bee895137abdd184beb4123090 (diff)
Fix rsqrt intrinsic for GLSL (#881)
* Add support for glsl inversesqrt intrinsic * fixup for test failure
Diffstat (limited to 'source')
-rw-r--r--source/slang/hlsl.meta.slang14
-rw-r--r--source/slang/hlsl.meta.slang.h14
2 files changed, 22 insertions, 6 deletions
diff --git a/source/slang/hlsl.meta.slang b/source/slang/hlsl.meta.slang
index 4135a9051..4044600aa 100644
--- a/source/slang/hlsl.meta.slang
+++ b/source/slang/hlsl.meta.slang
@@ -1156,9 +1156,17 @@ __generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> round(vector<
__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> round(matrix<T,N,M> x);
// Reciprocal of square root
-__generic<T : __BuiltinFloatingPointType> T rsqrt(T x);
-__generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> rsqrt(vector<T,N> x);
-__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> rsqrt(matrix<T,N,M> x);
+__generic<T : __BuiltinFloatingPointType>
+__target_intrinsic(glsl, "inversesqrt($0)")
+T rsqrt(T x);
+
+__generic<T : __BuiltinFloatingPointType, let N : int>
+__target_intrinsic(glsl, "inversesqrt($0)")
+vector<T,N> rsqrt(vector<T,N> x);
+
+__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>
+__target_intrinsic(glsl, "inversesqrt($0)")
+matrix<T,N,M> rsqrt(matrix<T,N,M> x);
// Clamp value to [0,1] range
__generic<T : __BuiltinFloatingPointType>
diff --git a/source/slang/hlsl.meta.slang.h b/source/slang/hlsl.meta.slang.h
index 67d8d3cc0..94e42b045 100644
--- a/source/slang/hlsl.meta.slang.h
+++ b/source/slang/hlsl.meta.slang.h
@@ -1232,9 +1232,17 @@ SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> ro
SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> round(matrix<T,N,M> x);\n")
SLANG_RAW("\n")
SLANG_RAW("// Reciprocal of square root\n")
-SLANG_RAW("__generic<T : __BuiltinFloatingPointType> T rsqrt(T x);\n")
-SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int> vector<T,N> rsqrt(vector<T,N> x);\n")
-SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int, let M : int> matrix<T,N,M> rsqrt(matrix<T,N,M> x);\n")
+SLANG_RAW("__generic<T : __BuiltinFloatingPointType>\n")
+SLANG_RAW("__target_intrinsic(glsl, \"inversesqrt($0)\")\n")
+SLANG_RAW("T rsqrt(T x);\n")
+SLANG_RAW("\n")
+SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int>\n")
+SLANG_RAW("__target_intrinsic(glsl, \"inversesqrt($0)\")\n")
+SLANG_RAW("vector<T,N> rsqrt(vector<T,N> x);\n")
+SLANG_RAW("\n")
+SLANG_RAW("__generic<T : __BuiltinFloatingPointType, let N : int, let M : int>\n")
+SLANG_RAW("__target_intrinsic(glsl, \"inversesqrt($0)\")\n")
+SLANG_RAW("matrix<T,N,M> rsqrt(matrix<T,N,M> x);\n")
SLANG_RAW("\n")
SLANG_RAW("// Clamp value to [0,1] range\n")
SLANG_RAW("__generic<T : __BuiltinFloatingPointType>\n")