Signed-off-by: rander <rander.w...@intel.com> --- backend/src/libocl/tmpl/ocl_math.tmpl.cl | 9 +++++++++ backend/src/libocl/tmpl/ocl_math.tmpl.h | 1 + backend/src/libocl/tmpl/ocl_math_20.tmpl.cl | 9 +++++++++ backend/src/libocl/tmpl/ocl_math_20.tmpl.h | 1 + 4 files changed, 20 insertions(+)
diff --git a/backend/src/libocl/tmpl/ocl_math.tmpl.cl b/backend/src/libocl/tmpl/ocl_math.tmpl.cl index 65cd7fc..2ee797c 100644 --- a/backend/src/libocl/tmpl/ocl_math.tmpl.cl +++ b/backend/src/libocl/tmpl/ocl_math.tmpl.cl @@ -3949,6 +3949,15 @@ OVERLOADABLE double ceil(double x) return ret; } +OVERLOADABLE double copysign(double x, double y) +{ + ulong uy = as_ulong(y); + ulong sign = uy & DF_SIGN_MASK; + ulong ux = as_ulong(x); + ux = (ux & DF_ABS_MASK) | sign; + return as_double(ux); +} + OVERLOADABLE double fabs(double x) { long qw = as_ulong(x); diff --git a/backend/src/libocl/tmpl/ocl_math.tmpl.h b/backend/src/libocl/tmpl/ocl_math.tmpl.h index e4d2e55..de79a5b 100644 --- a/backend/src/libocl/tmpl/ocl_math.tmpl.h +++ b/backend/src/libocl/tmpl/ocl_math.tmpl.h @@ -234,6 +234,7 @@ OVERLOADABLE float half_tan(float x); //------- double ----------- OVERLOADABLE double ceil(double x); +OVERLOADABLE double copysign(double x, double y); OVERLOADABLE double fabs(double x); OVERLOADABLE double floor(double x); OVERLOADABLE double fmax(double a, double b); diff --git a/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl b/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl index 69716ad..4f1461b 100644 --- a/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl +++ b/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl @@ -3825,6 +3825,15 @@ OVERLOADABLE double ceil(double x) return ret; } +OVERLOADABLE double copysign(double x, double y) +{ + ulong uy = as_ulong(y); + ulong sign = uy & DF_SIGN_MASK; + ulong ux = as_ulong(x); + ux = (ux & DF_ABS_MASK) | sign; + return as_double(ux); +} + OVERLOADABLE double fabs(double x) { long qw = as_ulong(x); diff --git a/backend/src/libocl/tmpl/ocl_math_20.tmpl.h b/backend/src/libocl/tmpl/ocl_math_20.tmpl.h index a3d9578..3ca2b35 100644 --- a/backend/src/libocl/tmpl/ocl_math_20.tmpl.h +++ b/backend/src/libocl/tmpl/ocl_math_20.tmpl.h @@ -211,6 +211,7 @@ OVERLOADABLE float half_tan(float x); //------- double ----------- OVERLOADABLE double ceil(double x); +OVERLOADABLE double copysign(double x, double y); OVERLOADABLE double fabs(double x); OVERLOADABLE double fmax(double a, double b); OVERLOADABLE double fmin(double a, double b); -- 2.7.4 _______________________________________________ Beignet mailing list Beignet@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/beignet