LCOV - code coverage report
Current view: top level - lib - clz_ctz.c (source / functions) Hit Total Coverage
Test: landlock.info Lines: 0 8 0.0 %
Date: 2021-04-22 12:43:58 Functions: 0 4 0.0 %

          Line data    Source code
       1             : // SPDX-License-Identifier: GPL-2.0-only
       2             : /*
       3             :  * lib/clz_ctz.c
       4             :  *
       5             :  * Copyright (C) 2013 Chanho Min <chanho.min@lge.com>
       6             :  *
       7             :  * The functions in this file aren't called directly, but are required by
       8             :  * GCC builtins such as __builtin_ctz, and therefore they can't be removed
       9             :  * despite appearing unreferenced in kernel source.
      10             :  *
      11             :  * __c[lt]z[sd]i2 can be overridden by linking arch-specific versions.
      12             :  */
      13             : 
      14             : #include <linux/export.h>
      15             : #include <linux/kernel.h>
      16             : 
      17             : int __weak __ctzsi2(int val);
      18           0 : int __weak __ctzsi2(int val)
      19             : {
      20           0 :         return __ffs(val);
      21             : }
      22             : EXPORT_SYMBOL(__ctzsi2);
      23             : 
      24             : int __weak __clzsi2(int val);
      25           0 : int __weak __clzsi2(int val)
      26             : {
      27           0 :         return 32 - fls(val);
      28             : }
      29             : EXPORT_SYMBOL(__clzsi2);
      30             : 
      31             : int __weak __clzdi2(long val);
      32             : int __weak __ctzdi2(long val);
      33             : #if BITS_PER_LONG == 32
      34             : 
      35             : int __weak __clzdi2(long val)
      36             : {
      37             :         return 32 - fls((int)val);
      38             : }
      39             : EXPORT_SYMBOL(__clzdi2);
      40             : 
      41             : int __weak __ctzdi2(long val)
      42             : {
      43             :         return __ffs((u32)val);
      44             : }
      45             : EXPORT_SYMBOL(__ctzdi2);
      46             : 
      47             : #elif BITS_PER_LONG == 64
      48             : 
      49           0 : int __weak __clzdi2(long val)
      50             : {
      51           0 :         return 64 - fls64((u64)val);
      52             : }
      53             : EXPORT_SYMBOL(__clzdi2);
      54             : 
      55           0 : int __weak __ctzdi2(long val)
      56             : {
      57           0 :         return __ffs64((u64)val);
      58             : }
      59             : EXPORT_SYMBOL(__ctzdi2);
      60             : 
      61             : #else
      62             : #error BITS_PER_LONG not 32 or 64
      63             : #endif

Generated by: LCOV version 1.14