* config/stormy16/stormy16-lib2.c (__cmpsi2): New function.
authornickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Aug 2010 11:56:15 +0000 (11:56 +0000)
committernickc <nickc@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 11 Aug 2010 11:56:15 +0000 (11:56 +0000)
        * config/stormy16/stormy16-lib2-cmpsi2.c: New file.
        * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Add
        stormy16-lib2-cmpsi.c.

        * config/stormy16/t-stormy16 (TARGET_LIBGCC2_CFLAGS): Change to
        -O2.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@163097 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/stormy16/stormy16-lib2-cmpsi2.c [new file with mode: 0644]
gcc/config/stormy16/stormy16-lib2.c
gcc/config/stormy16/t-stormy16

index ea4a0bb..92e6b58 100644 (file)
@@ -1,3 +1,13 @@
+2010-08-11  Nick Clifton  <nickc@redhat.com>
+
+       * config/stormy16/stormy16-lib2.c (__cmpsi2): New function.
+       * config/stormy16/stormy16-lib2-cmpsi2.c: New file.
+       * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Add
+       stormy16-lib2-cmpsi.c.
+
+       * config/stormy16/t-stormy16 (TARGET_LIBGCC2_CFLAGS): Change to
+       -O2.
+
 2010-08-11  Joseph Myers  <joseph@codesourcery.com>
 
        * opts.h (struct cl_option_handler_func): Make handler take
diff --git a/gcc/config/stormy16/stormy16-lib2-cmpsi2.c b/gcc/config/stormy16/stormy16-lib2-cmpsi2.c
new file mode 100644 (file)
index 0000000..7563c36
--- /dev/null
@@ -0,0 +1,2 @@
+#define XSTORMY16_CMPSI2
+#include "stormy16-lib2.c"
index edf8635..e3c1643 100644 (file)
@@ -332,3 +332,26 @@ __ucmpsi2 (USItype a, USItype b)
   return hi_a < hi_b ? 0 : 2;
 }
 #endif
+
+#ifdef XSTORMY16_CMPSI2
+/* Performs an signed 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,
+   then 2 is returned.  Otherwise A and B are equal and 1 is returned.  */
+
+word_type
+__cmpsi2 (SItype a, SItype b)
+{
+  word_type hi_a = (a >> 16);
+  word_type hi_b = (b >> 16);
+
+  if (hi_a == hi_b)
+    {
+      word_type low_a = (a & 0xffff);
+      word_type low_b = (b & 0xffff);
+
+      return low_a < low_b ? 0 : (low_a > low_b ? 2 : 1);
+    }
+
+  return hi_a < hi_b ? 0 : 2;
+}
+#endif
index 7ca2635..62b4e9f 100644 (file)
@@ -33,6 +33,7 @@ LIB2FUNCS_EXTRA = \
        $(srcdir)/config/stormy16/stormy16-lib2-clzhi2.c \
        $(srcdir)/config/stormy16/stormy16-lib2-ctzhi2.c \
        $(srcdir)/config/stormy16/stormy16-lib2-ffshi2.c \
+       $(srcdir)/config/stormy16/stormy16-lib2-cmpsi2.c \
        $(srcdir)/config/stormy16/stormy16-lib2-ucmpsi2.c
 
 # Floating point emulation libraries.
@@ -46,4 +47,4 @@ fp-bit.c: $(srcdir)/config/fp-bit.c
 dp-bit.c: $(srcdir)/config/fp-bit.c
        cat $(srcdir)/config/fp-bit.c > dp-bit.c
 
-TARGET_LIBGCC2_CFLAGS = -Os
+TARGET_LIBGCC2_CFLAGS = -O2