[Reassociate] FileCheckize and cleanup a few testcases. No functional change
authorChad Rosier <mcrosier@codeaurora.org>
Wed, 11 Jun 2014 18:28:45 +0000 (18:28 +0000)
committerChad Rosier <mcrosier@codeaurora.org>
Wed, 11 Jun 2014 18:28:45 +0000 (18:28 +0000)
intended.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210685 91177308-0d34-0410-b5e6-96231b3b80d8

16 files changed:
test/Transforms/Reassociate/2002-05-15-AgressiveSubMove.ll
test/Transforms/Reassociate/2002-05-15-MissedTree.ll
test/Transforms/Reassociate/2002-05-15-SubReassociate.ll
test/Transforms/Reassociate/2002-05-15-SubReassociate2.ll [deleted file]
test/Transforms/Reassociate/2005-09-01-ArrayOutOfBounds.ll
test/Transforms/Reassociate/2006-04-27-ReassociateVector.ll
test/Transforms/Reassociate/basictest.ll
test/Transforms/Reassociate/fp-commute.ll
test/Transforms/Reassociate/looptest.ll
test/Transforms/Reassociate/mightymul.ll
test/Transforms/Reassociate/multistep.ll
test/Transforms/Reassociate/negation.ll
test/Transforms/Reassociate/otherops.ll
test/Transforms/Reassociate/shift-factor.ll
test/Transforms/Reassociate/subtest.ll
test/Transforms/Reassociate/subtest2.ll [deleted file]

index 5780990c76187c8cb5d2860c70e55c149bb28d90..24300352a62c3cad74741b5c60567ac754d18d3f 100644 (file)
@@ -1,9 +1,10 @@
-; RUN: opt < %s -reassociate -instcombine -constprop -dce -S | not grep add
+; RUN: opt < %s -reassociate -S | FileCheck %s
 
-define i32 @test(i32 %A) {
-       %X = add i32 %A, 1              ; <i32> [#uses=1]
-       %Y = add i32 %A, 1              ; <i32> [#uses=1]
-       %r = sub i32 %X, %Y             ; <i32> [#uses=1]
-       ret i32 %r
+define i32 @test1(i32 %A) {
+; CHECK-LABEL: test1
+; CHECK: ret i32 0
+  %X = add i32 %A, 1
+  %Y = add i32 %A, 1
+  %r = sub i32 %X, %Y
+  ret i32 %r
 }
-
index e8bccbde28e2d58973a053ddc288b7340ec97968..5f3c9209aedab7b6c5fc08deec8f07662fc43793 100644 (file)
@@ -1,9 +1,11 @@
-; RUN: opt < %s -reassociate -instcombine -constprop -die -S | not grep 5
+; RUN: opt < %s -reassociate -instcombine -S | FileCheck %s
 
-define i32 @test(i32 %A, i32 %B) {
-       %W = add i32 %B, -5             ; <i32> [#uses=1]
-       %Y = add i32 %A, 5              ; <i32> [#uses=1]
-       %Z = add i32 %W, %Y             ; <i32> [#uses=1]
+define i32 @test1(i32 %A, i32 %B) {
+; CHECK-LABEL: test1
+; CHECK: %Z = add i32 %B, %A
+; CHECK: ret i32 %Z
+       %W = add i32 %B, -5
+       %Y = add i32 %A, 5
+       %Z = add i32 %W, %Y
        ret i32 %Z
 }
-
index c18af5e07efdd8c119b043f2743564ebdcdc29ef..29c178ffec3ec9c9b85351eface88fdd865043bd 100644 (file)
@@ -1,12 +1,30 @@
+; RUN: opt < %s -reassociate -constprop -instcombine -dce -S | FileCheck %s
+
 ; With sub reassociation, constant folding can eliminate all of the constants.
-;
-; RUN: opt < %s -reassociate -constprop -instcombine -dce -S | not grep add
+define i32 @test1(i32 %A, i32 %B) {
+; CHECK-LABEL: test1
+; CHECK-NEXT: %Z = sub i32 %A, %B
+; CHECK-NEXT: ret i32 %Z
 
-define i32 @test(i32 %A, i32 %B) {
-       %W = add i32 5, %B              ; <i32> [#uses=1]
-       %X = add i32 -7, %A             ; <i32> [#uses=1]
-       %Y = sub i32 %X, %W             ; <i32> [#uses=1]
-       %Z = add i32 %Y, 12             ; <i32> [#uses=1]
-       ret i32 %Z
+  %W = add i32 5, %B
+  %X = add i32 -7, %A
+  %Y = sub i32 %X, %W
+  %Z = add i32 %Y, 12
+  ret i32 %Z
 }
+; With sub reassociation, constant folding can eliminate the two 12 constants.
+define i32 @test2(i32 %A, i32 %B, i32 %C, i32 %D) {
+; CHECK-LABEL: test2
+; CHECK-NEXT: %sum = add i32 %B, %A
+; CHECK-NEXT: %sum1 = add i32 %sum, %C
+; CHECK-NEXT: %Q = sub i32 %D, %sum1
+; CHECK-NEXT: ret i32 %Q
 
+  %M = add i32 %A, 12
+  %N = add i32 %M, %B
+  %O = add i32 %N, %C
+  %P = sub i32 %D, %O
+  %Q = add i32 %P, 12
+  ret i32 %Q
+}
diff --git a/test/Transforms/Reassociate/2002-05-15-SubReassociate2.ll b/test/Transforms/Reassociate/2002-05-15-SubReassociate2.ll
deleted file mode 100644 (file)
index 5848821..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-; With sub reassociation, constant folding can eliminate the two 12 constants.
-;
-; RUN: opt < %s -reassociate -constprop -dce -S | not grep 12
-
-define i32 @test(i32 %A, i32 %B, i32 %C, i32 %D) {
-       %M = add i32 %A, 12             ; <i32> [#uses=1]
-       %N = add i32 %M, %B             ; <i32> [#uses=1]
-       %O = add i32 %N, %C             ; <i32> [#uses=1]
-       %P = sub i32 %D, %O             ; <i32> [#uses=1]
-       %Q = add i32 %P, 12             ; <i32> [#uses=1]
-       ret i32 %Q
-}
-
index f66148bb4abcee2ba7f2911b3b9f63751de33490..f6cef35b1779064c5fc46474d17bc8d604e0981e 100644 (file)
@@ -1,23 +1,24 @@
-; RUN: opt < %s -reassociate -instcombine -S |\
-; RUN:   grep "ret i32 0"
+; RUN: opt < %s -reassociate -instcombine -S | FileCheck %s
 
-define i32 @f(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) {
-       %tmp.2 = add i32 %a4, %a3               ; <i32> [#uses=1]
-       %tmp.4 = add i32 %tmp.2, %a2            ; <i32> [#uses=1]
-       %tmp.6 = add i32 %tmp.4, %a1            ; <i32> [#uses=1]
-       %tmp.8 = add i32 %tmp.6, %a0            ; <i32> [#uses=1]
-       %tmp.11 = add i32 %a3, %a2              ; <i32> [#uses=1]
-       %tmp.13 = add i32 %tmp.11, %a1          ; <i32> [#uses=1]
-       %tmp.15 = add i32 %tmp.13, %a0          ; <i32> [#uses=1]
-       %tmp.18 = add i32 %a2, %a1              ; <i32> [#uses=1]
-       %tmp.20 = add i32 %tmp.18, %a0          ; <i32> [#uses=1]
-       %tmp.23 = add i32 %a1, %a0              ; <i32> [#uses=1]
-       %tmp.26 = sub i32 %tmp.8, %tmp.15               ; <i32> [#uses=1]
-       %tmp.28 = add i32 %tmp.26, %tmp.20              ; <i32> [#uses=1]
-       %tmp.30 = sub i32 %tmp.28, %tmp.23              ; <i32> [#uses=1]
-       %tmp.32 = sub i32 %tmp.30, %a4          ; <i32> [#uses=1]
-       %tmp.34 = sub i32 %tmp.32, %a2          ; <i32> [#uses=2]
-       %T = mul i32 %tmp.34, %tmp.34           ; <i32> [#uses=1]
-       ret i32 %T
-}
+define i32 @f1(i32 %a0, i32 %a1, i32 %a2, i32 %a3, i32 %a4) {
+; CHECK-LABEL: f1
+; CHECK-NEXT: ret i32 0
 
+  %tmp.2 = add i32 %a4, %a3
+  %tmp.4 = add i32 %tmp.2, %a2
+  %tmp.6 = add i32 %tmp.4, %a1
+  %tmp.8 = add i32 %tmp.6, %a0
+  %tmp.11 = add i32 %a3, %a2
+  %tmp.13 = add i32 %tmp.11, %a1
+  %tmp.15 = add i32 %tmp.13, %a0
+  %tmp.18 = add i32 %a2, %a1
+  %tmp.20 = add i32 %tmp.18, %a0
+  %tmp.23 = add i32 %a1, %a0
+  %tmp.26 = sub i32 %tmp.8, %tmp.15
+  %tmp.28 = add i32 %tmp.26, %tmp.20
+  %tmp.30 = sub i32 %tmp.28, %tmp.23
+  %tmp.32 = sub i32 %tmp.30, %a4
+  %tmp.34 = sub i32 %tmp.32, %a2
+  %T = mul i32 %tmp.34, %tmp.34
+  ret i32 %T
+}
index 384cbc90a744c5981990b18877fc24e92503d8ee..f783955400269d18c6928708683493fb6101f59b 100644 (file)
@@ -1,8 +1,12 @@
-; RUN: opt < %s -reassociate -disable-output
+; RUN: opt < %s -reassociate -S | FileCheck %s
 
-define void @foo() {
-       %tmp162 = fsub <4 x float> zeroinitializer, zeroinitializer             ; <<4 x float>> [#uses=1]
-       %tmp164 = fmul <4 x float> zeroinitializer, %tmp162             ; <<4 x float>> [#uses=0]
-       ret void
-}
+define <4 x float> @test1() {
+; CHECK-LABEL: test1
+; CHECK-NEXT: %tmp1 = fsub <4 x float> zeroinitializer, zeroinitializer
+; CHECK-NEXT: %tmp2 = fmul <4 x float> zeroinitializer, %tmp1
+; CHECK-NEXT: ret <4 x float> %tmp2
 
+  %tmp1 = fsub <4 x float> zeroinitializer, zeroinitializer
+  %tmp2 = fmul <4 x float> zeroinitializer, %tmp1
+  ret <4 x float> %tmp2
+}
index fda0ca6be1aae92971c3e85dc44f2826fc439a4d..d70bfcbb72c65b974843cd5311b73cccb81da639 100644 (file)
@@ -1,46 +1,47 @@
-; With reassociation, constant folding can eliminate the 12 and -12 constants.
-;
-; RUN: opt < %s -reassociate  -gvn -instcombine -S | FileCheck %s
+; RUN: opt < %s -reassociate -gvn -instcombine -S | FileCheck %s
 
 define i32 @test1(i32 %arg) {
-       %tmp1 = sub i32 -12, %arg
-       %tmp2 = add i32 %tmp1, 12
-       ret i32 %tmp2
-; CHECK-LABEL: @test1(
+  %tmp1 = sub i32 -12, %arg
+  %tmp2 = add i32 %tmp1, 12
+  ret i32 %tmp2
+
+; CHECK-LABEL: @test1
 ; CHECK-NEXT: sub i32 0, %arg
 ; CHECK-NEXT: ret i32
 }
 
 define i32 @test2(i32 %reg109, i32 %reg1111) {
-       %reg115 = add i32 %reg109, -30          ; <i32> [#uses=1]
-       %reg116 = add i32 %reg115, %reg1111             ; <i32> [#uses=1]
-       %reg117 = add i32 %reg116, 30           ; <i32> [#uses=1]
-       ret i32 %reg117
-; CHECK-LABEL: @test2(
-; CHECK-NEXT: add i32 %reg1111, %reg109
-; CHECK-NEXT: ret i32
+  %reg115 = add i32 %reg109, -30
+  %reg116 = add i32 %reg115, %reg1111
+  %reg117 = add i32 %reg116, 30
+  ret i32 %reg117
+
+; CHECK-LABEL: @test2
+; CHECK-NEXT: %reg117 = add i32 %reg1111, %reg109
+; CHECK-NEXT: ret i32 %reg117
 }
 
-@e = external global i32               ; <i32*> [#uses=3]
-@a = external global i32               ; <i32*> [#uses=3]
-@b = external global i32               ; <i32*> [#uses=3]
-@c = external global i32               ; <i32*> [#uses=3]
-@f = external global i32               ; <i32*> [#uses=3]
+@e = external global i32
+@a = external global i32
+@b = external global i32
+@c = external global i32
+@f = external global i32
 
 define void @test3() {
-       %A = load i32* @a               ; <i32> [#uses=2]
-       %B = load i32* @b               ; <i32> [#uses=2]
-       %C = load i32* @c               ; <i32> [#uses=2]
-       %t1 = add i32 %A, %B            ; <i32> [#uses=1]
-       %t2 = add i32 %t1, %C           ; <i32> [#uses=1]
-       %t3 = add i32 %C, %A            ; <i32> [#uses=1]
-       %t4 = add i32 %t3, %B           ; <i32> [#uses=1]
-       ; e = (a+b)+c;
-        store i32 %t2, i32* @e
-        ; f = (a+c)+b
-       store i32 %t4, i32* @f
-       ret void
-; CHECK-LABEL: @test3(
+  %A = load i32* @a
+  %B = load i32* @b
+  %C = load i32* @c
+  %t1 = add i32 %A, %B
+  %t2 = add i32 %t1, %C
+  %t3 = add i32 %C, %A
+  %t4 = add i32 %t3, %B
+  ; e = (a+b)+c;
+  store i32 %t2, i32* @e
+  ; f = (a+c)+b
+  store i32 %t4, i32* @f
+  ret void
+
+; CHECK-LABEL: @test3
 ; CHECK: add i32
 ; CHECK: add i32
 ; CHECK-NOT: add i32
@@ -48,19 +49,20 @@ define void @test3() {
 }
 
 define void @test4() {
-       %A = load i32* @a               ; <i32> [#uses=2]
-       %B = load i32* @b               ; <i32> [#uses=2]
-       %C = load i32* @c               ; <i32> [#uses=2]
-       %t1 = add i32 %A, %B            ; <i32> [#uses=1]
-       %t2 = add i32 %t1, %C           ; <i32> [#uses=1]
-       %t3 = add i32 %C, %A            ; <i32> [#uses=1]
-       %t4 = add i32 %t3, %B           ; <i32> [#uses=1]
-       ; e = c+(a+b)
-        store i32 %t2, i32* @e
-        ; f = (c+a)+b
-       store i32 %t4, i32* @f
-       ret void
-; CHECK-LABEL: @test4(
+  %A = load i32* @a
+  %B = load i32* @b
+  %C = load i32* @c
+  %t1 = add i32 %A, %B
+  %t2 = add i32 %t1, %C
+  %t3 = add i32 %C, %A
+  %t4 = add i32 %t3, %B
+  ; e = c+(a+b)
+  store i32 %t2, i32* @e
+  ; f = (c+a)+b
+  store i32 %t4, i32* @f
+  ret void
+
+; CHECK-LABEL: @test4
 ; CHECK: add i32
 ; CHECK: add i32
 ; CHECK-NOT: add i32
@@ -68,19 +70,20 @@ define void @test4() {
 }
 
 define void @test5() {
-       %A = load i32* @a               ; <i32> [#uses=2]
-       %B = load i32* @b               ; <i32> [#uses=2]
-       %C = load i32* @c               ; <i32> [#uses=2]
-       %t1 = add i32 %B, %A            ; <i32> [#uses=1]
-       %t2 = add i32 %t1, %C           ; <i32> [#uses=1]
-       %t3 = add i32 %C, %A            ; <i32> [#uses=1]
-       %t4 = add i32 %t3, %B           ; <i32> [#uses=1]
-       ; e = c+(b+a)
-        store i32 %t2, i32* @e
-        ; f = (c+a)+b
-       store i32 %t4, i32* @f
-       ret void
-; CHECK-LABEL: @test5(
+  %A = load i32* @a
+  %B = load i32* @b
+  %C = load i32* @c
+  %t1 = add i32 %B, %A
+  %t2 = add i32 %t1, %C
+  %t3 = add i32 %C, %A
+  %t4 = add i32 %t3, %B
+  ; e = c+(b+a)
+  store i32 %t2, i32* @e
+  ; f = (c+a)+b
+  store i32 %t4, i32* @f
+  ret void
+
+; CHECK-LABEL: @test5
 ; CHECK: add i32
 ; CHECK: add i32
 ; CHECK-NOT: add i32
@@ -88,60 +91,61 @@ define void @test5() {
 }
 
 define i32 @test6() {
-       %tmp.0 = load i32* @a
-       %tmp.1 = load i32* @b
-        ; (a+b)
-       %tmp.2 = add i32 %tmp.0, %tmp.1
-       %tmp.4 = load i32* @c
-       ; (a+b)+c
-        %tmp.5 = add i32 %tmp.2, %tmp.4
-       ; (a+c)
-        %tmp.8 = add i32 %tmp.0, %tmp.4
-       ; (a+c)+b
-        %tmp.11 = add i32 %tmp.8, %tmp.1
-       ; X ^ X = 0
-        %RV = xor i32 %tmp.5, %tmp.11
-       ret i32 %RV
-; CHECK-LABEL: @test6(
+  %tmp.0 = load i32* @a
+  %tmp.1 = load i32* @b
+  ; (a+b)
+  %tmp.2 = add i32 %tmp.0, %tmp.1
+  %tmp.4 = load i32* @c
+  ; (a+b)+c
+  %tmp.5 = add i32 %tmp.2, %tmp.4
+  ; (a+c)
+  %tmp.8 = add i32 %tmp.0, %tmp.4
+  ; (a+c)+b
+  %tmp.11 = add i32 %tmp.8, %tmp.1
+  ; X ^ X = 0
+  %RV = xor i32 %tmp.5, %tmp.11
+  ret i32 %RV
+
+; CHECK-LABEL: @test6
 ; CHECK: ret i32 0
 }
 
 ; This should be one add and two multiplies.
 define i32 @test7(i32 %A, i32 %B, i32 %C) {
- ; A*A*B + A*C*A
-       %aa = mul i32 %A, %A
-       %aab = mul i32 %aa, %B
-       %ac = mul i32 %A, %C
-       %aac = mul i32 %ac, %A
-       %r = add i32 %aab, %aac
-       ret i32 %r
-; CHECK-LABEL: @test7(
+  ; A*A*B + A*C*A
+  %aa = mul i32 %A, %A
+  %aab = mul i32 %aa, %B
+  %ac = mul i32 %A, %C
+  %aac = mul i32 %ac, %A
+  %r = add i32 %aab, %aac
+  ret i32 %r
+
+; CHECK-LABEL: @test7
 ; CHECK-NEXT: add i32 %C, %B
 ; CHECK-NEXT: mul i32 
 ; CHECK-NEXT: mul i32 
 ; CHECK-NEXT: ret i32 
 }
 
-
 define i32 @test8(i32 %X, i32 %Y, i32 %Z) {
-       %A = sub i32 0, %X
-       %B = mul i32 %A, %Y
-        ; (-X)*Y + Z -> Z-X*Y
-       %C = add i32 %B, %Z
-       ret i32 %C
-; CHECK-LABEL: @test8(
+  %A = sub i32 0, %X
+  %B = mul i32 %A, %Y
+  ; (-X)*Y + Z -> Z-X*Y
+  %C = add i32 %B, %Z
+  ret i32 %C
+
+; CHECK-LABEL: @test8
 ; CHECK-NEXT: %A = mul i32 %Y, %X
 ; CHECK-NEXT: %C = sub i32 %Z, %A
 ; CHECK-NEXT: ret i32 %C
 }
 
-
 ; PR5458
 define i32 @test9(i32 %X) {
   %Y = mul i32 %X, 47
   %Z = add i32 %Y, %Y
   ret i32 %Z
-; CHECK-LABEL: @test9(
+; CHECK-LABEL: @test9
 ; CHECK-NEXT: mul i32 %X, 94
 ; CHECK-NEXT: ret i32
 }
@@ -150,7 +154,7 @@ define i32 @test10(i32 %X) {
   %Y = add i32 %X ,%X
   %Z = add i32 %Y, %X
   ret i32 %Z
-; CHECK-LABEL: @test10(
+; CHECK-LABEL: @test10
 ; CHECK-NEXT: mul i32 %X, 3
 ; CHECK-NEXT: ret i32
 }
@@ -160,7 +164,7 @@ define i32 @test11(i32 %W) {
   %Y = add i32 %X ,%X
   %Z = add i32 %Y, %X
   ret i32 %Z
-; CHECK-LABEL: @test11(
+; CHECK-LABEL: @test11
 ; CHECK-NEXT: mul i32 %W, 381
 ; CHECK-NEXT: ret i32
 }
@@ -169,11 +173,10 @@ define i32 @test12(i32 %X) {
   %A = sub i32 1, %X
   %B = sub i32 2, %X
   %C = sub i32 3, %X
-
   %Y = add i32 %A ,%B
   %Z = add i32 %Y, %C
   ret i32 %Z
-; CHECK-LABEL: @test12(
+; CHECK-LABEL: @test12
 ; CHECK-NEXT: mul i32 %X, -3
 ; CHECK-NEXT: add i32{{.*}}, 6
 ; CHECK-NEXT: ret i32
@@ -185,7 +188,7 @@ define i32 @test13(i32 %X1, i32 %X2, i32 %X3) {
   %C = mul i32 %X1, %X3  ; X1*X3
   %D = add i32 %B, %C    ; -X1*X2 + X1*X3 -> X1*(X3-X2)
   ret i32 %D
-; CHECK-LABEL: @test13(
+; CHECK-LABEL: @test13
 ; CHECK-NEXT: sub i32 %X3, %X2
 ; CHECK-NEXT: mul i32 {{.*}}, %X1
 ; CHECK-NEXT: ret i32
@@ -197,9 +200,10 @@ define i32 @test14(i32 %X1, i32 %X2) {
   %C = mul i32 %X2, -47  ; X2*-47
   %D = add i32 %B, %C    ; X1*47 + X2*-47 -> 47*(X1-X2)
   ret i32 %D
-; CHECK-LABEL: @test14(
+
+; CHECK-LABEL: @test14
 ; CHECK-NEXT: sub i32 %X1, %X2
-; CHECK-NEXT: mul i32 {{.*}}, 47
+; CHECK-NEXT: mul i32 %tmp, 47
 ; CHECK-NEXT: ret i32
 }
 
@@ -210,7 +214,6 @@ define i32 @test15(i32 %X1, i32 %X2, i32 %X3) {
   %C = and i1 %A, %B
   %D = select i1 %C, i32 %X1, i32 0
   ret i32 %D
-; CHECK-LABEL: @test15(
+; CHECK-LABEL: @test15
 ; CHECK: and i1 %A, %B
 }
-
index 025689bb0c103f15abafb1136cf346d0f08d4f6f..eac5b5920ac123e00fef59267f27de4bff83e98a 100644 (file)
@@ -1,18 +1,19 @@
 ; RUN: opt -reassociate -S < %s | FileCheck %s
 
-target triple = "armv7-apple-ios"
-
 declare void @use(float)
 
-; CHECK: test
-define void @test(float %x, float %y) {
-entry:
+define void @test1(float %x, float %y) {
+; CHECK-LABEL: test1
 ; CHECK: fmul float %x, %y
 ; CHECK: fmul float %x, %y
-  %0 = fmul float %x, %y
-  %1 = fmul float %y, %x
-  %2 = fsub float %0, %1
-  call void @use(float %0)
-  call void @use(float %2)
+; CHECK: fsub float %1, %2
+; CHECK: call void @use(float %{{.*}})
+; CHECK: call void @use(float %{{.*}})
+
+  %1 = fmul float %x, %y
+  %2 = fmul float %y, %x
+  %3 = fsub float %1, %2
+  call void @use(float %1)
+  call void @use(float %3)
   ret void
 }
index 91723bc37b0154d8879d2d71e153eaafd828a6f1..aad3b206f69f1d14a336ec7f01eb67950110f248 100644 (file)
@@ -18,6 +18,7 @@
 
 declare i32 @printf(i8*, ...)
 
+; FIXME: No longer works.
 define void @test(i32 %Num, i32* %Array) {
 bb0:
        %cond221 = icmp eq i32 0, %Num          ; <i1> [#uses=3]
index cfbc485ffa03614743f37cb0744a0f8a68149fa8..ae915da8e57681c76804c08b830857d29a4c7797 100644 (file)
@@ -1,7 +1,7 @@
-; RUN: opt < %s -reassociate
+; RUN: opt < %s -reassociate -disable-output
 ; PR13021
 
-define i32 @foo(i32 %x) {
+define i32 @test1(i32 %x) {
   %t0 = mul i32 %x, %x
   %t1 = mul i32 %t0, %t0
   %t2 = mul i32 %t1, %t1
index d79464753f12e73f4c13f940edf4cbe5430b7e8f..12eaeeea7b7bb55d64adfe00d5dd8124b762a296 100644 (file)
@@ -28,4 +28,3 @@ define i64 @multistep2(i64 %a, i64 %b, i64 %c, i64 %d) {
 ; CHECK-NEXT: ret
   ret i64 %t3
 }
-
index 6a3dfd3b82064c0725485d35a5a2372cf62301d3..12d2c86192bb9fabb1bbd0e6cb056c1c7c6f2a5b 100644 (file)
@@ -1,21 +1,31 @@
-; RUN: opt < %s -reassociate -instcombine -S | not grep sub
+; RUN: opt < %s -reassociate -instcombine -S | FileCheck %s
 
 ; Test that we can turn things like X*-(Y*Z) -> X*-1*Y*Z.
 
 define i32 @test1(i32 %a, i32 %b, i32 %z) {
-       %c = sub i32 0, %z              ; <i32> [#uses=1]
-       %d = mul i32 %a, %b             ; <i32> [#uses=1]
-       %e = mul i32 %c, %d             ; <i32> [#uses=1]
-       %f = mul i32 %e, 12345          ; <i32> [#uses=1]
-       %g = sub i32 0, %f              ; <i32> [#uses=1]
-       ret i32 %g
+; CHECK-LABEL: test1
+; CHECK-NEXT: %e = mul i32 %a, 12345
+; CHECK-NEXT: %f = mul i32 %e, %b
+; CHECK-NEXT: %g = mul i32 %f, %z
+; CHECK-NEXT: ret i32 %g
+
+  %c = sub i32 0, %z
+  %d = mul i32 %a, %b
+  %e = mul i32 %c, %d
+  %f = mul i32 %e, 12345
+  %g = sub i32 0, %f
+  ret i32 %g
 }
 
 define i32 @test2(i32 %a, i32 %b, i32 %z) {
-       %d = mul i32 %z, 40             ; <i32> [#uses=1]
-       %c = sub i32 0, %d              ; <i32> [#uses=1]
-       %e = mul i32 %a, %c             ; <i32> [#uses=1]
-       %f = sub i32 0, %e              ; <i32> [#uses=1]
-       ret i32 %f
-}
+; CHECK-LABEL: test2
+; CHECK-NEXT: %e = mul i32 %a, 40
+; CHECK-NEXT: %f = mul i32 %e, %z
+; CHECK-NEXT: ret i32 %f
 
+  %d = mul i32 %z, 40
+  %c = sub i32 0, %d
+  %e = mul i32 %a, %c
+  %f = sub i32 0, %e
+  ret i32 %f
+}
index d68d00818cb8d27f49fff215207a32c3b0c7688d..7718881d8e51eaaee8ce6eefcd52d14def8e8bc5 100644 (file)
@@ -1,28 +1,42 @@
 ; Reassociation should apply to Add, Mul, And, Or, & Xor
 ;
-; RUN: opt < %s -reassociate -constprop -instcombine -die -S | not grep 12
+; RUN: opt < %s -reassociate -constprop -instcombine -die -S | FileCheck %s
 
 define i32 @test_mul(i32 %arg) {
-       %tmp1 = mul i32 12, %arg                ; <i32> [#uses=1]
-       %tmp2 = mul i32 %tmp1, 12               ; <i32> [#uses=1]
-       ret i32 %tmp2
+; CHECK-LABEL: test_mul
+; CHECK-NEXT: %tmp2 = mul i32 %arg, 144
+; CHECK-NEXT: ret i32 %tmp2
+
+  %tmp1 = mul i32 12, %arg
+  %tmp2 = mul i32 %tmp1, 12
+  ret i32 %tmp2
 }
 
 define i32 @test_and(i32 %arg) {
-       %tmp1 = and i32 14, %arg                ; <i32> [#uses=1]
-       %tmp2 = and i32 %tmp1, 14               ; <i32> [#uses=1]
-       ret i32 %tmp2
+; CHECK-LABEL: test_and
+; CHECK-NEXT: %tmp2 = and i32 %arg, 14
+; CHECK-NEXT: ret i32 %tmp2
+
+  %tmp1 = and i32 14, %arg
+  %tmp2 = and i32 %tmp1, 14
+  ret i32 %tmp2
 }
 
 define i32 @test_or(i32 %arg) {
-       %tmp1 = or i32 14, %arg         ; <i32> [#uses=1]
-       %tmp2 = or i32 %tmp1, 14                ; <i32> [#uses=1]
-       ret i32 %tmp2
+; CHECK-LABEL: test_or
+; CHECK-NEXT: %tmp2 = or i32 %arg, 14
+; CHECK-NEXT: ret i32 %tmp2
+
+  %tmp1 = or i32 14, %arg
+  %tmp2 = or i32 %tmp1, 14
+  ret i32 %tmp2
 }
 
 define i32 @test_xor(i32 %arg) {
-       %tmp1 = xor i32 12, %arg                ; <i32> [#uses=1]
-       %tmp2 = xor i32 %tmp1, 12               ; <i32> [#uses=1]
-       ret i32 %tmp2
-}
+; CHECK-LABEL: test_xor
+; CHECK-NEXT: ret i32 %arg
 
+  %tmp1 = xor i32 12, %arg
+  %tmp2 = xor i32 %tmp1, 12
+  ret i32 %tmp2
+}
index 73af5e5304ee02b81d2931dfc6941b89f8649a84..8fbf1b9d4bc50eab53765e462a2d49a0e4dd8686 100644 (file)
@@ -1,12 +1,14 @@
 ; There should be exactly one shift and one add left.
-; RUN: opt < %s -reassociate -instcombine -S > %t
-; RUN: grep shl %t | count 1
-; RUN: grep add %t | count 1
+; RUN: opt < %s -reassociate -instcombine -S | FileCheck %s
 
-define i32 @test(i32 %X, i32 %Y) {
-       %tmp.2 = shl i32 %X, 1          ; <i32> [#uses=1]
-       %tmp.6 = shl i32 %Y, 1          ; <i32> [#uses=1]
-       %tmp.4 = add i32 %tmp.6, %tmp.2         ; <i32> [#uses=1]
-       ret i32 %tmp.4
-}
+define i32 @test1(i32 %X, i32 %Y) {
+; CHECK-LABEL: test1
+; CHECK-NEXT: %tmp = add i32 %Y, %X
+; CHECK-NEXT: %tmp1 = shl i32 %tmp, 1
+; CHECK-NEXT: ret i32 %tmp1
 
+  %tmp.2 = shl i32 %X, 1
+  %tmp.6 = shl i32 %Y, 1
+  %tmp.4 = add i32 %tmp.6, %tmp.2
+  ret i32 %tmp.4
+}
index 4c63d1238a6741583e49bee9edf40a36200d9470..e6263d85522c9051f9fdf0a9219e7c9cc0772008 100644 (file)
@@ -1,11 +1,26 @@
-; With sub reassociation, constant folding can eliminate the 12 and -12 constants.
-;
-; RUN: opt < %s -reassociate -instcombine -S | not grep 12
+; RUN: opt < %s -reassociate -instcombine -S | FileCheck %s
 
-define i32 @test(i32 %A, i32 %B) {
-       %X = add i32 -12, %A            ; <i32> [#uses=1]
-       %Y = sub i32 %X, %B             ; <i32> [#uses=1]
-       %Z = add i32 %Y, 12             ; <i32> [#uses=1]
-       ret i32 %Z
+; With sub reassociation, constant folding can eliminate the 12 and -12 constants.
+define i32 @test1(i32 %A, i32 %B) {
+; CHECK-LABEL: @test1
+; CHECK-NEXT: %Z = sub i32 %A, %B
+; CHECK-NEXT: ret i32 %Z
+  %X = add i32 -12, %A
+  %Y = sub i32 %X, %B
+  %Z = add i32 %Y, 12
+  ret i32 %Z
 }
 
+; PR2047
+; With sub reassociation, constant folding can eliminate the uses of %a.
+define i32 @test2(i32 %a, i32 %b, i32 %c) nounwind  {
+; CHECK-LABEL: @test2
+; CHECK-NEXT: %sum = add i32 %c, %b
+; CHECK-NEXT: %tmp7 = sub i32 0, %sum
+; CHECK-NEXT: ret i32 %tmp7
+
+  %tmp3 = sub i32 %a, %b
+  %tmp5 = sub i32 %tmp3, %c
+  %tmp7 = sub i32 %tmp5, %a
+  ret i32 %tmp7
+}
diff --git a/test/Transforms/Reassociate/subtest2.ll b/test/Transforms/Reassociate/subtest2.ll
deleted file mode 100644 (file)
index 0513c5f..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-; With sub reassociation, constant folding can eliminate the uses of %a.
-;
-; RUN: opt < %s -reassociate -instcombine -S | grep %a | count 1
-; PR2047
-
-define i32 @test(i32 %a, i32 %b, i32 %c) nounwind  {
-entry:
-       %tmp3 = sub i32 %a, %b          ; <i32> [#uses=1]
-       %tmp5 = sub i32 %tmp3, %c               ; <i32> [#uses=1]
-       %tmp7 = sub i32 %tmp5, %a               ; <i32> [#uses=1]
-       ret i32 %tmp7
-}
-