diff options
author | rander <rander.wang@intel.com> | 2017-03-31 15:57:34 +0800 |
---|---|---|
committer | Yang Rong <rong.r.yang@intel.com> | 2017-04-17 16:08:49 +0800 |
commit | 9aeb3246d20c3aff692d18ff00f59427176ed046 (patch) | |
tree | 792bb1553a5279eb510b2c6de32257d77cd7ddb7 /backend | |
parent | 877ab2af1606fa0576b211a620b1926f661a2662 (diff) | |
download | beignet-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.cl | 30 |
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; +} + |