ALSA: pcm: Replace custom ld2 function with __fls
authorLars-Peter Clausen <lars@metafoo.de>
Mon, 29 Dec 2014 18:41:46 +0000 (19:41 +0100)
committerTakashi Iwai <tiwai@suse.de>
Tue, 30 Dec 2014 15:41:56 +0000 (16:41 +0100)
__fls has the same semantics as ld2, so there is no need to re-implement it.
Furthermore a lot of architectures have custom implementations of __fls that
are able to use special hardware instructions to compute the result. This
makes the code slightly shorter and faster.

Signed-off-by: Lars-Peter Clausen <lars@metafoo.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
include/sound/pcm_params.h

index c99e20b0c4c9956ba0615d9ea7d70d1c2c67a393..3c45f3924ba7e779a4d32a357665d0359abcbaaf 100644 (file)
@@ -38,31 +38,6 @@ int snd_pcm_hw_param_value(const struct snd_pcm_hw_params *params,
 #define MASK_OFS(i)    ((i) >> 5)
 #define MASK_BIT(i)    (1U << ((i) & 31))
 
-static inline unsigned int ld2(u_int32_t v)
-{
-        unsigned r = 0;
-
-        if (v >= 0x10000) {
-                v >>= 16;
-                r += 16;
-        }
-        if (v >= 0x100) {
-                v >>= 8;
-                r += 8;
-        }
-        if (v >= 0x10) {
-                v >>= 4;
-                r += 4;
-        }
-        if (v >= 4) {
-                v >>= 2;
-                r += 2;
-        }
-        if (v >= 2)
-                r++;
-        return r;
-}
-
 static inline size_t snd_mask_sizeof(void)
 {
        return sizeof(struct snd_mask);
@@ -102,7 +77,7 @@ static inline unsigned int snd_mask_max(const struct snd_mask *mask)
        int i;
        for (i = SNDRV_MASK_SIZE - 1; i >= 0; i--) {
                if (mask->bits[i])
-                       return ld2(mask->bits[i]) + (i << 5);
+                       return __fls(mask->bits[i]) + (i << 5);
        }
        return 0;
 }