OSDN Git Service

(PREDICATE_CODES): Remove duplicate defintion of seth_add3_operand.
[pf3gnuchains/gcc-fork.git] / gcc / libgcc2.h
index f32f4a0..3c7e3e2 100644 (file)
@@ -19,9 +19,19 @@ along with GCC; see the file COPYING.  If not, write to the Free
 Software Foundation, 59 Temple Place - Suite 330, Boston, MA
 02111-1307, USA.  */
 
+/* As a special exception, if you link this library with other files,
+   some of which are compiled with GCC, to produce an executable,
+   this library does not by itself cause the resulting executable
+   to be covered by the GNU General Public License.
+   This exception does not however invalidate any other reasons why
+   the executable file might be covered by the GNU General Public License.  */
+
+
 #ifndef GCC_LIBGCC2_H
 #define GCC_LIBGCC2_H
 
+#pragma GCC visibility push(default)
+
 extern int __gcc_bcmp (const unsigned char *, const unsigned char *, size_t);
 extern void __clear_cache (char *, char *);
 extern void __eprintf (const char *, const char *, unsigned int, const char *)
@@ -61,15 +71,15 @@ typedef unsigned int UQItype        __attribute__ ((mode (QI)));
 typedef                 int HItype     __attribute__ ((mode (HI)));
 typedef unsigned int UHItype   __attribute__ ((mode (HI)));
 #if MIN_UNITS_PER_WORD > 1
-/* These typedefs are usually forbidden on dsp's with UNITS_PER_WORD 1 */
+/* These typedefs are usually forbidden on dsp's with UNITS_PER_WORD 1 */
 typedef         int SItype     __attribute__ ((mode (SI)));
 typedef unsigned int USItype   __attribute__ ((mode (SI)));
 #if LONG_LONG_TYPE_SIZE > 32
-/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 2 */
+/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 2 */
 typedef                 int DItype     __attribute__ ((mode (DI)));
 typedef unsigned int UDItype   __attribute__ ((mode (DI)));
 #if MIN_UNITS_PER_WORD > 4
-/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 4 */
+/* These typedefs are usually forbidden on archs with UNITS_PER_WORD 4 */
 typedef                 int TItype     __attribute__ ((mode (TI)));
 typedef unsigned int UTItype   __attribute__ ((mode (TI)));
 #endif
@@ -81,7 +91,7 @@ typedef unsigned int UTItype  __attribute__ ((mode (TI)));
 typedef        float SFtype    __attribute__ ((mode (SF)));
 typedef                float DFtype    __attribute__ ((mode (DF)));
 
-#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96
+#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80
 typedef                float XFtype    __attribute__ ((mode (XF)));
 #endif
 #if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 128
@@ -182,7 +192,6 @@ typedef int word_type __attribute__ ((mode (__word__)));
 #define __lshrdi3      __NDW(lshr,3)
 #define __ashldi3      __NDW(ashl,3)
 #define __ashrdi3      __NDW(ashr,3)
-#define __ffsdi2       __NDW(ffs,2)
 #define __cmpdi2       __NDW(cmp,2)
 #define __ucmpdi2      __NDW(ucmp,2)
 #define __udivmoddi4   __NDW(udivmod,4)
@@ -203,6 +212,17 @@ typedef int word_type __attribute__ ((mode (__word__)));
 #define __fixunsdfSI   __NW(fixunsdf,)
 #define __fixunssfSI   __NW(fixunssf,)
 
+#define __ffsSI2       __NW(ffs,2)
+#define __clzSI2       __NW(clz,2)
+#define __ctzSI2       __NW(ctz,2)
+#define __popcountSI2  __NW(popcount,2)
+#define __paritySI2    __NW(parity,2)
+#define __ffsDI2       __NDW(ffs,2)
+#define __clzDI2       __NDW(clz,2)
+#define __ctzDI2       __NDW(ctz,2)
+#define __popcountDI2  __NDW(popcount,2)
+#define __parityDI2    __NDW(parity,2)
+
 extern DWtype __muldi3 (DWtype, DWtype);
 extern DWtype __divdi3 (DWtype, DWtype);
 extern UDWtype __udivdi3 (UDWtype, UDWtype);
@@ -224,20 +244,6 @@ extern DWtype __lshrdi3 (DWtype, word_type);
 extern DWtype __ashldi3 (DWtype, word_type);
 extern DWtype __ashrdi3 (DWtype, word_type);
 
-/* ??? Ought to get these named properly for DSPs.  */
-#if BITS_PER_UNIT != 8 || MIN_UNITS_PER_WORD < 4
-# undef L_clzsi2
-# undef L_ctzsi2
-# undef L_popcountsi2
-# undef L_paritysi2
-# if LONG_LONG_TYPE_SIZE <= 32
-#  undef L_clzdi2
-#  undef L_ctzdi2
-#  undef L_popcountdi2
-#  undef L_paritydi2
-# endif
-#endif
-
 /* __udiv_w_sdiv is static inline when building other libgcc2 portions.  */
 #if (!defined(L_udivdi3) && !defined(L_divdi3) && \
      !defined(L_umoddi3) && !defined(L_moddi3))
@@ -268,7 +274,7 @@ extern UWtype __fixunssfSI (SFtype);
 extern DWtype __fixunsdfDI (DFtype);
 extern DWtype __fixunssfDI (SFtype);
 
-#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 96
+#if LIBGCC2_LONG_DOUBLE_TYPE_SIZE == 80
 extern DWtype __fixxfdi (XFtype);
 extern DWtype __fixunsxfDI (XFtype);
 extern XFtype __floatdixf (DWtype);
@@ -303,4 +309,21 @@ typedef union
 
 #include "longlong.h"
 
+#undef int
+extern int __clzDI2 (UDWtype);
+extern int __clzSI2 (UWtype);
+extern int __ctzSI2 (UWtype);
+extern int __ffsSI2 (UWtype);
+extern int __ffsDI2 (DWtype);
+extern int __ctzDI2 (UDWtype);
+extern int __popcountSI2 (UWtype);
+extern int __popcountDI2 (UDWtype);
+extern int __paritySI2 (UWtype);
+extern int __parityDI2 (UDWtype);
+#define int bogus_type
+
+extern void __enable_execute_stack (void *);
+
+#pragma GCC visibility pop
+
 #endif /* ! GCC_LIBGCC2_H */