diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-06-15 18:12:05 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-06-15 18:12:05 +0000 |
commit | fed8f7f7aeb06dfae0dfbfb085c6857cc457c254 (patch) | |
tree | 292caa308359deaa5fed820469d0b37805126e68 /sysdeps/i386/i686/ffs.c | |
parent | e5bafd559a4c155fa9d1b1a669c67d99ea773565 (diff) | |
download | glibc-fed8f7f7aeb06dfae0dfbfb085c6857cc457c254.zip glibc-fed8f7f7aeb06dfae0dfbfb085c6857cc457c254.tar.gz glibc-fed8f7f7aeb06dfae0dfbfb085c6857cc457c254.tar.bz2 |
Update.
1998-06-15 18:07 Ulrich Drepper <drepper@cygnus.com>
* iconvdata/ksc5601.h: Clean up a bit.
1998-06-15 14:35 Ulrich Drepper <drepper@cygnus.com>
* sunrpc/svc_tcp.c (readtcp): Also listen to all the other connections
and process incoming data.
* sunrpc/xdr_rec.c (set_input_fragment): Only recognize zero length
fragments as invalid.
Patches by Thorsten Kukuk <kukuk@weber.uni-paderborn.de>.
1998-06-13 Andreas Jaeger <aj@arthur.rhein-neckar.de>
Removal of duplicates like "the the".
* manual/time.texi (TZ Variable): Likewise.
* manual/users.texi (Manipulating the Database): Likewise.
* manual/sysinfo.texi (Filesystem handling): Likewise.
* manual/signal.texi (Signaling Yourself): Likewise.
* manual/message.texi (Message Translation): Likewise.
(Common Usage): Likewise.
* manual/llio.texi: Likewise.
* manual/arith.texi (Old-style number conversion): Likewise.
* manual/argp.texi (Argp): Likewise.
(Argp Parsers): Likewise.
(Argp Help Filtering): Likewise.
* hesiod/README.hesiod: Correct typo.
* manual/llio.texi: Correct typos.
* manual/sysinfo.texi: Likewise.
1998-06-13 Andreas Jaeger <aj@arthur.rhein-neckar.de>
* rt/aio.h: Rename __op to __operation for g++.
1998-06-13 20:17 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
* iconvdata/gen-8bit-gap.sh: Use awk not perl. Clean up sed
script.
* iconvdata/gen-8bit-gap-1.sh: Likewise.
* iconvdata/gen-8bit.sh: Clean up sed script.
* iconvdata/Makefile: Remove all PERL conditionals; build all
the modules all the time. Export AWK.
(gen-8bit-gap): Delete setting of PERL.
(gen-8bit-gap-1): Likewise.
(perl-generated-headers): Renamed awk-generated-headers.
* iconvdata/gap.pl: Removed.
* iconvdata/gaptab.pl: Removed.
* iconvdata/gap.awk: New file.
* iconvdata/gaptab.awk: New file.
1998-06-15 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/generic/Dist: Add errno-loc.c.
* sysdeps/unix/sysv/linux/alpha/glob.c: Add prototypes for the
__new_* functions.
1998-06-14 14:21 -0400 Zack Weinberg <zack@rabi.phys.columbia.edu>
* stdio-common/bug12.c: New test for fread()/fseek().
* stdio-common/Makefile (tests): Add bug12.
Diffstat (limited to 'sysdeps/i386/i686/ffs.c')
-rw-r--r-- | sysdeps/i386/i686/ffs.c | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/sysdeps/i386/i686/ffs.c b/sysdeps/i386/i686/ffs.c new file mode 100644 index 0000000..c858b31 --- /dev/null +++ b/sysdeps/i386/i686/ffs.c @@ -0,0 +1,45 @@ +/* ffs -- find first set bit in a word, counted from least significant end. + For Intel 80x86, x>=6. + This file is part of the GNU C Library. + Copyright (C) 1991, 92, 93, 94, 97, 98 Free Software Foundation, Inc. + Contributed by Ulrich Drepper <drepper@cygnus.com>. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public License as + published by the Free Software Foundation; either version 2 of the + License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public + License along with the GNU C Library; see the file COPYING.LIB. If not, + write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#include <string.h> + +#undef ffs + +#ifdef __GNUC__ + +int +__ffs (x) + int x; +{ + int cnt; + int tmp; + + asm ("bsfl %2,%0\n" /* Count low bits in X and store in %1. */ + "cmovel %1,%0\n" /* If number was zero, use -1 as result. */ + : "=&r" (cnt), "=r" (tmp) : "rm" (x), "1" (-1)); + + return cnt + 1; +} +weak_alias (__ffs, ffs) + +#else +#include <sysdeps/generic/ffs.c> +#endif |