From ab1fdcec7d2beb6dca7dd0adfa84cac7e632bbf5 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 8 May 2005 20:56:02 +0000 Subject: [PATCH] new testcases for PR557 llvm-svn: 21782 --- .../Transforms/Reassociate/basictest3.ll | 50 +++++++++++++++++++ .../Transforms/Reassociate/basictest4.ll | 20 ++++++++ 2 files changed, 70 insertions(+) create mode 100644 test/Regression/Transforms/Reassociate/basictest3.ll create mode 100644 test/Regression/Transforms/Reassociate/basictest4.ll diff --git a/test/Regression/Transforms/Reassociate/basictest3.ll b/test/Regression/Transforms/Reassociate/basictest3.ll new file mode 100644 index 00000000000..c82b0176aba --- /dev/null +++ b/test/Regression/Transforms/Reassociate/basictest3.ll @@ -0,0 +1,50 @@ +; RUN: llvm-as < %s | opt -reassociate -gcse | llvm-dis | grep add | wc -l | grep 6 +; Each of these functions should turn into two adds each. + +%e = external global int +%a = external global int +%b = external global int +%c = external global int +%f = external global int + +implementation + +void %test1() { + %A = load int* %a + %B = load int* %b + %C = load int* %c + %t1 = add int %A, %B + %t2 = add int %t1, %C + %t3 = add int %C, %A + %t4 = add int %t3, %B + store int %t2, int* %e ; e = (a+b)+c; + store int %t4, int* %f ; f = (a+c)+b + ret void +} + +void %test2() { + %A = load int* %a + %B = load int* %b + %C = load int* %c + %t1 = add int %A, %B + %t2 = add int %t1, %C + %t3 = add int %C, %A + %t4 = add int %t3, %B + store int %t2, int* %e ; e = c+(a+b) + store int %t4, int* %f ; f = (c+a)+b + ret void +} + +void %test3() { + %A = load int* %a + %B = load int* %b + %C = load int* %c + %t1 = add int %B, %A + %t2 = add int %t1, %C + %t3 = add int %C, %A + %t4 = add int %t3, %B + store int %t2, int* %e ; e = c+(b+a) + store int %t4, int* %f ; f = (c+a)+b + ret void +} + diff --git a/test/Regression/Transforms/Reassociate/basictest4.ll b/test/Regression/Transforms/Reassociate/basictest4.ll new file mode 100644 index 00000000000..4f75e167c6e --- /dev/null +++ b/test/Regression/Transforms/Reassociate/basictest4.ll @@ -0,0 +1,20 @@ +; RUN: llvm-as < %s | opt -reassociate -gcse -instcombine | llvm-dis | not grep add + +%a = weak global int 0 +%b = weak global int 0 +%c = weak global int 0 +%d = weak global int 0 + +implementation + +int %foo() { + %tmp.0 = load int* %a + %tmp.1 = load int* %b + %tmp.2 = add int %tmp.0, %tmp.1 ; (a+b) + %tmp.4 = load int* %c + %tmp.5 = add int %tmp.2, %tmp.4 ; (a+b)+c + %tmp.8 = add int %tmp.0, %tmp.4 ; (a+c) + %tmp.11 = add int %tmp.8, %tmp.1 ; (a+c)+b + %RV = xor int %tmp.5, %tmp.11 ; X ^ X = 0 + ret int %RV +}