diff options
| author | Chris Lattner <sabre@nondot.org> | 2005-05-08 20:56:02 +0000 | 
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2005-05-08 20:56:02 +0000 | 
| commit | f9a33ede628c7332eb66491d021d91ad4918c916 (patch) | |
| tree | d534970ae3603d832c8156f5df063c186624c941 | |
| parent | 9187f3905e354a7b0c22f5938e000836650055ea (diff) | |
| download | bcm5719-llvm-f9a33ede628c7332eb66491d021d91ad4918c916.tar.gz bcm5719-llvm-f9a33ede628c7332eb66491d021d91ad4918c916.zip  | |
new testcases for PR557
llvm-svn: 21782
| -rw-r--r-- | llvm/test/Regression/Transforms/Reassociate/basictest3.ll | 50 | ||||
| -rw-r--r-- | llvm/test/Regression/Transforms/Reassociate/basictest4.ll | 20 | 
2 files changed, 70 insertions, 0 deletions
diff --git a/llvm/test/Regression/Transforms/Reassociate/basictest3.ll b/llvm/test/Regression/Transforms/Reassociate/basictest3.ll new file mode 100644 index 00000000000..c82b0176aba --- /dev/null +++ b/llvm/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/llvm/test/Regression/Transforms/Reassociate/basictest4.ll b/llvm/test/Regression/Transforms/Reassociate/basictest4.ll new file mode 100644 index 00000000000..4f75e167c6e --- /dev/null +++ b/llvm/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 +}  | 

