mirror of
git://git.gnupg.org/gnupg.git
synced 2025-02-02 16:43:03 +01:00
* longlong.h: Replaced all K&R multiline strings by ISO ones for
the sake of modern compilers. Suggested by Marco Parrone.
This commit is contained in:
parent
6b50533fe1
commit
9a4e2a4c86
@ -1,3 +1,8 @@
|
||||
2002-07-24 Werner Koch <wk@gnupg.org>
|
||||
|
||||
* longlong.h: Replaced all K&R multiline strings by ISO ones for
|
||||
the sake of modern compilers. Suggested by Marco Parrone.
|
||||
|
||||
2002-05-10 Stefan Bellon <sbellon@sbellon.de>
|
||||
|
||||
* mpiutil.c (mpi_alloc_like/mpi_debug_alloc_like): Added code
|
||||
|
452
mpi/longlong.h
452
mpi/longlong.h
@ -2,7 +2,7 @@
|
||||
Note: I added some stuff for use with gnupg
|
||||
|
||||
Copyright (C) 1991, 1992, 1993, 1994, 1996, 1998,
|
||||
2000, 2001 Free Software Foundation, Inc.
|
||||
2000, 2001, 2002 Free Software Foundation, Inc.
|
||||
|
||||
This file is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Library General Public License as published by
|
||||
@ -115,8 +115,8 @@ MA 02111-1307, USA. */
|
||||
***************************************/
|
||||
#if (defined (__a29k__) || defined (_AM29K)) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("add %1,%4,%5
|
||||
addc %0,%2,%3" \
|
||||
__asm__ ("add %1,%4,%5\n" \
|
||||
"addc %0,%2,%3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%r" ((USItype)(ah)), \
|
||||
@ -124,8 +124,8 @@ MA 02111-1307, USA. */
|
||||
"%r" ((USItype)(al)), \
|
||||
"rI" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("sub %1,%4,%5
|
||||
subc %0,%2,%3" \
|
||||
__asm__ ("sub %1,%4,%5\n" \
|
||||
"subc %0,%2,%3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "r" ((USItype)(ah)), \
|
||||
@ -186,8 +186,8 @@ extern UDItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__arm__) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("adds %1, %4, %5
|
||||
adc %0, %2, %3" \
|
||||
__asm__ ("adds %1, %4, %5\n" \
|
||||
"adc %0, %2, %3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%r" ((USItype)(ah)), \
|
||||
@ -195,8 +195,8 @@ extern UDItype __udiv_qrnnd ();
|
||||
"%r" ((USItype)(al)), \
|
||||
"rI" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subs %1, %4, %5
|
||||
sbc %0, %2, %3" \
|
||||
__asm__ ("subs %1, %4, %5\n" \
|
||||
"sbc %0, %2, %3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "r" ((USItype)(ah)), \
|
||||
@ -205,32 +205,32 @@ extern UDItype __udiv_qrnnd ();
|
||||
"rI" ((USItype)(bl)))
|
||||
#if defined __ARM_ARCH_2__ || defined __ARM_ARCH_3__
|
||||
#define umul_ppmm(xh, xl, a, b) \
|
||||
__asm__ ("%@ Inlined umul_ppmm
|
||||
mov %|r0, %2, lsr #16 @ AAAA
|
||||
mov %|r2, %3, lsr #16 @ BBBB
|
||||
bic %|r1, %2, %|r0, lsl #16 @ aaaa
|
||||
bic %0, %3, %|r2, lsl #16 @ bbbb
|
||||
mul %1, %|r1, %|r2 @ aaaa * BBBB
|
||||
mul %|r2, %|r0, %|r2 @ AAAA * BBBB
|
||||
mul %|r1, %0, %|r1 @ aaaa * bbbb
|
||||
mul %0, %|r0, %0 @ AAAA * bbbb
|
||||
adds %|r0, %1, %0 @ central sum
|
||||
addcs %|r2, %|r2, #65536
|
||||
adds %1, %|r1, %|r0, lsl #16
|
||||
adc %0, %|r2, %|r0, lsr #16" \
|
||||
__asm__ ("%@ Inlined umul_ppmm\n" \
|
||||
"mov %|r0, %2, lsr #16 @ AAAA\n" \
|
||||
"mov %|r2, %3, lsr #16 @ BBBB\n" \
|
||||
"bic %|r1, %2, %|r0, lsl #16 @ aaaa\n" \
|
||||
"bic %0, %3, %|r2, lsl #16 @ bbbb\n" \
|
||||
"mul %1, %|r1, %|r2 @ aaaa * BBBB\n" \
|
||||
"mul %|r2, %|r0, %|r2 @ AAAA * BBBB\n" \
|
||||
"mul %|r1, %0, %|r1 @ aaaa * bbbb\n" \
|
||||
"mul %0, %|r0, %0 @ AAAA * bbbb\n" \
|
||||
"adds %|r0, %1, %0 @ central sum\n" \
|
||||
"addcs %|r2, %|r2, #65536\n" \
|
||||
"adds %1, %|r1, %|r0, lsl #16\n" \
|
||||
"adc %0, %|r2, %|r0, lsr #16" \
|
||||
: "=&r" ((USItype)(xh)), \
|
||||
"=r" ((USItype)(xl)) \
|
||||
: "r" ((USItype)(a)), \
|
||||
"r" ((USItype)(b)) \
|
||||
: "r0", "r1", "r2")
|
||||
#else
|
||||
#define umul_ppmm(xh, xl, a, b) \
|
||||
__asm__ ("%@ Inlined umul_ppmm
|
||||
umull %r1, %r0, %r2, %r3" \
|
||||
: "=&r" ((USItype)(xh)), \
|
||||
"=r" ((USItype)(xl)) \
|
||||
: "r" ((USItype)(a)), \
|
||||
"r" ((USItype)(b)) \
|
||||
#define umul_ppmm(xh, xl, a, b) \
|
||||
__asm__ ("%@ Inlined umul_ppmm\n" \
|
||||
"umull %r1, %r0, %r2, %r3" \
|
||||
: "=&r" ((USItype)(xh)), \
|
||||
"=r" ((USItype)(xl)) \
|
||||
: "r" ((USItype)(a)), \
|
||||
"r" ((USItype)(b)) \
|
||||
: "r0", "r1")
|
||||
#endif
|
||||
#define UMUL_TIME 20
|
||||
@ -274,8 +274,8 @@ extern UDItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__gmicro__) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("add.w %5,%1
|
||||
addx %3,%0" \
|
||||
__asm__ ("add.w %5,%1\n" \
|
||||
"addx %3,%0" \
|
||||
: "=g" ((USItype)(sh)), \
|
||||
"=&g" ((USItype)(sl)) \
|
||||
: "%0" ((USItype)(ah)), \
|
||||
@ -283,8 +283,8 @@ extern UDItype __udiv_qrnnd ();
|
||||
"%1" ((USItype)(al)), \
|
||||
"g" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("sub.w %5,%1
|
||||
subx %3,%0" \
|
||||
__asm__ ("sub.w %5,%1\n" \
|
||||
"subx %3,%0" \
|
||||
: "=g" ((USItype)(sh)), \
|
||||
"=&g" ((USItype)(sl)) \
|
||||
: "0" ((USItype)(ah)), \
|
||||
@ -317,8 +317,8 @@ extern UDItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__hppa) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("add %4,%5,%1
|
||||
addc %2,%3,%0" \
|
||||
__asm__ ("add %4,%5,%1\n" \
|
||||
"addc %2,%3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%rM" ((USItype)(ah)), \
|
||||
@ -326,8 +326,8 @@ extern UDItype __udiv_qrnnd ();
|
||||
"%rM" ((USItype)(al)), \
|
||||
"rM" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("sub %4,%5,%1
|
||||
subb %2,%3,%0" \
|
||||
__asm__ ("sub %4,%5,%1\n" \
|
||||
"subb %2,%3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "rM" ((USItype)(ah)), \
|
||||
@ -362,25 +362,25 @@ extern UDItype __udiv_qrnnd ();
|
||||
extern USItype __udiv_qrnnd ();
|
||||
#endif /* LONGLONG_STANDALONE */
|
||||
#define count_leading_zeros(count, x) \
|
||||
do { \
|
||||
USItype __tmp; \
|
||||
__asm__ ( \
|
||||
"ldi 1,%0
|
||||
extru,= %1,15,16,%%r0 ; Bits 31..16 zero?
|
||||
extru,tr %1,15,16,%1 ; No. Shift down, skip add.
|
||||
ldo 16(%0),%0 ; Yes. Perform add.
|
||||
extru,= %1,23,8,%%r0 ; Bits 15..8 zero?
|
||||
extru,tr %1,23,8,%1 ; No. Shift down, skip add.
|
||||
ldo 8(%0),%0 ; Yes. Perform add.
|
||||
extru,= %1,27,4,%%r0 ; Bits 7..4 zero?
|
||||
extru,tr %1,27,4,%1 ; No. Shift down, skip add.
|
||||
ldo 4(%0),%0 ; Yes. Perform add.
|
||||
extru,= %1,29,2,%%r0 ; Bits 3..2 zero?
|
||||
extru,tr %1,29,2,%1 ; No. Shift down, skip add.
|
||||
ldo 2(%0),%0 ; Yes. Perform add.
|
||||
extru %1,30,1,%1 ; Extract bit 1.
|
||||
sub %0,%1,%0 ; Subtract it.
|
||||
" : "=r" (count), "=r" (__tmp) : "1" (x)); \
|
||||
do { \
|
||||
USItype __tmp; \
|
||||
__asm__ ( \
|
||||
"ldi 1,%0 \n" \
|
||||
"extru,= %1,15,16,%%r0 ; Bits 31..16 zero? \n" \
|
||||
"extru,tr %1,15,16,%1 ; No. Shift down, skip add.\n" \
|
||||
"ldo 16(%0),%0 ; Yes. Perform add. \n" \
|
||||
"extru,= %1,23,8,%%r0 ; Bits 15..8 zero? \n" \
|
||||
"extru,tr %1,23,8,%1 ; No. Shift down, skip add.\n" \
|
||||
"ldo 8(%0),%0 ; Yes. Perform add. \n" \
|
||||
"extru,= %1,27,4,%%r0 ; Bits 7..4 zero? \n" \
|
||||
"extru,tr %1,27,4,%1 ; No. Shift down, skip add.\n" \
|
||||
"ldo 4(%0),%0 ; Yes. Perform add. \n" \
|
||||
"extru,= %1,29,2,%%r0 ; Bits 3..2 zero? \n" \
|
||||
"extru,tr %1,29,2,%1 ; No. Shift down, skip add.\n" \
|
||||
"ldo 2(%0),%0 ; Yes. Perform add. \n" \
|
||||
"extru %1,30,1,%1 ; Extract bit 1. \n" \
|
||||
"sub %0,%1,%0 ; Subtract it. " \
|
||||
: "=r" (count), "=r" (__tmp) : "1" (x)); \
|
||||
} while (0)
|
||||
#endif /* hppa */
|
||||
|
||||
@ -435,8 +435,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if (defined (__i386__) || defined (__i486__)) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("addl %5,%1
|
||||
adcl %3,%0" \
|
||||
__asm__ ("addl %5,%1\n" \
|
||||
"adcl %3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%0" ((USItype)(ah)), \
|
||||
@ -444,8 +444,8 @@ extern USItype __udiv_qrnnd ();
|
||||
"%1" ((USItype)(al)), \
|
||||
"g" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subl %5,%1
|
||||
sbbl %3,%0" \
|
||||
__asm__ ("subl %5,%1\n" \
|
||||
"sbbl %3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "0" ((USItype)(ah)), \
|
||||
@ -488,7 +488,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__i860__) && W_TYPE_SIZE == 32
|
||||
#define rshift_rhlc(r,h,l,c) \
|
||||
__asm__ ("shr %3,r0,r0\;shrd %1,%2,%0" \
|
||||
__asm__ ("shr %3,r0,r0\n" \
|
||||
"shrd %1,%2,%0" \
|
||||
"=r" (r) : "r" (h), "r" (l), "rn" (c))
|
||||
#endif /* i860 */
|
||||
|
||||
@ -497,7 +498,9 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__i960__) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("cmpo 1,0\;addc %5,%4,%1\;addc %3,%2,%0" \
|
||||
__asm__ ("cmpo 1,0\n" \
|
||||
"addc %5,%4,%1\n" \
|
||||
"addc %3,%2,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%dI" ((USItype)(ah)), \
|
||||
@ -505,7 +508,9 @@ extern USItype __udiv_qrnnd ();
|
||||
"%dI" ((USItype)(al)), \
|
||||
"dI" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("cmpo 0,0\;subc %5,%4,%1\;subc %3,%2,%0" \
|
||||
__asm__ ("cmpo 0,0\n" \
|
||||
"subc %5,%4,%1\n" \
|
||||
"subc %3,%2,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "dI" ((USItype)(ah)), \
|
||||
@ -568,8 +573,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if (defined (__mc68000__) || defined (__mc68020__) || defined (__NeXT__) || defined(mc68020)) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("add%.l %5,%1
|
||||
addx%.l %3,%0" \
|
||||
__asm__ ("add%.l %5,%1\n" \
|
||||
"addx%.l %3,%0" \
|
||||
: "=d" ((USItype)(sh)), \
|
||||
"=&d" ((USItype)(sl)) \
|
||||
: "%0" ((USItype)(ah)), \
|
||||
@ -577,8 +582,8 @@ extern USItype __udiv_qrnnd ();
|
||||
"%1" ((USItype)(al)), \
|
||||
"g" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("sub%.l %5,%1
|
||||
subx%.l %3,%0" \
|
||||
__asm__ ("sub%.l %5,%1\n" \
|
||||
"subx%.l %3,%0" \
|
||||
: "=d" ((USItype)(sh)), \
|
||||
"=&d" ((USItype)(sl)) \
|
||||
: "0" ((USItype)(ah)), \
|
||||
@ -615,32 +620,32 @@ extern USItype __udiv_qrnnd ();
|
||||
#define COUNT_LEADING_ZEROS_0 32
|
||||
#else /* not mc68020 */
|
||||
#define umul_ppmm(xh, xl, a, b) \
|
||||
do { USItype __umul_tmp1, __umul_tmp2; \
|
||||
__asm__ ("| Inlined umul_ppmm
|
||||
move%.l %5,%3
|
||||
move%.l %2,%0
|
||||
move%.w %3,%1
|
||||
swap %3
|
||||
swap %0
|
||||
mulu %2,%1
|
||||
mulu %3,%0
|
||||
mulu %2,%3
|
||||
swap %2
|
||||
mulu %5,%2
|
||||
add%.l %3,%2
|
||||
jcc 1f
|
||||
add%.l %#0x10000,%0
|
||||
1: move%.l %2,%3
|
||||
clr%.w %2
|
||||
swap %2
|
||||
swap %3
|
||||
clr%.w %3
|
||||
add%.l %3,%1
|
||||
addx%.l %2,%0
|
||||
| End inlined umul_ppmm" \
|
||||
: "=&d" ((USItype)(xh)), "=&d" ((USItype)(xl)), \
|
||||
"=d" (__umul_tmp1), "=&d" (__umul_tmp2) \
|
||||
: "%2" ((USItype)(a)), "d" ((USItype)(b))); \
|
||||
do { USItype __umul_tmp1, __umul_tmp2; \
|
||||
__asm__ ("| Inlined umul_ppmm \n" \
|
||||
" move%.l %5,%3 \n" \
|
||||
" move%.l %2,%0 \n" \
|
||||
" move%.w %3,%1 \n" \
|
||||
" swap %3 \n" \
|
||||
" swap %0 \n" \
|
||||
" mulu %2,%1 \n" \
|
||||
" mulu %3,%0 \n" \
|
||||
" mulu %2,%3 \n" \
|
||||
" swap %2 \n" \
|
||||
" mulu %5,%2 \n" \
|
||||
" add%.l %3,%2 \n" \
|
||||
" jcc 1f \n" \
|
||||
" add%.l %#0x10000,%0 \n" \
|
||||
"1: move%.l %2,%3 \n" \
|
||||
" clr%.w %2 \n" \
|
||||
" swap %2 \n" \
|
||||
" swap %3 \n" \
|
||||
" clr%.w %3 \n" \
|
||||
" add%.l %3,%1 \n" \
|
||||
" addx%.l %2,%0 \n" \
|
||||
" | End inlined umul_ppmm" \
|
||||
: "=&d" ((USItype)(xh)), "=&d" ((USItype)(xl)), \
|
||||
"=d" (__umul_tmp1), "=&d" (__umul_tmp2) \
|
||||
: "%2" ((USItype)(a)), "d" ((USItype)(b))); \
|
||||
} while (0)
|
||||
#define UMUL_TIME 100
|
||||
#define UDIV_TIME 400
|
||||
@ -653,8 +658,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__m88000__) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("addu.co %1,%r4,%r5
|
||||
addu.ci %0,%r2,%r3" \
|
||||
__asm__ ("addu.co %1,%r4,%r5\n" \
|
||||
"addu.ci %0,%r2,%r3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%rJ" ((USItype)(ah)), \
|
||||
@ -662,8 +667,8 @@ extern USItype __udiv_qrnnd ();
|
||||
"%rJ" ((USItype)(al)), \
|
||||
"rJ" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subu.co %1,%r4,%r5
|
||||
subu.ci %0,%r2,%r3" \
|
||||
__asm__ ("subu.co %1,%r4,%r5\n" \
|
||||
"subu.ci %0,%r2,%r3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "rJ" ((USItype)(ah)), \
|
||||
@ -705,7 +710,6 @@ extern USItype __udiv_qrnnd ();
|
||||
#endif /* __m88110__ */
|
||||
#endif /* __m88000__ */
|
||||
|
||||
|
||||
/***************************************
|
||||
************** MIPS *****************
|
||||
***************************************/
|
||||
@ -719,9 +723,9 @@ extern USItype __udiv_qrnnd ();
|
||||
"d" ((USItype)(v)))
|
||||
#else
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("multu %2,%3
|
||||
mflo %0
|
||||
mfhi %1" \
|
||||
__asm__ ("multu %2,%3 \n" \
|
||||
"mflo %0 \n" \
|
||||
"mfhi %1" \
|
||||
: "=d" ((USItype)(w0)), \
|
||||
"=d" ((USItype)(w1)) \
|
||||
: "d" ((USItype)(u)), \
|
||||
@ -744,9 +748,9 @@ extern USItype __udiv_qrnnd ();
|
||||
"d" ((UDItype)(v)))
|
||||
#else
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("dmultu %2,%3
|
||||
mflo %0
|
||||
mfhi %1" \
|
||||
__asm__ ("dmultu %2,%3 \n" \
|
||||
"mflo %0 \n" \
|
||||
"mfhi %1" \
|
||||
: "=d" ((UDItype)(w0)), \
|
||||
"=d" ((UDItype)(w1)) \
|
||||
: "d" ((UDItype)(u)), \
|
||||
@ -926,8 +930,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__pyr__) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("addw %5,%1
|
||||
addwc %3,%0" \
|
||||
__asm__ ("addw %5,%1 \n" \
|
||||
"addwc %3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%0" ((USItype)(ah)), \
|
||||
@ -935,8 +939,8 @@ extern USItype __udiv_qrnnd ();
|
||||
"%1" ((USItype)(al)), \
|
||||
"g" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subw %5,%1
|
||||
subwb %3,%0" \
|
||||
__asm__ ("subw %5,%1 \n" \
|
||||
"subwb %3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "0" ((USItype)(ah)), \
|
||||
@ -948,8 +952,8 @@ extern USItype __udiv_qrnnd ();
|
||||
({union {UDItype __ll; \
|
||||
struct {USItype __h, __l;} __i; \
|
||||
} __xx; \
|
||||
__asm__ ("movw %1,%R0
|
||||
uemul %2,%0" \
|
||||
__asm__ ("movw %1,%R0 \n" \
|
||||
"uemul %2,%0" \
|
||||
: "=&r" (__xx.__ll) \
|
||||
: "g" ((USItype) (u)), \
|
||||
"g" ((USItype)(v))); \
|
||||
@ -962,8 +966,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__ibm032__) /* RT/ROMP */ && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("a %1,%5
|
||||
ae %0,%3" \
|
||||
__asm__ ("a %1,%5 \n" \
|
||||
"ae %0,%3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%0" ((USItype)(ah)), \
|
||||
@ -971,8 +975,8 @@ extern USItype __udiv_qrnnd ();
|
||||
"%1" ((USItype)(al)), \
|
||||
"r" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("s %1,%5
|
||||
se %0,%3" \
|
||||
__asm__ ("s %1,%5\n" \
|
||||
"se %0,%3" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "0" ((USItype)(ah)), \
|
||||
@ -983,26 +987,26 @@ extern USItype __udiv_qrnnd ();
|
||||
do { \
|
||||
USItype __m0 = (m0), __m1 = (m1); \
|
||||
__asm__ ( \
|
||||
"s r2,r2
|
||||
mts r10,%2
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
m r2,%3
|
||||
cas %0,r2,r0
|
||||
mfs r10,%1" \
|
||||
"s r2,r2 \n" \
|
||||
"mts r10,%2 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"m r2,%3 \n" \
|
||||
"cas %0,r2,r0 \n" \
|
||||
"mfs r10,%1" \
|
||||
: "=r" ((USItype)(ph)), \
|
||||
"=r" ((USItype)(pl)) \
|
||||
: "%r" (__m0), \
|
||||
@ -1036,9 +1040,9 @@ extern USItype __udiv_qrnnd ();
|
||||
#if defined (__sh2__) && W_TYPE_SIZE == 32
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ( \
|
||||
"dmulu.l %2,%3
|
||||
sts macl,%1
|
||||
sts mach,%0" \
|
||||
"dmulu.l %2,%3\n" \
|
||||
"sts macl,%1\n" \
|
||||
"sts mach,%0" \
|
||||
: "=r" ((USItype)(w1)), \
|
||||
"=r" ((USItype)(w0)) \
|
||||
: "r" ((USItype)(u)), \
|
||||
@ -1052,8 +1056,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__sparc__) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("addcc %r4,%5,%1
|
||||
addx %r2,%3,%0" \
|
||||
__asm__ ("addcc %r4,%5,%1\n" \
|
||||
"addx %r2,%3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "%rJ" ((USItype)(ah)), \
|
||||
@ -1062,8 +1066,8 @@ extern USItype __udiv_qrnnd ();
|
||||
"rI" ((USItype)(bl)) \
|
||||
__CLOBBER_CC)
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subcc %r4,%5,%1
|
||||
subx %r2,%3,%0" \
|
||||
__asm__ ("subcc %r4,%5,%1\n" \
|
||||
"subx %r2,%3,%0" \
|
||||
: "=r" ((USItype)(sh)), \
|
||||
"=&r" ((USItype)(sl)) \
|
||||
: "rJ" ((USItype)(ah)), \
|
||||
@ -1109,45 +1113,45 @@ extern USItype __udiv_qrnnd ();
|
||||
"r" ((USItype)(v)))
|
||||
#define UMUL_TIME 5
|
||||
#define udiv_qrnnd(q, r, n1, n0, d) \
|
||||
__asm__ ("! Inlined udiv_qrnnd
|
||||
wr %%g0,%2,%%y ! Not a delayed write for sparclite
|
||||
tst %%g0
|
||||
divscc %3,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%%g1
|
||||
divscc %%g1,%4,%0
|
||||
rd %%y,%1
|
||||
bl,a 1f
|
||||
add %1,%4,%1
|
||||
1: ! End of inline udiv_qrnnd" \
|
||||
__asm__ ("! Inlined udiv_qrnnd \n" \
|
||||
" wr %%g0,%2,%%y ! Not a delayed write for sparclite \n" \
|
||||
" tst %%g0 \n" \
|
||||
" divscc %3,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%%g1 \n" \
|
||||
" divscc %%g1,%4,%0 \n" \
|
||||
" rd %%y,%1 \n" \
|
||||
" bl,a 1f \n" \
|
||||
" add %1,%4,%1 \n" \
|
||||
"1: ! End of inline udiv_qrnnd" \
|
||||
: "=r" ((USItype)(q)), \
|
||||
"=r" ((USItype)(r)) \
|
||||
: "r" ((USItype)(n1)), \
|
||||
@ -1167,46 +1171,46 @@ extern USItype __udiv_qrnnd ();
|
||||
/* Default to sparc v7 versions of umul_ppmm and udiv_qrnnd. */
|
||||
#ifndef umul_ppmm
|
||||
#define umul_ppmm(w1, w0, u, v) \
|
||||
__asm__ ("! Inlined umul_ppmm
|
||||
wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr
|
||||
sra %3,31,%%g2 ! Don't move this insn
|
||||
and %2,%%g2,%%g2 ! Don't move this insn
|
||||
andcc %%g0,0,%%g1 ! Don't move this insn
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,%3,%%g1
|
||||
mulscc %%g1,0,%%g1
|
||||
add %%g1,%%g2,%0
|
||||
rd %%y,%1" \
|
||||
__asm__ ("! Inlined umul_ppmm \n" \
|
||||
" wr %%g0,%2,%%y ! SPARC has 0-3 delay insn after a wr \n" \
|
||||
" sra %3,31,%%g2 ! Don't move this insn \n" \
|
||||
" and %2,%%g2,%%g2 ! Don't move this insn \n" \
|
||||
" andcc %%g0,0,%%g1 ! Don't move this insn \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,%3,%%g1 \n" \
|
||||
" mulscc %%g1,0,%%g1 \n" \
|
||||
" add %%g1,%%g2,%0 \n" \
|
||||
" rd %%y,%1" \
|
||||
: "=r" ((USItype)(w1)), \
|
||||
"=r" ((USItype)(w0)) \
|
||||
: "%rI" ((USItype)(u)), \
|
||||
@ -1233,8 +1237,8 @@ extern USItype __udiv_qrnnd ();
|
||||
***************************************/
|
||||
#if defined (__vax__) && W_TYPE_SIZE == 32
|
||||
#define add_ssaaaa(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("addl2 %5,%1
|
||||
adwc %3,%0" \
|
||||
__asm__ ("addl2 %5,%1\n" \
|
||||
"adwc %3,%0" \
|
||||
: "=g" ((USItype)(sh)), \
|
||||
"=&g" ((USItype)(sl)) \
|
||||
: "%0" ((USItype)(ah)), \
|
||||
@ -1242,8 +1246,8 @@ extern USItype __udiv_qrnnd ();
|
||||
"%1" ((USItype)(al)), \
|
||||
"g" ((USItype)(bl)))
|
||||
#define sub_ddmmss(sh, sl, ah, al, bh, bl) \
|
||||
__asm__ ("subl2 %5,%1
|
||||
sbwc %3,%0" \
|
||||
__asm__ ("subl2 %5,%1\n" \
|
||||
"sbwc %3,%0" \
|
||||
: "=g" ((USItype)(sh)), \
|
||||
"=&g" ((USItype)(sl)) \
|
||||
: "0" ((USItype)(ah)), \
|
||||
|
Loading…
x
Reference in New Issue
Block a user