diff options
author | Kevin Ryde <user42@zip.com.au> | 2002-07-17 01:39:11 +0200 |
---|---|---|
committer | Kevin Ryde <user42@zip.com.au> | 2002-07-17 01:39:11 +0200 |
commit | c3e6632346c452f9d85ab71c7b0cb60191371da8 (patch) | |
tree | 674c7c73a43a57b7e44e3d5c35c82d9a89c21103 /mpz/inp_raw.c | |
parent | 527300103510dc24ecadfbe28886359eb438c6b0 (diff) | |
download | gmp-c3e6632346c452f9d85ab71c7b0cb60191371da8.tar.gz |
* mpz/inp_raw.c (NTOH_LIMB_FETCH): Use simple generic default, since
endianness detection is now cross-compile friendly.
Diffstat (limited to 'mpz/inp_raw.c')
-rw-r--r-- | mpz/inp_raw.c | 45 |
1 files changed, 7 insertions, 38 deletions
diff --git a/mpz/inp_raw.c b/mpz/inp_raw.c index 58a8b9fc9..4bb89b18b 100644 --- a/mpz/inp_raw.c +++ b/mpz/inp_raw.c @@ -31,53 +31,22 @@ MA 02111-1307, USA. */ #define NTOH_LIMB_FETCH(limb, src) do { (limb) = *(src); } while (0) #endif -/* The generic implementations below very likely come out as lots of - separate byte fetches, so if we know the host is little endian then - instead use a single load and a purely arithmetic BSWAP_LIMB. */ #if HAVE_LIMB_LITTLE_ENDIAN #define NTOH_LIMB_FETCH(limb, src) BSWAP_LIMB_FETCH (limb, src) #endif -#if ! defined (NTOH_LIMB_FETCH) -#if BITS_PER_MP_LIMB == 8 -#define NTOH_LIMB_FETCH(limb, src) do { (limb) = *(src); } while (0) -#endif -#if BITS_PER_MP_LIMB == 16 -#define NTOH_LIMB_FETCH(limb, src) \ - do { \ - const unsigned char *__p = (const unsigned char *) (src); \ - (limb) = \ - ( (mp_limb_t) __p[0] << 8) \ - + (mp_limb_t) __p[1]; \ - } while (0) -#endif -#if BITS_PER_MP_LIMB == 32 +#ifndef NTOH_LIMB_FETCH #define NTOH_LIMB_FETCH(limb, src) \ do { \ const unsigned char *__p = (const unsigned char *) (src); \ - (limb) = \ - ( (mp_limb_t) __p[0] << 24) \ - + ((mp_limb_t) __p[1] << 16) \ - + ((mp_limb_t) __p[2] << 8) \ - + (mp_limb_t) __p[3]; \ + mp_limb_t __limb; \ + int __i; \ + __limb = 0; \ + for (__i = 0; __i < BYTES_PER_MP_LIMB; __i++) \ + __limb = (__limb << 8) | __p[__i]; \ + (limb) = __limb; \ } while (0) #endif -#if ! defined (NTOH_LIMB_FETCH) && BITS_PER_MP_LIMB == 64 -#define NTOH_LIMB_FETCH(limb, src) \ - do { \ - const unsigned char *__p = (const unsigned char *) (src); \ - (limb) = \ - ( (mp_limb_t) __p[0] << 56) \ - + ((mp_limb_t) __p[1] << 48) \ - + ((mp_limb_t) __p[2] << 40) \ - + ((mp_limb_t) __p[3] << 32) \ - + ((mp_limb_t) __p[4] << 24) \ - + ((mp_limb_t) __p[5] << 16) \ - + ((mp_limb_t) __p[6] << 8) \ - + (mp_limb_t) __p[7]; \ - } while (0) -#endif -#endif /* Enhancement: The byte swap loop ought to be safe to vectorize on Cray |