diff options
author | tege <tege@gmplib.org> | 2001-03-04 20:45:37 +0100 |
---|---|---|
committer | tege <tege@gmplib.org> | 2001-03-04 20:45:37 +0100 |
commit | 17e6b60a30ce2422c7b4ceb3bf5e79227acba837 (patch) | |
tree | d680d50fa607d2a71366aa1028982fcabf845edb /longlong.h | |
parent | 39a68b7c5dd1ea3262398f3842cc13e63d3dc8d0 (diff) | |
download | gmp-17e6b60a30ce2422c7b4ceb3bf5e79227acba837.tar.gz |
(CRAY udiv_qrnnd): No longer conditional on CRAYMPP.
(64-bit hppa add_ssaaaa): New.
(64-bit hppa sub_ddmmss): New.
Diffstat (limited to 'longlong.h')
-rw-r--r-- | longlong.h | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/longlong.h b/longlong.h index 346486d4c..3a11e7034 100644 --- a/longlong.h +++ b/longlong.h @@ -160,7 +160,6 @@ long __MPN(count_leading_zeros) _PROTO ((UDItype)); (ph) = _int_mult_upper (m0, m1); \ (pl) = __m0 * __m1; \ } while (0) -#if defined (_CRAYMPP) /* I.e., T3D and T3E alpha-based machines */ #ifndef LONGLONG_STANDALONE #define udiv_qrnnd(q, r, n1, n0, d) \ do { UWtype __di; \ @@ -168,11 +167,20 @@ long __MPN(count_leading_zeros) _PROTO ((UDItype)); udiv_qrnnd_preinv (q, r, n1, n0, d, __di); \ } while (0) #endif /* LONGLONG_STANDALONE */ -#endif /* _CRAYMPP */ #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 %4,%5,%1\n\tadd,dc %2,%3,%0" \ + : "=r" (sh), "=&r" (sl) \ + : "%rM" (ah), "rM" (bh), "%rM" (al), "rM" (bl)) +#define sub_ddmmss(sh, sl, ah, al, bh, bl) \ + __asm__ ("sub %4,%5,%1\n\tsub,db %2,%3,%0" \ + : "=r" (sh), "=&r" (sl) \ + : "rM" (ah), "rM" (bh), "rM" (al), "rM" (bl)) +#endif /* We put the result pointer parameter last here, since it makes passing of the other parameters more efficient. */ #ifndef LONGLONG_STANDALONE |