diff options
author | John Hauser <jhauser@eecs.berkeley.edu> | 2016-07-22 18:03:04 -0700 |
---|---|---|
committer | John Hauser <jhauser@eecs.berkeley.edu> | 2016-07-22 18:03:04 -0700 |
commit | cb5087cd7403acf31ac24ac4be8e019a51904895 (patch) | |
tree | 3eeb55d6ad63e33dc8e3be33614e94bbe8a8cac5 /source/s_shiftRightJam128Extra.c | |
parent | 45fdcf1c6583e4af380b147ac568f5aa721b7ba8 (diff) | |
download | berkeley-softfloat-3-cb5087cd7403acf31ac24ac4be8e019a51904895.zip berkeley-softfloat-3-cb5087cd7403acf31ac24ac4be8e019a51904895.tar.gz berkeley-softfloat-3-cb5087cd7403acf31ac24ac4be8e019a51904895.tar.bz2 |
Release 3b. See "doc/SoftFloat-history.html".
Diffstat (limited to 'source/s_shiftRightJam128Extra.c')
-rw-r--r-- | source/s_shiftRightJam128Extra.c | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/source/s_shiftRightJam128Extra.c b/source/s_shiftRightJam128Extra.c index fb14ef8..ead9448 100644 --- a/source/s_shiftRightJam128Extra.c +++ b/source/s_shiftRightJam128Extra.c @@ -2,9 +2,9 @@ /*============================================================================ This C source file is part of the SoftFloat IEEE Floating-Point Arithmetic -Package, Release 3a, by John R. Hauser. +Package, Release 3b, by John R. Hauser. -Copyright 2011, 2012, 2013, 2014, 2015 The Regents of the University of +Copyright 2011, 2012, 2013, 2014, 2015, 2016 The Regents of the University of California. All rights reserved. Redistribution and use in source and binary forms, with or without @@ -42,29 +42,29 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. struct uint128_extra softfloat_shiftRightJam128Extra( - uint64_t a64, uint64_t a0, uint64_t extra, uint_fast32_t count ) + uint64_t a64, uint64_t a0, uint64_t extra, uint_fast32_t dist ) { - int_fast32_t negCount; + uint_fast8_t u8NegDist; struct uint128_extra z; - negCount = -count; - if ( count < 64 ) { - z.v.v64 = a64>>count; - z.v.v0 = a64<<(negCount & 63) | a0>>count; - z.extra = a0<<(negCount & 63); + u8NegDist = -dist; + if ( dist < 64 ) { + z.v.v64 = a64>>dist; + z.v.v0 = a64<<(u8NegDist & 63) | a0>>dist; + z.extra = a0<<(u8NegDist & 63); } else { z.v.v64 = 0; - if ( count == 64 ) { + if ( dist == 64 ) { z.v.v0 = a64; z.extra = a0; } else { extra |= a0; - if ( count < 128 ) { - z.v.v0 = a64>>(count & 63); - z.extra = a64<<(negCount & 63); + if ( dist < 128 ) { + z.v.v0 = a64>>(dist & 63); + z.extra = a64<<(u8NegDist & 63); } else { z.v.v0 = 0; - z.extra = (count == 128) ? a64 : (a64 != 0); + z.extra = (dist == 128) ? a64 : (a64 != 0); } } } |