[BACK]Return to ffsll.c CVS log [TXT][DIR] Up to [cvs.NetBSD.org] / src / external / gpl3 / binutils.old / dist / gold

Annotation of src/external/gpl3/binutils.old/dist/gold/ffsll.c, Revision 1.4.8.1

1.1       christos    1: /* ffsll.c -- version of ffsll for gold.  */
                      2:
1.4.8.1 ! pgoyette    3: /* Copyright (C) 2009-2016 Free Software Foundation, Inc.
1.1       christos    4:    Written by Ian Lance Taylor <iant@google.com>.
                      5:
                      6:    This file is part of gold.
                      7:
                      8:    This program is free software; you can redistribute it and/or modify
                      9:    it under the terms of the GNU General Public License as published by
                     10:    the Free Software Foundation; either version 3 of the License, or
                     11:    (at your option) any later version.
                     12:
                     13:    This program is distributed in the hope that it will be useful,
                     14:    but WITHOUT ANY WARRANTY; without even the implied warranty of
                     15:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
                     16:    GNU General Public License for more details.
                     17:
                     18:    You should have received a copy of the GNU General Public License
                     19:    along with this program; if not, write to the Free Software
                     20:    Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston,
                     21:    MA 02110-1301, USA.  */
                     22:
                     23: #include "config.h"
                     24:
                     25: #include <string.h>
                     26:
                     27: extern int ffsll (long long);
                     28:
                     29: /* This file implements ffsll for systems which don't have it.  We use
                     30:    ffsll if possible because gcc supports it as a builtin which will
                     31:    use a machine instruction if there is one.  */
                     32:
                     33: int
                     34: ffsll (long long arg)
                     35: {
                     36:   unsigned long long i;
                     37:   int ret;
                     38:
                     39:   if (arg == 0)
                     40:     ret = 0;
                     41:   else
                     42:     {
                     43:       ret = 1;
                     44:       for (i = (unsigned long long) arg; (i & 1) == 0; i >>= 1)
                     45:        ++ret;
                     46:     }
                     47:   return ret;
                     48: }

CVSweb <webmaster@jp.NetBSD.org>