summaryrefslogtreecommitdiff
path: root/libgcc
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2012-07-31 09:09:29 +0000
committerNick Clifton <nickc@gcc.gnu.org>2012-07-31 09:09:29 +0000
commit0d13c974d946713065b57fdcd46d5d5b2af3beb0 (patch)
tree8de31a6c11e026f1bf000f8dd3508a37466d9238 /libgcc
parentd555a90ebed1156180138ff9a1aabfa19ecc2d76 (diff)
downloadgcc-0d13c974d946713065b57fdcd46d5d5b2af3beb0.tar.gz
lib2funcs.c (__clrsbhi2): New function.
* config/stormy16/lib2funcs.c (__clrsbhi2): New function. Implements __clrsb for an HImode argument. * config/stormy16/clrsbhi2.c: New file: * config/stormy16/t-stormy16 (LIB2ADD): Add clrsbhi2.c. From-SVN: r189997
Diffstat (limited to 'libgcc')
-rw-r--r--libgcc/ChangeLog7
-rw-r--r--libgcc/config/stormy16/clrsbhi2.c2
-rw-r--r--libgcc/config/stormy16/lib2funcs.c16
-rw-r--r--libgcc/config/stormy16/t-stormy161
4 files changed, 26 insertions, 0 deletions
diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index bcfd22b41f9..9d629e6ab8c 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,10 @@
+2012-07-31 Nick Clifton <nickc@redhat.com>
+
+ * config/stormy16/lib2funcs.c (__clrsbhi2): New function.
+ Implements __clrsb for an HImode argument.
+ * config/stormy16/clrsbhi2.c: New file:
+ * config/stormy16/t-stormy16 (LIB2ADD): Add clrsbhi2.c.
+
2012-07-22 Steven Bosscher <steven@gcc.gnu.org>
* libgcov.c (__gcov_ior_profiler): Benign comment fix.
diff --git a/libgcc/config/stormy16/clrsbhi2.c b/libgcc/config/stormy16/clrsbhi2.c
new file mode 100644
index 00000000000..3ce41aca061
--- /dev/null
+++ b/libgcc/config/stormy16/clrsbhi2.c
@@ -0,0 +1,2 @@
+#define XSTORMY16_CLRSBHI2
+#include "lib2funcs.c"
diff --git a/libgcc/config/stormy16/lib2funcs.c b/libgcc/config/stormy16/lib2funcs.c
index a10a9b28119..a996fd15e24 100644
--- a/libgcc/config/stormy16/lib2funcs.c
+++ b/libgcc/config/stormy16/lib2funcs.c
@@ -311,6 +311,22 @@ __ffshi2 (UHWtype u)
}
#endif
+#ifdef XSTORMY16_CLRSBHI2
+/* Returns the number of leading redundant sign bits in X.
+ I.e. the number of bits following the most significant bit which are
+ identical to it. There are no special cases for 0 or other values. */
+
+int
+__clrsbhi2 (HWtype x)
+{
+ if (x < 0)
+ x = ~x;
+ if (x == 0)
+ return 15;
+ return __builtin_clz (x) - 1;
+}
+#endif
+
#ifdef XSTORMY16_UCMPSI2
/* Performs an unsigned comparison of two 32-bit values: A and B.
If A is less than B, then 0 is returned. If A is greater than B,
diff --git a/libgcc/config/stormy16/t-stormy16 b/libgcc/config/stormy16/t-stormy16
index d62d167d93d..48ded89d3bf 100644
--- a/libgcc/config/stormy16/t-stormy16
+++ b/libgcc/config/stormy16/t-stormy16
@@ -33,6 +33,7 @@ LIB2ADD = \
$(srcdir)/config/stormy16/clzhi2.c \
$(srcdir)/config/stormy16/ctzhi2.c \
$(srcdir)/config/stormy16/ffshi2.c \
+ $(srcdir)/config/stormy16/clrsbhi2.c \
$(srcdir)/config/stormy16/cmpsi2.c \
$(srcdir)/config/stormy16/ucmpsi2.c