diff options
author | Kevin Ryde <user42@zip.com.au> | 2003-08-19 02:42:40 +0200 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2003-08-19 02:42:40 +0200 |
commit | 0955b47bc04d485b91b5699318f6ab594bbda1e1 (patch) | |
tree | 7976af7f54bdab14fddc042535ff763acdcc9e5b /longlong.h | |
parent | 58c3a5f3af0b9c828f3ff5887e6e66ede967c773 (diff) | |
download | gmp-0955b47bc04d485b91b5699318f6ab594bbda1e1.tar.gz |
* longlong.h (add_ssaaaa, sub_ddmmss) [hppa 64]: Move down into main
__GNUC__ block. Exclude for _LONG_LONG_LIMB (ie. ABI=2.0n) since
these forms are only for ABI=2.0w.
Diffstat (limited to 'longlong.h')
-rw-r--r-- | longlong.h | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/longlong.h b/longlong.h index af18697a6..c4d0b3005 100644 --- a/longlong.h +++ b/longlong.h @@ -200,19 +200,6 @@ long __MPN(count_leading_zeros) _PROTO ((UDItype)); #endif /* _CRAYIEEE */ #endif /* _CRAY */ -#if defined (__hppa) && W_TYPE_SIZE == 64 -#if defined (__GNUC__) -#define add_ssaaaa(sh, sl, ah, al, bh, bl) \ - __asm__ ("add%I5 %5,%r4,%1\n\tadd,dc %r2,%r3,%0" \ - : "=r" (sh), "=&r" (sl) \ - : "rM" (ah), "rM" (bh), "%rM" (al), "rI" (bl)) -#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ - __asm__ ("sub%I4 %4,%r5,%1\n\tsub,db %r2,%r3,%0" \ - : "=r" (sh), "=&r" (sl) \ - : "rM" (ah), "rM" (bh), "rI" (al), "rM" (bl)) -#endif -#endif /* hppa */ - #if defined (__ia64) && W_TYPE_SIZE == 64 #if defined (__GNUC__) /* Do both product parts in assembly, since that gives better code with @@ -531,6 +518,20 @@ extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype *, UWtype, UWtype, UWtype)); } while (0) #endif /* hppa */ +/* These macros are for ABI=2.0w. In ABI=2.0n they can't be used, since GCC + (3.2) puts longlong into two adjacent 32-bit registers. Presumably this + is just a case of no direct support for 2.0n but treating it like 1.0. */ +#if defined (__hppa) && W_TYPE_SIZE == 64 && ! defined (_LONG_LONG_LIMB) +#define add_ssaaaa(sh, sl, ah, al, bh, bl) \ + __asm__ ("add%I5 %5,%r4,%1\n\tadd,dc %r2,%r3,%0" \ + : "=r" (sh), "=&r" (sl) \ + : "rM" (ah), "rM" (bh), "%rM" (al), "rI" (bl)) +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + __asm__ ("sub%I4 %4,%r5,%1\n\tsub,db %r2,%r3,%0" \ + : "=r" (sh), "=&r" (sl) \ + : "rM" (ah), "rM" (bh), "rI" (al), "rM" (bl)) +#endif /* hppa */ + #if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32 #define smul_ppmm(xh, xl, m0, m1) \ do { \ |