[Libclc-dev] [PATCH] math: Add fmod implementation

Aaron Watry awatry at gmail.com
Wed Sep 10 08:59:06 PDT 2014


Passes piglit tests on evergreen (sent to piglit list).

Signed-off-by: Aaron Watry <awatry at gmail.com>
---
 generic/include/clc/clc.h       |  1 +
 generic/include/clc/math/fmod.h |  7 +++++++
 generic/lib/SOURCES             |  1 +
 generic/lib/math/fmod.cl        | 15 +++++++++++++++
 4 files changed, 24 insertions(+)
 create mode 100644 generic/include/clc/math/fmod.h
 create mode 100644 generic/lib/math/fmod.cl

diff --git a/generic/include/clc/clc.h b/generic/include/clc/clc.h
index b8c1cb9..94557a1 100644
--- a/generic/include/clc/clc.h
+++ b/generic/include/clc/clc.h
@@ -47,6 +47,7 @@
 #include <clc/math/fma.h>
 #include <clc/math/fmax.h>
 #include <clc/math/fmin.h>
+#include <clc/math/fmod.h>
 #include <clc/math/hypot.h>
 #include <clc/math/log.h>
 #include <clc/math/log2.h>
diff --git a/generic/include/clc/math/fmod.h b/generic/include/clc/math/fmod.h
new file mode 100644
index 0000000..737679f
--- /dev/null
+++ b/generic/include/clc/math/fmod.h
@@ -0,0 +1,7 @@
+#define __CLC_BODY <clc/math/binary_decl.inc>
+#define __CLC_FUNCTION fmod
+
+#include <clc/math/gentype.inc>
+
+#undef __CLC_BODY
+#undef __CLC_FUNCTION
diff --git a/generic/lib/SOURCES b/generic/lib/SOURCES
index e4ba1d1..45e12aa 100644
--- a/generic/lib/SOURCES
+++ b/generic/lib/SOURCES
@@ -39,6 +39,7 @@ math/exp.cl
 math/exp10.cl
 math/fmax.cl
 math/fmin.cl
+math/fmod.cl
 math/hypot.cl
 math/mad.cl
 math/mix.cl
diff --git a/generic/lib/math/fmod.cl b/generic/lib/math/fmod.cl
new file mode 100644
index 0000000..091035b
--- /dev/null
+++ b/generic/lib/math/fmod.cl
@@ -0,0 +1,15 @@
+#include <clc/clc.h>
+
+#ifdef cl_khr_fp64
+#pragma OPENCL EXTENSION cl_khr_fp64 : enable
+#endif
+
+#define FUNCTION fmod
+#define FUNCTION_IMPL(x, y) ( (x) - (y) * trunc((x) / (y)))
+
+#define __CLC_BODY <binary_impl.inc>
+#include <clc/math/gentype.inc>
+
+#undef __CLC_BODY
+#undef FUNCTION
+#undef FUNCTION_IMPL
\ No newline at end of file
-- 
1.9.1





More information about the Libclc-dev mailing list