diff options
author | tege <tege@gmplib.org> | 2001-09-20 20:56:14 +0200 |
---|---|---|
committer | tege <tege@gmplib.org> | 2001-09-20 20:56:14 +0200 |
commit | bb78150378b7ee83dfa2a351eb39aa823473cc4e (patch) | |
tree | fe0d2f051e49257774f1fd374a9565a1308a985e /longlong.h | |
parent | f449802477338ec6a0d0ea399645d7d91e163bf0 (diff) | |
download | gmp-bb78150378b7ee83dfa2a351eb39aa823473cc4e.tar.gz |
Rewrite __i370__ smul_ppmm; enable also for __s390__.
Diffstat (limited to 'longlong.h')
-rw-r--r-- | longlong.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/longlong.h b/longlong.h index e0a64d236..2d04e1004 100644 --- a/longlong.h +++ b/longlong.h @@ -521,15 +521,15 @@ extern UWtype __MPN(udiv_qrnnd) _PROTO ((UWtype *, UWtype, UWtype, UWtype)); } while (0) #endif /* hppa */ -#if (defined (__i370__) || defined (__mvs__)) && W_TYPE_SIZE == 32 +#if (defined (__i370__) || defined (__s390__) || defined (__mvs__)) && W_TYPE_SIZE == 32 #define smul_ppmm(xh, xl, m0, m1) \ do { \ union {DItype __ll; \ struct {USItype __h, __l;} __i; \ } __x; \ - __asm__ ("mr %0,%3" \ - : "=r" (__x.__i.__h), "=r" (__x.__i.__l) \ - : "%1" (m0), "r" (m1)); \ + __asm__ ("lr %N0,%1\n\tmr %0,%2" \ + : "=&r" (__x.__ll) \ + : "r" (m0), "r" (m1)); \ (xh) = __x.__i.__h; (xl) = __x.__i.__l; \ } while (0) #define sdiv_qrnnd(q, r, n1, n0, d) \ |