summaryrefslogtreecommitdiff
path: root/src/glsl/builtins/ir
diff options
context:
space:
mode:
authorKenneth Graunke <kenneth@whitecape.org>2010-11-15 13:58:51 -0800
committerKenneth Graunke <kenneth@whitecape.org>2010-11-15 14:02:52 -0800
commitdb9b8c062fe8ebb7321a24207f2887a28b31a55d (patch)
treeb566a681a410b8e80da5fac136c66d7cd86cf03f /src/glsl/builtins/ir
parent096d36872ff531b0295109165cb90ea63be7a1b1 (diff)
glsl: Implement the asinh, acosh, and atanh built-in functions.
Diffstat (limited to 'src/glsl/builtins/ir')
-rw-r--r--src/glsl/builtins/ir/acosh21
-rw-r--r--src/glsl/builtins/ir/asinh21
-rw-r--r--src/glsl/builtins/ir/atanh37
3 files changed, 79 insertions, 0 deletions
diff --git a/src/glsl/builtins/ir/acosh b/src/glsl/builtins/ir/acosh
new file mode 100644
index 0000000000..5518e75753
--- /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 0000000000..cdc2c20e76
--- /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 0000000000..5559e97406
--- /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))))))))
+))