summaryrefslogtreecommitdiff
path: root/longlong.h
diff options
context:
space:
mode:
authortege <tege@gmplib.org>2001-03-04 20:45:37 +0100
committertege <tege@gmplib.org>2001-03-04 20:45:37 +0100
commit17e6b60a30ce2422c7b4ceb3bf5e79227acba837 (patch)
treed680d50fa607d2a71366aa1028982fcabf845edb /longlong.h
parent39a68b7c5dd1ea3262398f3842cc13e63d3dc8d0 (diff)
downloadgmp-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.h12
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