Driver to test IsPowerOf2. Could be extended for other library routines.
authorVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 28 Aug 2001 23:28:10 +0000 (23:28 +0000)
committerVikram S. Adve <vadve@cs.uiuc.edu>
Tue, 28 Aug 2001 23:28:10 +0000 (23:28 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@408 91177308-0d34-0410-b5e6-96231b3b80d8

tools/tests/testPow2.cpp [new file with mode: 0644]

diff --git a/tools/tests/testPow2.cpp b/tools/tests/testPow2.cpp
new file mode 100644 (file)
index 0000000..25f0ecd
--- /dev/null
@@ -0,0 +1,46 @@
+/* -*-c++-*- */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "/home/vadve/vadve/Research/DynOpt/LLVM/llvm/include/llvm/Support/MathExtras.h"
+
+inline void
+testPow(int C, bool isPow)
+{
+  unsigned pow = 0;
+  bool testIsPow = IsPowerOf2(C, pow);
+  if (isPow != testIsPow)
+    printf("ERROR: IsPowerOf2() says \t%d %s a power of 2 = %d\n",
+          C, (isPow? "IS" : "IS NOT"), pow);
+
+#undef PRINT_CORRECT_RESULTS
+#ifdef PRINT_CORRECT_RESULTS
+  else
+    printf("CORRECT: IsPowerOf2() says \t%d %s a power of 2 = %d\n",
+          C, (isPow? "IS" : "IS NOT"), pow);
+#endif PRINT_CORRECT_RESULTS
+}
+
+int
+main(int argc, char** argv)
+{
+  unsigned L = (argc > 1)? atoi(argv[1]) : 16;
+  unsigned C = 1;
+  
+  testPow(0, false);
+  
+  for (unsigned i = 1; i < L; i++, C = C << 1)
+    {
+      testPow(C, true);
+      testPow(-C, true);
+      for (unsigned j = C+1; j < (C << 1); j++)
+       {
+         testPow(j, false);
+         testPow(-j, false);
+       }
+    }
+  
+  return 0;
+}
+
+