const uint32_t step = 1;
for (i = 0; i < max; i = i + step) {
+ uint64_t i64;
+
+ /* extend range for 64-bit */
+ i64 = (uint64_t)i << 32;
+ base = (uint32_t)ceilf(log2(i64));
+ compare = rte_log2_u64(i64);
+ if (base != compare) {
+ printf("Wrong rte_log2_u64(%" PRIx64 ") val %x, expected %x\n",
+ i64, compare, base);
+ return TEST_FAILED;
+ }
+
base = (uint32_t)ceilf(log2((uint32_t)i));
- compare = rte_log2_u32(i);
+ compare = rte_log2_u32((uint32_t)i);
if (base != compare) {
printf("Wrong rte_log2_u32(%x) val %x, expected %x\n",
i, compare, base);
return TEST_FAILED;
}
+ compare = rte_log2_u64((uint64_t)i);
+ if (base != compare) {
+ printf("Wrong rte_log2_u64(%x) val %x, expected %x\n",
+ i, compare, base);
+ return TEST_FAILED;
+ }
}
return 0;
}
};
for (i = 0; i < RTE_DIM(test); i++) {
+ uint64_t arg64;
+
arg = test[i].arg;
rc = rte_fls_u32(arg);
expected = test[i].rc;
arg, rc, expected);
return TEST_FAILED;
}
+ /* 64-bit version */
+ arg = test[i].arg;
+ rc = rte_fls_u64(arg);
+ expected = test[i].rc;
+ if (rc != expected) {
+ printf("Wrong rte_fls_u64(0x%x) rc=%d, expected=%d\n",
+ arg, rc, expected);
+ return TEST_FAILED;
+ }
+ /* 64-bit version shifted by 32 bits */
+ arg64 = (uint64_t)test[i].arg << 32;
+ rc = rte_fls_u64(arg64);
+ /* don't shift zero */
+ expected = test[i].rc == 0 ? 0 : test[i].rc + 32;
+ if (rc != expected) {
+ printf("Wrong rte_fls_u64(0x%" PRIx64 ") rc=%d, expected=%d\n",
+ arg64, rc, expected);
+ return TEST_FAILED;
+ }
}
return 0;