[ORC] Add std::tuple support to SimplePackedSerialization.
[llvm-project.git] / llvm / test / Analysis / ScalarEvolution / non-IV-phi.ll
blob9f18719eea3c66045ae5abf67e7c333c6ad4502a
1 ; RUN: opt -scalar-evolution -analyze -enable-new-pm=0 < %s | FileCheck %s
2 ; RUN: opt "-passes=print<scalar-evolution>" -disable-output < %s 2>&1 | FileCheck %s
4 define void @test1(i8 %t, i32 %len) {
5 ; CHECK-LABEL: test1
6 ; CHECK: %sphi = phi i32 [ %ext, %entry ], [ %idx.inc.ext, %loop ]
7 ; CHECK-NEXT:  -->  (zext i8 {%t,+,1}<%loop> to i32)
9  entry:
10   %st = zext i8 %t to i16
11   %ext = zext i8 %t to i32
12   %ecmp = icmp ult i16 %st, 42
13   br i1 %ecmp, label %loop, label %exit
15  loop:
17   %idx = phi i8 [ %t, %entry ], [ %idx.inc, %loop ]
18   %sphi = phi i32 [ %ext, %entry ], [%idx.inc.ext, %loop]
20   %idx.inc = add i8 %idx, 1
21   %idx.inc.ext = zext i8 %idx.inc to i32
22   %idx.ext = zext i8 %idx to i32
24   %c = icmp ult i32 %idx.inc.ext, %len
25   br i1 %c, label %loop, label %exit
27  exit:
28   ret void
31 define void @test2(i8 %t, i32 %len) {
32 ; CHECK-LABEL: test2
33 ; CHECK: %sphi = phi i32 [ %ext.mul, %entry ], [ %mul, %loop ]
34 ; CHECK-NEXT:  -->  (4 * (zext i8 {%t,+,1}<%loop> to i32))
36  entry:
37   %st = zext i8 %t to i16
38   %ext = zext i8 %t to i32
39   %ext.mul = mul i32 %ext, 4
41   %ecmp = icmp ult i16 %st, 42
42   br i1 %ecmp, label %loop, label %exit
44  loop:
46   %idx = phi i8 [ %t, %entry ], [ %idx.inc, %loop ]
47   %sphi = phi i32 [ %ext.mul, %entry ], [%mul, %loop]
49   %idx.inc = add i8 %idx, 1
50   %idx.inc.ext = zext i8 %idx.inc to i32
51   %mul = mul i32 %idx.inc.ext, 4
53   %idx.ext = zext i8 %idx to i32
55   %c = icmp ult i32 %idx.inc.ext, %len
56   br i1 %c, label %loop, label %exit
58  exit:
59   ret void