blob: e5180eff5e0807bc262a3b92ee599b6c75f05a3c [file] [log] [blame]
Inna Palantff3f07a2019-07-11 16:15:26 -07001/* ===-- ffssi2.c - Implement __ffssi2 -------------------------------------===
2 *
3 * The LLVM Compiler Infrastructure
4 *
5 * This file is dual licensed under the MIT and the University of Illinois Open
6 * Source Licenses. See LICENSE.TXT for details.
7 *
8 * ===----------------------------------------------------------------------===
9 *
10 * This file implements __ffssi2 for the compiler_rt library.
11 *
12 * ===----------------------------------------------------------------------===
13 */
14
15#include "int_lib.h"
16
17/* Returns: the index of the least significant 1-bit in a, or
18 * the value zero if a is zero. The least significant bit is index one.
19 */
20
21COMPILER_RT_ABI si_int
22__ffssi2(si_int a)
23{
24 if (a == 0)
25 {
26 return 0;
27 }
28 return __builtin_ctz(a) + 1;
29}