Commit 757b0376 authored by Lars-Peter Clausen's avatar Lars-Peter Clausen Committed by Takashi Iwai

ALSA: pcm: Replace custom ld2 function with __fls

__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: default avatarLars-Peter Clausen <lars@metafoo.de>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent f6dbe1be
...@@ -38,31 +38,6 @@ int snd_pcm_hw_param_value(const struct snd_pcm_hw_params *params, ...@@ -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_OFS(i) ((i) >> 5)
#define MASK_BIT(i) (1U << ((i) & 31)) #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) static inline size_t snd_mask_sizeof(void)
{ {
return sizeof(struct snd_mask); return sizeof(struct snd_mask);
...@@ -102,7 +77,7 @@ static inline unsigned int snd_mask_max(const struct snd_mask *mask) ...@@ -102,7 +77,7 @@ static inline unsigned int snd_mask_max(const struct snd_mask *mask)
int i; int i;
for (i = SNDRV_MASK_SIZE - 1; i >= 0; i--) { for (i = SNDRV_MASK_SIZE - 1; i >= 0; i--) {
if (mask->bits[i]) if (mask->bits[i])
return ld2(mask->bits[i]) + (i << 5); return __fls(mask->bits[i]) + (i << 5);
} }
return 0; return 0;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment