; This testcase was incorrectly computing that the loopentry.7 loop was
; not a child of the loopentry.6 loop.
;
-; RUN: opt < %s -analyze -loops | \
-; RUN: grep "^ Loop at depth 4 containing: %loopentry.7<header><latch><exiting>"
+; RUN: opt < %s -analyze -loops | FileCheck %s
+
+; CHECK: Loop at depth 4 containing: %loopentry.7<header><latch><exiting>
define void @getAndMoveToFrontDecode() {
br label %endif.2
-; RUN: opt < %s -postdomtree -analyze | grep entry
+; RUN: opt < %s -postdomtree -analyze | FileCheck %s
; PR932
define void @foo(i1 %x) {
+; CHECK: entry
entry:
br i1 %x, label %bb1, label %bb0
bb0: ; preds = %entry, bb0
-; RUN: opt < %s -indvars -adce -simplifycfg -S | grep "icmp s"
+; RUN: opt < %s -indvars -adce -simplifycfg -S | FileCheck %s
; PR1598
+; CHECK: icmp s
+
define i32 @f(i32 %a, i32 %b, i32 %x, i32 %y) {
entry:
%tmp3 = icmp eq i32 %a, %b ; <i1> [#uses=1]
-; RUN: opt < %s -scalar-evolution -analyze | grep "Loop %bb: backedge-taken count is (-1 + (-1 \* %x) + %y)"
+; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
; PR1597
+; CHECK: Loop %bb: backedge-taken count is (-1 + (-1 * %x) + %y)
+
define i32 @f(i32 %x, i32 %y) {
entry:
%tmp63 = icmp ult i32 %x, %y ; <i1> [#uses=1]
-; RUN: opt < %s -analyze -scalar-evolution \
-; RUN: -scalar-evolution-max-iterations=0 | grep "backedge-taken count is 13"
+; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR1706
+; CHECK: backedge-taken count is 13
+
define i32 @f() {
entry:
br label %bb5
-; RUN: opt < %s -indvars -S | grep printd | grep 1206807378
+; RUN: opt < %s -indvars -S | FileCheck %s
; PR1798
+; CHECK: printd(i32 1206807378)
+
declare void @printd(i32)
define i32 @test() {
-; RUN: opt < %s -scalar-evolution -analyze | grep "Loop %header: backedge-taken count is (0 smax %n)"
+; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
+
+; CHECK: Loop %header: backedge-taken count is (0 smax %n)
define void @foo(i32 %n) {
entry:
-; RUN: opt < %s -analyze -scalar-evolution | grep umax
+; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
; PR2003
+; CHECK: umax
+
define i32 @foo(i32 %n) {
entry:
br label %header
-; RUN: opt < %s -analyze -scalar-evolution \
-; RUN: -scalar-evolution-max-iterations=0 | grep "backedge-taken count is 61"
+; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2364
+; CHECK: backedge-taken count is 61
+
define i32 @func_6() nounwind {
entry:
br label %bb5
-; RUN: opt < %s -analyze -scalar-evolution 2>&1 | not grep smax
+; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
; PR2261
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'foo'
+; CHECK-NOT: smax
+
@lut = common global [256 x i8] zeroinitializer, align 32 ; <[256 x i8]*> [#uses=1]
define void @foo(i32 %count, i32* %srcptr, i32* %dstptr) nounwind {
-; RUN: opt < %s -analyze -scalar-evolution 2>&1 | not grep smax
+; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
; PR2070
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'a'
+; CHECK-NOT: smax
+
define i32 @a(i32 %x) nounwind {
entry:
icmp sgt i32 %x, 1 ; <i1>:0 [#uses=1]
-; RUN: opt < %s -analyze -scalar-evolution \
-; RUN: -scalar-evolution-max-iterations=0 | grep Unpredictable
+; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2088
+; CHECK: Unpredictable
+
define void @fun() {
entry:
br label %loop
-; RUN: opt < %s -analyze -scalar-evolution \
-; RUN: -scalar-evolution-max-iterations=0 | grep "backedge-taken count is 113"
+; RUN: opt < %s -analyze -scalar-evolution -scalar-evolution-max-iterations=0 | FileCheck %s
; PR2088
+; CHECK: backedge-taken count is 113
+
define void @fun() {
entry:
br label %loop
-; RUN: opt < %s -analyze -scalar-evolution 2>&1 | \
-; RUN: grep "Loop %bb: backedge-taken count is (7 + (-1 \* %argc))"
+; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
+
+; CHECK: Loop %bb: backedge-taken count is (7 + (-1 * %argc))
define i32 @main(i32 %argc, i8** %argv) nounwind {
entry:
-; RUN: opt < %s -analyze -scalar-evolution \
-; RUN: | grep "Loop %bb: Unpredictable backedge-taken count\."
+; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
+
+; CHECK: Loop %bb: Unpredictable backedge-taken count.
; ScalarEvolution can't compute a trip count because it doesn't know if
; dividing by the stride will have a remainder. This could theoretically
-; RUN: opt < %s -analyze -scalar-evolution 2>&1 | grep "/u 3"
+; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
; XFAIL: *
+; CHECK: /u 3
+
; This is a tricky testcase for unsigned wrap detection which ScalarEvolution
; doesn't yet know how to do.
-; RUN: opt < %s -analyze -scalar-evolution | grep "backedge-taken count is 255"
+; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
+
+; CHECK: backedge-taken count is 255
define i32 @foo(i32 %x, i32 %y, i32* %lam, i32* %alp) nounwind {
bb1.thread:
-; RUN: opt < %s -analyze -scalar-evolution 2>&1 | \
-; RUN: grep "(((-1 * %i0) + (100005 smax %i0)) /u 5)"
+; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
; XFAIL: *
+; CHECK: (((-1 * %i0) + (100005 smax %i0)) /u 5)
+
define i32 @foo0(i32 %i0) nounwind {
entry:
br label %bb1
-; RUN: opt < %s -analyze -scalar-evolution 2>&1 | grep "/u 5"
+; RUN: opt < %s -analyze -scalar-evolution 2>&1 | FileCheck %s
; XFAIL: *
+; CHECK: /u 5
+
define i8 @foo0(i8 %i0) nounwind {
entry:
br label %bb1
-; RUN: opt < %s -analyze -scalar-evolution | not grep "/u -1"
+; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
; PR3275
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'func_15'
+; CHECK-NOT: /u -1
+
@g_16 = external global i16 ; <i16*> [#uses=3]
@.str = external constant [4 x i8] ; <[4 x i8]*> [#uses=0]
; RUN: opt < %s -analyze -scalar-evolution | grep "(trunc i" | not grep ext
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test1'
+; CHECK-NOT: (trunc i{{.*}}ext
+
define i16 @test1(i8 %x) {
%A = sext i8 %x to i32
%B = trunc i32 %A to i16
ret i16 %B
}
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test2'
+; CHECK-NOT: (trunc i{{.*}}ext
+
define i8 @test2(i16 %x) {
%A = sext i16 %x to i32
%B = trunc i32 %A to i8
ret i8 %B
}
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test3'
+; CHECK-NOT: (trunc i{{.*}}ext
+
define i16 @test3(i16 %x) {
%A = sext i16 %x to i32
%B = trunc i32 %A to i16
ret i16 %B
}
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test4'
+; CHECK-NOT: (trunc i{{.*}}ext
+
define i16 @test4(i8 %x) {
%A = zext i8 %x to i32
%B = trunc i32 %A to i16
ret i16 %B
}
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test5'
+; CHECK-NOT: (trunc i{{.*}}ext
+
define i8 @test5(i16 %x) {
%A = zext i16 %x to i32
%B = trunc i32 %A to i8
ret i8 %B
}
+; CHECK: Printing analysis 'Scalar Evolution Analysis' for function 'test6'
+; CHECK-NOT: (trunc i{{.*}}ext
+
define i16 @test6(i16 %x) {
%A = zext i16 %x to i32
%B = trunc i32 %A to i16
-; RUN: opt < %s -analyze -scalar-evolution | grep "count is 2"
+; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
; PR3171
+
+; CHECK: count is 2
+
target datalayout = "E-p:64:64:64-a0:0:8-f32:32:32-f64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-v64:64:64-v128:128:128"
%struct.Foo = type { i32 }
-; RUN: opt < %s -scalar-evolution -analyze \
-; RUN: | grep "\--> (zext" | count 2
+; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
+
+; CHECK: --> (zext
+; CHECK: --> (zext
+; CHECK-NOT: --> (zext
define i32 @foo(i32 %x) {
%n = and i32 %x, 255
-; RUN: opt < %s -scalar-evolution -analyze | grep "Loop %bb3: backedge-taken count is (-1 + %n)"
+; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
+
+; CHECK: Loop %bb3: backedge-taken count is (-1 + %n)
; We don't want to use a max in the trip count expression in
; this testcase.
-; RUN: opt < %s -scalar-evolution -analyze \
-; RUN: | grep "\--> ((-128 \* %a) /u -128)"
+; RUN: opt < %s -scalar-evolution -analyze | FileCheck %s
+
+; CHECK: --> ((-128 * %a) /u -128)
; Don't let ScalarEvolution fold this div away.
-; RUN: opt < %s -analyze -scalar-evolution | grep smax
+; RUN: opt < %s -analyze -scalar-evolution | FileCheck %s
; PR1614
+; CHECK: smax
+
define i32 @f(i32 %x, i32 %y) {
entry:
br label %bb