blob: a88030db2f9a51a7655a27a65975f45ed5a0cf25 [file] [log] [blame]
Owen Anderson7c856c02008-08-16 00:00:54 +00001; RUN: llvm-as < %s | opt -reassociate -gvn | llvm-dis | grep add | count 6
Chris Lattnerf4946df2005-05-08 20:56:02 +00002; Each of these functions should turn into two adds each.
3
Tanya Lattner7f40dea2008-03-19 04:36:04 +00004@e = external global i32 ; <i32*> [#uses=3]
5@a = external global i32 ; <i32*> [#uses=3]
6@b = external global i32 ; <i32*> [#uses=3]
7@c = external global i32 ; <i32*> [#uses=3]
8@f = external global i32 ; <i32*> [#uses=3]
Chris Lattnerf4946df2005-05-08 20:56:02 +00009
Tanya Lattner7f40dea2008-03-19 04:36:04 +000010define void @test1() {
11 %A = load i32* @a ; <i32> [#uses=2]
12 %B = load i32* @b ; <i32> [#uses=2]
13 %C = load i32* @c ; <i32> [#uses=2]
14 %t1 = add i32 %A, %B ; <i32> [#uses=1]
15 %t2 = add i32 %t1, %C ; <i32> [#uses=1]
16 %t3 = add i32 %C, %A ; <i32> [#uses=1]
17 %t4 = add i32 %t3, %B ; <i32> [#uses=1]
18 ; e = (a+b)+c;
19 store i32 %t2, i32* @e
20 ; f = (a+c)+b
21 store i32 %t4, i32* @f
22 ret void
Chris Lattnerf4946df2005-05-08 20:56:02 +000023}
24
Tanya Lattner7f40dea2008-03-19 04:36:04 +000025define void @test2() {
26 %A = load i32* @a ; <i32> [#uses=2]
27 %B = load i32* @b ; <i32> [#uses=2]
28 %C = load i32* @c ; <i32> [#uses=2]
29 %t1 = add i32 %A, %B ; <i32> [#uses=1]
30 %t2 = add i32 %t1, %C ; <i32> [#uses=1]
31 %t3 = add i32 %C, %A ; <i32> [#uses=1]
32 %t4 = add i32 %t3, %B ; <i32> [#uses=1]
33 ; e = c+(a+b)
34 store i32 %t2, i32* @e
35 ; f = (c+a)+b
36 store i32 %t4, i32* @f
37 ret void
Chris Lattnerf4946df2005-05-08 20:56:02 +000038}
39
Tanya Lattner7f40dea2008-03-19 04:36:04 +000040define void @test3() {
41 %A = load i32* @a ; <i32> [#uses=2]
42 %B = load i32* @b ; <i32> [#uses=2]
43 %C = load i32* @c ; <i32> [#uses=2]
44 %t1 = add i32 %B, %A ; <i32> [#uses=1]
45 %t2 = add i32 %t1, %C ; <i32> [#uses=1]
46 %t3 = add i32 %C, %A ; <i32> [#uses=1]
47 %t4 = add i32 %t3, %B ; <i32> [#uses=1]
48 ; e = c+(b+a)
49 store i32 %t2, i32* @e
50 ; f = (c+a)+b
51 store i32 %t4, i32* @f
52 ret void
Chris Lattnerf4946df2005-05-08 20:56:02 +000053}
54