Changes in directory llvm-test/SingleSource/UnitTests/SignlessTypes:
Makefile updated: 1.1 -> 1.2 div.c updated: 1.1 -> 1.2 --- Log message: Fine-grainify the tests so the output will tell us specifically which optimization is failing. --- Diffs of the changes: (+76 -35) Makefile | 2 - div.c | 109 +++++++++++++++++++++++++++++++++++++++++++-------------------- 2 files changed, 76 insertions(+), 35 deletions(-) Index: llvm-test/SingleSource/UnitTests/SignlessTypes/Makefile diff -u llvm-test/SingleSource/UnitTests/SignlessTypes/Makefile:1.1 llvm-test/SingleSource/UnitTests/SignlessTypes/Makefile:1.2 --- llvm-test/SingleSource/UnitTests/SignlessTypes/Makefile:1.1 Tue Oct 24 19:27:48 2006 +++ llvm-test/SingleSource/UnitTests/SignlessTypes/Makefile Tue Oct 24 19:59:01 2006 @@ -1,5 +1,5 @@ # SingleSource/UnitTests/Vector/Makefile LEVEL = ../../.. - +PROG=div include $(LEVEL)/Makefile.config include $(LEVEL)/SingleSource/Makefile.singlesrc Index: llvm-test/SingleSource/UnitTests/SignlessTypes/div.c diff -u llvm-test/SingleSource/UnitTests/SignlessTypes/div.c:1.1 llvm-test/SingleSource/UnitTests/SignlessTypes/div.c:1.2 --- llvm-test/SingleSource/UnitTests/SignlessTypes/div.c:1.1 Tue Oct 24 19:27:48 2006 +++ llvm-test/SingleSource/UnitTests/SignlessTypes/div.c Tue Oct 24 19:59:01 2006 @@ -8,51 +8,92 @@ #include <stdio.h> -unsigned -udivTest1(unsigned X, unsigned Y) { - - unsigned Tally = 0; +unsigned uDivTest1(unsigned X, unsigned Y) { /* 0 / X == 0 */ - Tally += 0 / X; - + return 0 / X; +} +unsigned uDivTest2(unsigned X, unsigned Y) { /* div X, 1 == X */ - Tally += X / 1; - + return X / 1; +} +unsigned uDivTest3(unsigned X, unsigned Y) { /* div X, -1 == -X */ - Tally += X / -1; - + return X / -1; +} +unsigned uDivTest4(unsigned X, unsigned Y) { /* div X, (Cond ? 0 : Y) -> div X, Y. */ - Tally += ( X == Y ? 0 : Y ); - Tally += ( X == Y ? ((unsigned)0) : Y ); - + return ( X == Y ? 0 : Y ); +} +unsigned uDivTest5(unsigned X, unsigned Y) { + /* div X, (Cond ? 0 : Y) -> div X, Y. */ + return ( X == Y ? ((unsigned)0) : Y ); +} +unsigned uDivTest6(unsigned X, unsigned Y) { /* div X, (Cond ? Y : 0) -> div X, Y */ - Tally += ( X != Y ? Y : 0 ); - Tally += ( X != Y ? Y : ((unsigned)0) ); - + return ( X != Y ? Y : 0 ); +} +unsigned uDivTest7(unsigned X, unsigned Y) { + /* div X, (Cond ? Y : 0) -> div X, Y */ + return ( X != Y ? Y : ((unsigned)0) ); +} +unsigned uDivTest8(unsigned X, unsigned Y) { /* (X / C1) / C2 -> X / (C1*C2) */ - Tally += ( X / 2 ) / 4; - Tally += ( X / ((unsigned)2)) / ((unsigned)4); - + return ( X / 2 ) / 4; +} +unsigned uDivTest9(unsigned X, unsigned Y) { + /* (X / C1) / C2 -> X / (C1*C2) */ + return ( X / ((unsigned)2)) / ((unsigned)4); +} +unsigned uDivTest10(unsigned X, unsigned Y) { /* X udiv C^2 -> X >> C */ - Tally += X / 4; - Tally += X / ((unsigned)4); - + return X / 4; +} +unsigned uDivTest11(unsigned X, unsigned Y) { + /* X udiv C^2 -> X >> C */ + return X / ((unsigned)4); +} +unsigned uDivTest12(unsigned X, unsigned Y) { /* X udiv (C1 << N), where C1 is "1<<C2" --> X >> (N+C2) */ - Tally += X / (4 << Y); - Tally += X / (((unsigned)4) << Y); - + return X / (4 << Y); +} +unsigned uDivTest13(unsigned X, unsigned Y) { + /* X udiv (C1 << N), where C1 is "1<<C2" --> X >> (N+C2) */ + return X / (((unsigned)4) << Y); +} +unsigned uDivTest14(unsigned X, unsigned Y) { /* udiv X, (Select Cond, C1, C2) --> Select Cond, (shr X, C1), (shr X, C2) */ - Tally += X / (X == Y, 2, 4); - Tally += X / (X == Y, ((unsigned)2), ((unsigned)4)); - + return X / (X == Y, 2, 4); +} +unsigned uDivTest15(unsigned X, unsigned Y) { + /* udiv X, (Select Cond, C1, C2) --> Select Cond, (shr X, C1), (shr X, C2) */ + return X / (X == Y, ((unsigned)2), ((unsigned)4)); +} +unsigned uDivTest16(unsigned X, unsigned Y) { /* -X/C -> X/-C */ - Tally += -X / 2; - Tally += -X / ((unsigned)2); - - return Tally; + return -X / 2; +} +unsigned uDivTest17(unsigned X, unsigned Y) { + /* -X/C -> X/-C */ + return -X / ((unsigned)2); } int main(int argc, char**argv) { - unsigned result = udivTest1(42, 3); - printf("udivTest1(42,17) = %u\n", udivTest1(42,17)); + printf("uDivTest1(42,3) = %u\n", uDivTest1(42,3)); + printf("uDivTest2(42,3) = %u\n", uDivTest2(42,3)); + printf("uDivTest3(42,3) = %u\n", uDivTest3(42,3)); + printf("uDivTest4(42,3) = %u\n", uDivTest4(42,3)); + printf("uDivTest5(42,3) = %u\n", uDivTest5(42,3)); + printf("uDivTest6(42,3) = %u\n", uDivTest6(42,3)); + printf("uDivTest7(42,3) = %u\n", uDivTest7(42,3)); + printf("uDivTest8(42,3) = %u\n", uDivTest8(42,3)); + printf("uDivTest9(42,3) = %u\n", uDivTest9(42,3)); + printf("uDivTest10(42,3) = %u\n", uDivTest10(42,3)); + printf("uDivTest11(42,3) = %u\n", uDivTest11(42,3)); + printf("uDivTest12(42,3) = %u\n", uDivTest12(42,3)); + printf("uDivTest13(42,3) = %u\n", uDivTest13(42,3)); + printf("uDivTest14(42,3) = %u\n", uDivTest14(42,3)); + printf("uDivTest15(42,3) = %u\n", uDivTest15(42,3)); + printf("uDivTest16(42,3) = %u\n", uDivTest16(42,3)); + printf("uDivTest17(42,3) = %u\n", uDivTest17(42,3)); + return 0; } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits