Module: Mesa
Branch: master
Commit: db9b8c062fe8ebb7321a24207f2887a28b31a55d
URL:    
http://cgit.freedesktop.org/mesa/mesa/commit/?id=db9b8c062fe8ebb7321a24207f2887a28b31a55d

Author: Kenneth Graunke <kenn...@whitecape.org>
Date:   Mon Nov 15 13:58:51 2010 -0800

glsl: Implement the asinh, acosh, and atanh built-in functions.

---

 src/glsl/builtins/ir/acosh          |   21 +++++++++++++++++++
 src/glsl/builtins/ir/asinh          |   21 +++++++++++++++++++
 src/glsl/builtins/ir/atanh          |   37 +++++++++++++++++++++++++++++++++++
 src/glsl/builtins/profiles/130.frag |    2 -
 src/glsl/builtins/profiles/130.vert |    2 -
 5 files changed, 79 insertions(+), 4 deletions(-)

diff --git a/src/glsl/builtins/ir/acosh b/src/glsl/builtins/ir/acosh
new file mode 100644
index 0000000..5518e75
--- /dev/null
+++ b/src/glsl/builtins/ir/acosh
@@ -0,0 +1,21 @@
+((function acosh
+   (signature float
+     (parameters
+       (declare (in) float x))
+     ((return (expression float log (expression float + (var_ref x) 
(expression float sqrt (expression float - (expression float * (var_ref x) 
(var_ref x)) (constant float (1)))))))))
+
+   (signature vec2
+     (parameters
+       (declare (in) vec2 x))
+     ((return (expression vec2 log (expression vec2 + (var_ref x) (expression 
vec2 sqrt (expression vec2 - (expression vec2 * (var_ref x) (var_ref x)) 
(constant vec2 (1)))))))))
+
+   (signature vec3
+     (parameters
+       (declare (in) vec3 x))
+     ((return (expression vec3 log (expression vec3 + (var_ref x) (expression 
vec3 sqrt (expression vec3 - (expression vec3 * (var_ref x) (var_ref x)) 
(constant vec3 (1)))))))))
+
+   (signature vec4
+     (parameters
+       (declare (in) vec4 x))
+     ((return (expression vec4 log (expression vec4 + (var_ref x) (expression 
vec4 sqrt (expression vec4 - (expression vec4 * (var_ref x) (var_ref x)) 
(constant vec4 (1)))))))))
+))
diff --git a/src/glsl/builtins/ir/asinh b/src/glsl/builtins/ir/asinh
new file mode 100644
index 0000000..cdc2c20
--- /dev/null
+++ b/src/glsl/builtins/ir/asinh
@@ -0,0 +1,21 @@
+((function asinh
+   (signature float
+     (parameters
+       (declare (in) float x))
+     ((return (expression float log (expression float + (var_ref x) 
(expression float sqrt (expression float + (expression float * (var_ref x) 
(var_ref x)) (constant float (1)))))))))
+
+   (signature vec2
+     (parameters
+       (declare (in) vec2 x))
+     ((return (expression vec2 log (expression vec2 + (var_ref x) (expression 
vec2 sqrt (expression vec2 + (expression vec2 * (var_ref x) (var_ref x)) 
(constant vec2 (1)))))))))
+
+   (signature vec3
+     (parameters
+       (declare (in) vec3 x))
+     ((return (expression vec3 log (expression vec3 + (var_ref x) (expression 
vec3 sqrt (expression vec3 + (expression vec3 * (var_ref x) (var_ref x)) 
(constant vec3 (1)))))))))
+
+   (signature vec4
+     (parameters
+       (declare (in) vec4 x))
+     ((return (expression vec4 log (expression vec4 + (var_ref x) (expression 
vec4 sqrt (expression vec4 + (expression vec4 * (var_ref x) (var_ref x)) 
(constant vec4 (1)))))))))
+))
diff --git a/src/glsl/builtins/ir/atanh b/src/glsl/builtins/ir/atanh
new file mode 100644
index 0000000..5559e97
--- /dev/null
+++ b/src/glsl/builtins/ir/atanh
@@ -0,0 +1,37 @@
+((function atanh
+   (signature float
+     (parameters
+       (declare (in) float x))
+     ((return (expression float * (constant float (0.5))
+                (expression float log
+                 (expression float /
+                    (expression float + (constant float (1)) (var_ref x))
+                    (expression float - (constant float (1)) (var_ref x))))))))
+
+   (signature vec2
+     (parameters
+       (declare (in) vec2 x))
+     ((return (expression vec2 * (constant vec2 (0.5))
+                (expression vec2 log
+                 (expression vec2 /
+                    (expression vec2 + (constant vec2 (1)) (var_ref x))
+                    (expression vec2 - (constant vec2 (1)) (var_ref x))))))))
+
+   (signature vec3
+     (parameters
+       (declare (in) vec3 x))
+     ((return (expression vec3 * (constant vec3 (0.5))
+                (expression vec3 log
+                 (expression vec3 /
+                    (expression vec3 + (constant vec3 (1)) (var_ref x))
+                    (expression vec3 - (constant vec3 (1)) (var_ref x))))))))
+
+   (signature vec4
+     (parameters
+       (declare (in) vec4 x))
+     ((return (expression vec4 * (constant vec4 (0.5))
+                (expression vec4 log
+                 (expression vec4 /
+                    (expression vec4 + (constant vec4 (1)) (var_ref x))
+                    (expression vec4 - (constant vec4 (1)) (var_ref x))))))))
+))
diff --git a/src/glsl/builtins/profiles/130.frag 
b/src/glsl/builtins/profiles/130.frag
index 0d860eb..329116f 100644
--- a/src/glsl/builtins/profiles/130.frag
+++ b/src/glsl/builtins/profiles/130.frag
@@ -62,7 +62,6 @@ vec2  tanh(vec2  x);
 vec3  tanh(vec3  x);
 vec4  tanh(vec4  x);
 
-#if 0
 float asinh(float x);
 vec2  asinh(vec2  x);
 vec3  asinh(vec3  x);
@@ -77,7 +76,6 @@ float atanh(float x);
 vec2  atanh(vec2  x);
 vec3  atanh(vec3  x);
 vec4  atanh(vec4  x);
-#endif
 
 /*
  * 8.2 - Exponential Functions
diff --git a/src/glsl/builtins/profiles/130.vert 
b/src/glsl/builtins/profiles/130.vert
index 2fd44dc..1c212eb 100644
--- a/src/glsl/builtins/profiles/130.vert
+++ b/src/glsl/builtins/profiles/130.vert
@@ -62,7 +62,6 @@ vec2  tanh(vec2  x);
 vec3  tanh(vec3  x);
 vec4  tanh(vec4  x);
 
-#if 0
 float asinh(float x);
 vec2  asinh(vec2  x);
 vec3  asinh(vec3  x);
@@ -77,7 +76,6 @@ float atanh(float x);
 vec2  atanh(vec2  x);
 vec3  atanh(vec3  x);
 vec4  atanh(vec4  x);
-#endif
 
 /*
  * 8.2 - Exponential Functions

_______________________________________________
mesa-commit mailing list
mesa-commit@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/mesa-commit

Reply via email to