Changes in directory llvm-test/SingleSource/UnitTests/Integer/APInt:
arith.cpp updated: 1.4 -> 1.5 --- Log message: 1. Add a utility function for getting a printable string from an APInt 2. Comment out the ByteSwap function, it crashes. 3. Prevent divid by zero. 4. Test every bit width from 1 to 1024, not 1024 random bit widths. --- Diffs of the changes: (+20 -14) arith.cpp | 34 ++++++++++++++++++++-------------- 1 files changed, 20 insertions(+), 14 deletions(-) Index: llvm-test/SingleSource/UnitTests/Integer/APInt/arith.cpp diff -u llvm-test/SingleSource/UnitTests/Integer/APInt/arith.cpp:1.4 llvm-test/SingleSource/UnitTests/Integer/APInt/arith.cpp:1.5 --- llvm-test/SingleSource/UnitTests/Integer/APInt/arith.cpp:1.4 Tue Feb 13 16:40:41 2007 +++ llvm-test/SingleSource/UnitTests/Integer/APInt/arith.cpp Tue Feb 13 21:05:33 2007 @@ -19,8 +19,9 @@ APInt y(0x0fffff, 21); +static std::string temp_str; + const char* str(const APInt& X) { - static std::string temp_str; temp_str = X.to_string(); return temp_str.c_str(); } @@ -89,15 +90,17 @@ printf("val.CountTrailingZeros() = %d\n", val.CountTrailingZeros()); printf("val.CountPopulation() = %d\n", val.CountPopulation()); printf("val.getNumBits() = %d\n", val.getNumBits()); - x = val.ByteSwap(); - printf("val.ByteSwap() = %d\n", str(x)); + if (val.getNumBits() >= 16 && val.getNumBits() % 16 == 0) { + // FIXME: ByteSwap crashes! + // x = val.ByteSwap(); + printf("val.ByteSwap() = %d\n", str(x)); + } printf("val.RoundToDouble(true) %d = %f\n", val.RoundToDouble(true)); printf("val.getValue() = "); if (val.getNumBits() > 64) printf("too wide\n"); else printf("%ul\n", val.getValue()); - } void test_binops(const APInt &v1, const APInt &v2) { @@ -151,21 +154,24 @@ printf("LShr(v1,%d) = %s\n", shiftAmt, str(result)); result = Shl(v1,shiftAmt); printf("Shl(v1,%d) = %s\n", shiftAmt, str(result)); - result = SDiv(v1,v2); - printf("SDiv(v1,v2) = %s\n", str(result)); - result = UDiv(v1,v2); - printf("UDiv(v1,v2) = %s\n", str(result)); - result = SRem(v1,v2); - printf("SRem(v1,v2) = %s\n", str(result)); - result = URem(v1,v2); - printf("URem(v1,v2) = %s\n", str(result)); + if (v2 == 0) + printf("SDiv/UDiv/SRem/URem not tested, v2 == 0\n"); + else { + result = SDiv(v1,v2); + printf("SDiv(v1,v2) = %s\n", str(result)); + result = UDiv(v1,v2); + printf("UDiv(v1,v2) = %s\n", str(result)); + result = SRem(v1,v2); + printf("SRem(v1,v2) = %s\n", str(result)); + result = URem(v1,v2); + printf("URem(v1,v2) = %s\n", str(result)); + } } } void test_multiple() { srand(0); - for (unsigned i = 0; i < 1024; ++i) { - unsigned bits = rand() % 1024; + for (unsigned bits = 1; bits <= 1024; ++bits) { APInt v1(0u, bits); APInt v2(0u, bits); for (unsigned i = 0; i < bits; ++i) { _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits