summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Watry <awatry@gmail.com>2013-04-12 08:43:24 -0500
committerAaron Watry <awatry@gmail.com>2013-04-12 08:43:24 -0500
commit8e880c4101b4789871db8bcd58607b26cf7c474e (patch)
tree9d4c07255a4d1f3d163bfa93bb61ff4637ab7e85
parentb592b39795b6a9ef0e1f00ee090e6a3b31d76573 (diff)
Initial mad_sat implementation... It's wrong.mad_sat
Currently, it just returns x * y + z... no saturation checking is done, but at least the test no longer crashes.
-rw-r--r--generic/include/clc/clc.h1
-rw-r--r--generic/include/clc/integer/mad_sat.h2
-rw-r--r--generic/include/clc/integer/mad_sat.inc1
-rw-r--r--generic/lib/SOURCES1
-rw-r--r--generic/lib/integer/mad_sat.cl4
-rw-r--r--generic/lib/integer/mad_sat.inc5
6 files changed, 14 insertions, 0 deletions
diff --git a/generic/include/clc/clc.h b/generic/include/clc/clc.h
index 72f518a..797914a 100644
--- a/generic/include/clc/clc.h
+++ b/generic/include/clc/clc.h
@@ -63,6 +63,7 @@
#include <clc/integer/abs.h>
#include <clc/integer/abs_diff.h>
#include <clc/integer/add_sat.h>
+#include <clc/integer/mad_sat.h>
#include <clc/integer/rotate.h>
#include <clc/integer/sub_sat.h>
diff --git a/generic/include/clc/integer/mad_sat.h b/generic/include/clc/integer/mad_sat.h
new file mode 100644
index 0000000..521c4c6
--- /dev/null
+++ b/generic/include/clc/integer/mad_sat.h
@@ -0,0 +1,2 @@
+#define BODY <clc/integer/mad_sat.inc>
+#include <clc/integer/gentype.inc>
diff --git a/generic/include/clc/integer/mad_sat.inc b/generic/include/clc/integer/mad_sat.inc
new file mode 100644
index 0000000..a507512
--- /dev/null
+++ b/generic/include/clc/integer/mad_sat.inc
@@ -0,0 +1 @@
+_CLC_OVERLOAD _CLC_DECL GENTYPE mad_sat(GENTYPE x, GENTYPE y, GENTYPE z);
diff --git a/generic/lib/SOURCES b/generic/lib/SOURCES
index 495b3e7..6d18c3a 100644
--- a/generic/lib/SOURCES
+++ b/generic/lib/SOURCES
@@ -8,6 +8,7 @@ integer/abs_diff.cl
integer/add_sat.cl
integer/add_sat.ll
integer/add_sat_impl.ll
+integer/mad_sat.cl
integer/rotate.cl
integer/sub_sat.cl
integer/sub_sat.ll
diff --git a/generic/lib/integer/mad_sat.cl b/generic/lib/integer/mad_sat.cl
new file mode 100644
index 0000000..a1cf2be
--- /dev/null
+++ b/generic/lib/integer/mad_sat.cl
@@ -0,0 +1,4 @@
+#include <clc/clc.h>
+
+#define BODY <mad_sat.inc>
+#include <clc/integer/gentype.inc>
diff --git a/generic/lib/integer/mad_sat.inc b/generic/lib/integer/mad_sat.inc
new file mode 100644
index 0000000..6476b81
--- /dev/null
+++ b/generic/lib/integer/mad_sat.inc
@@ -0,0 +1,5 @@
+_CLC_OVERLOAD _CLC_DECL GENTYPE mad_sat(GENTYPE x, GENTYPE y, GENTYPE z){
+ //This is wrong... When anything multiply overflows,
+ //the wrong result is going to be returned
+ return x*y+z;
+}