From: Intel Date: Tue, 12 Mar 2013 11:03:00 +0000 (+0100) Subject: eal: add bsf32 X-Git-Tag: spdx-start~11294 X-Git-Url: http://git.droids-corp.org/?a=commitdiff_plain;h=a366c813f74a50f125b8b2bd8f2448f2b89a3e2e;p=dpdk.git eal: add bsf32 Signed-off-by: Intel --- diff --git a/lib/librte_eal/common/include/rte_common.h b/lib/librte_eal/common/include/rte_common.h index 42152d580f..e0ab48a9f3 100644 --- a/lib/librte_eal/common/include/rte_common.h +++ b/lib/librte_eal/common/include/rte_common.h @@ -260,6 +260,26 @@ rte_pause (void) asm volatile ("pause"); } +/** + * Searches the input parameter for the least significant set bit + * (starting from zero). + * If a least significant 1 bit is found, its bit index is returned. + * If the content of the input paramer is zero, then the content of the return + * value is undefined. + * @param v + * input parameter, should not be zero. + * @return + * least significant set bit in the input parameter. + */ +static inline uint32_t +rte_bsf32(uint32_t v) +{ + asm("bsf %1,%0" + : "=r" (v) + : "rm" (v)); + return (v); +} + #ifndef offsetof /** Return the offset of a field in a structure. */ #define offsetof(TYPE, MEMBER) __builtin_offsetof (TYPE, MEMBER)