do it by x - floor(x)
Signed-off-by: rander <[email protected]>
---
backend/src/libocl/tmpl/ocl_math.tmpl.cl | 20 ++++++++++++++++++++
backend/src/libocl/tmpl/ocl_math.tmpl.h | 4 ++++
backend/src/libocl/tmpl/ocl_math_20.tmpl.cl | 21 +++++++++++++++++++++
backend/src/libocl/tmpl/ocl_math_20.tmpl.h | 4 ++++
4 files changed, 49 insertions(+)
diff --git a/backend/src/libocl/tmpl/ocl_math.tmpl.cl
b/backend/src/libocl/tmpl/ocl_math.tmpl.cl
index bb9bc4d..8c5fe8c 100644
--- a/backend/src/libocl/tmpl/ocl_math.tmpl.cl
+++ b/backend/src/libocl/tmpl/ocl_math.tmpl.cl
@@ -3963,4 +3963,24 @@ OVERLOADABLE double floor(double x)
}
}
+OVERLOADABLE double fract(double x, global double *p)
+{
+ double ret = floor(x);
+ *p = ret;
+ return x -ret;
+}
+
+OVERLOADABLE double fract(double x, local double *p)
+{
+ double ret = floor(x);
+ *p = ret;
+ return x -ret;
+}
+
+OVERLOADABLE double fract(double x, private double *p)
+{
+ double ret = floor(x);
+ *p = ret;
+ return x -ret;
+}
diff --git a/backend/src/libocl/tmpl/ocl_math.tmpl.h
b/backend/src/libocl/tmpl/ocl_math.tmpl.h
index f699ab2..dc79c08 100644
--- a/backend/src/libocl/tmpl/ocl_math.tmpl.h
+++ b/backend/src/libocl/tmpl/ocl_math.tmpl.h
@@ -236,3 +236,7 @@ OVERLOADABLE float half_tan(float x);
OVERLOADABLE double ceil(double x);
OVERLOADABLE double fabs(double x);
OVERLOADABLE double floor(double x);
+OVERLOADABLE double fract(double x, global double *p);
+OVERLOADABLE double fract(double x, local double *p);
+OVERLOADABLE double fract(double x, private double *p);
+
diff --git a/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl
b/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl
index a032f59..701d006 100644
--- a/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl
+++ b/backend/src/libocl/tmpl/ocl_math_20.tmpl.cl
@@ -3864,4 +3864,25 @@ OVERLOADABLE double floor(double x)
}
}
+OVERLOADABLE double fract(double x, global double *p)
+{
+ double ret = floor(x);
+ *p = ret;
+ return x -ret;
+}
+
+OVERLOADABLE double fract(double x, local double *p)
+{
+ double ret = floor(x);
+ *p = ret;
+ return x -ret;
+}
+
+OVERLOADABLE double fract(double x, private double *p)
+{
+ double ret = floor(x);
+ *p = ret;
+ return x -ret;
+}
+
diff --git a/backend/src/libocl/tmpl/ocl_math_20.tmpl.h
b/backend/src/libocl/tmpl/ocl_math_20.tmpl.h
index bf7ac13..52a6b23 100644
--- a/backend/src/libocl/tmpl/ocl_math_20.tmpl.h
+++ b/backend/src/libocl/tmpl/ocl_math_20.tmpl.h
@@ -213,3 +213,7 @@ OVERLOADABLE float half_tan(float x);
OVERLOADABLE double ceil(double x);
OVERLOADABLE double fabs(double x);
OVERLOADABLE double floor(double x);
+OVERLOADABLE double fract(double x, global double *p);
+OVERLOADABLE double fract(double x, local double *p);
+OVERLOADABLE double fract(double x, private double *p);
+
--
2.7.4
_______________________________________________
Beignet mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/beignet