[llvm-commits] CVS: llvm-test/SingleSource/UnitTests/Integer/APInt/gptest.cpp

Reid Spencer reid at x10sys.com
Thu Mar 1 17:11:47 PST 2007



Changes in directory llvm-test/SingleSource/UnitTests/Integer/APInt:

gptest.cpp updated: 1.7 -> 1.8
---
Log message:

Make the test for sext more straight forward without trying to 
convince pari/gp that it really does know how to sign extend.


---
Diffs of the changes:  (+34 -6)

 gptest.cpp |   40 ++++++++++++++++++++++++++++++++++------
 1 files changed, 34 insertions(+), 6 deletions(-)


Index: llvm-test/SingleSource/UnitTests/Integer/APInt/gptest.cpp
diff -u llvm-test/SingleSource/UnitTests/Integer/APInt/gptest.cpp:1.7 llvm-test/SingleSource/UnitTests/Integer/APInt/gptest.cpp:1.8
--- llvm-test/SingleSource/UnitTests/Integer/APInt/gptest.cpp:1.7	Tue Feb 27 14:48:20 2007
+++ llvm-test/SingleSource/UnitTests/Integer/APInt/gptest.cpp	Thu Mar  1 19:11:27 2007
@@ -177,6 +177,20 @@
     report(v1, v2, " xor ", result,apresult);
 }
 
+void doGCD(const APInt &v1, const APInt &v2) {
+  std::string cmd;
+  cmd += "gcd(";
+  cmd += v1.toString(10,false);
+  cmd += ",";
+  cmd += v2.toString(10,false);
+  cmd += ")\n";
+  std::string gpresult = getResult(cmd);
+  APInt r = APIntOps::GreatestCommonDivisor(v1, v2);
+  std::string apresult = r.toString(10, false);
+  if (gpresult != apresult)
+    report(v1, v2, " gcd ", gpresult, apresult);
+}
+
 void doComplement(const APInt &v1) {
   std::string cmd;
   cmd += "bitneg(";
@@ -193,6 +207,20 @@
   }
 }
 
+void doSqrt(const APInt &v1) {
+  // Square Root
+  std::string cmd;
+  cmd = "round(sqrt(" + v1.toString(10,false) + "))\n";
+  std::string gpresult = getResult(cmd);
+  APInt rslt = v1.sqrt();
+  std::string apresult = rslt.toString(10, false);
+  if (gpresult != apresult) {
+    printf("sqrt(");
+    print(v1, false, false);
+    printf(") = %s (not %s)\n", gpresult.c_str(), apresult.c_str());
+  }
+}
+
 void doBitTest(const APInt &v1) {
   for (int i = 0; i < v1.getBitWidth(); i++) {
     std::string cmd;
@@ -287,15 +315,13 @@
       printf(".zext(%d) = %s (not %s)\n", i, gpresult.c_str(), apresult.c_str());
       fflush(stdout);
     }
-    cmd = "bitand(" + v1.toString(10,true) + ",bitneg(0,";
-    cmd += utostr(unsigned(i)) + "))\n";
-    gpresult = getResult(cmd);
+    std::string before = v1.toString(10,true);
     APInt V2(v1);
     V2.sext(i);
-    apresult = V2.toString(10,false);
-    if (gpresult != apresult) {
+    apresult = V2.toString(10,true);
+    if (before != apresult) {
       print(v1, true, false);
-      printf(".sext(%d) = %s (not %s)\n", i, gpresult.c_str(), apresult.c_str());
+      printf(".sext(%d) = %s (not %s)\n", i, before.c_str(), apresult.c_str());
       fflush(stdout);
     }
   }
@@ -320,6 +346,7 @@
   doAnd(v1,v2);
   doOr(v1,v2);
   doXor(v1,v2);
+  doGCD(v1,v2);
   doCompare(v1, " == ", v2, false, v1 == v2);
   doCompare(v1, " != ", v2, false, v1 != v2);
   doCompare(v1, " <  ", v2, false, v1.ult(v2));
@@ -397,6 +424,7 @@
       doBitTest(*(list[i]));
       doShift(*(list[i]));
       doTruncExt(*(list[i]));
+      doSqrt(*(list[i]));
     }
   }
 






More information about the llvm-commits mailing list