summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorrander <rander.wang@intel.com>2017-03-31 15:57:34 +0800
committerYang Rong <rong.r.yang@intel.com>2017-04-17 16:08:49 +0800
commit9aeb3246d20c3aff692d18ff00f59427176ed046 (patch)
tree792bb1553a5279eb510b2c6de32257d77cd7ddb7 /backend
parent877ab2af1606fa0576b211a620b1926f661a2662 (diff)
downloadbeignet-9aeb3246d20c3aff692d18ff00f59427176ed046.tar.gz
backend: add double version of common function
Signed-off-by: rander <rander.wang@intel.com> Tested-by: Yang Rong <rong.r.yang@intel.com>
Diffstat (limited to 'backend')
-rw-r--r--backend/src/libocl/tmpl/ocl_common.tmpl.cl30
1 files changed, 30 insertions, 0 deletions
diff --git a/backend/src/libocl/tmpl/ocl_common.tmpl.cl b/backend/src/libocl/tmpl/ocl_common.tmpl.cl
index af516dec..ba73c6ea 100644
--- a/backend/src/libocl/tmpl/ocl_common.tmpl.cl
+++ b/backend/src/libocl/tmpl/ocl_common.tmpl.cl
@@ -142,3 +142,33 @@ OVERLOADABLE double mix(double x, double y, double a)
return x + (y-x)*a;
}
+OVERLOADABLE double clamp(double v, double l, double u)
+{
+ return max(min(v, u), l);
+}
+
+OVERLOADABLE double degrees(double radians)
+{
+ return radians*180.0/M_PI;
+}
+
+OVERLOADABLE double radians(double degrees)
+{
+ return degrees*M_PI/180.0;
+}
+
+OVERLOADABLE double smoothstep(double e0, double e1, double x)
+{
+ x = clamp((x - e0) / (e1 - e0), 0.0, 1.0);
+ return x * x * (3 - 2 * x);
+}
+
+OVERLOADABLE double sign(double x)
+{
+ ulong k = as_ulong(x);
+ double r = (k&DF_SIGN_MASK) ? -1.0 : 1.0;
+ double s = 0.0 * r;
+ s = (x == 0.0) ? s : r;
+ return isnan(x) ? 0.0 : s;
+}
+