run-001-fls.c 609 B

12345678910111213141516171819202122232425262728293031323334
  1. #include "ntdb-source.h"
  2. #include "tap-interface.h"
  3. #include "helprun-external-agent.h"
  4. static unsigned int dumb_fls(uint64_t num)
  5. {
  6. int i;
  7. for (i = 63; i >= 0; i--) {
  8. if (num & (1ULL << i))
  9. break;
  10. }
  11. return i + 1;
  12. }
  13. int main(int argc, char *argv[])
  14. {
  15. unsigned int i, j;
  16. plan_tests(64 * 64 + 2);
  17. ok1(fls64(0) == 0);
  18. ok1(dumb_fls(0) == 0);
  19. for (i = 0; i < 64; i++) {
  20. for (j = 0; j < 64; j++) {
  21. uint64_t val = (1ULL << i) | (1ULL << j);
  22. ok(fls64(val) == dumb_fls(val),
  23. "%llu -> %u should be %u", (long long)val,
  24. fls64(val), dumb_fls(val));
  25. }
  26. }
  27. return exit_status();
  28. }