eal: add bsf32
authorIntel <intel.com>
Tue, 12 Mar 2013 11:03:00 +0000 (12:03 +0100)
committerThomas Monjalon <thomas.monjalon@6wind.com>
Thu, 25 Jul 2013 14:07:50 +0000 (16:07 +0200)
Signed-off-by: Intel
lib/librte_eal/common/include/rte_common.h

index 42152d5..e0ab48a 100644 (file)
@@ -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)