xref: /aosp_15_r20/external/llvm/test/Analysis/DependenceAnalysis/NonAffineExpr.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt < %s -analyze -basicaa -da-delinearize -da
2*9880d681SAndroid Build Coastguard Worker;
3*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - consistent input [S S]!
4*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - confused!
5*9880d681SAndroid Build Coastguard Worker; CHECK: da analyze - input [* *]!
6*9880d681SAndroid Build Coastguard Worker;
7*9880d681SAndroid Build Coastguard Workertarget datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n8:16:32-S64"
8*9880d681SAndroid Build Coastguard Workertarget triple = "thumbv7--linux-gnueabi"
9*9880d681SAndroid Build Coastguard Worker
10*9880d681SAndroid Build Coastguard Workerdefine void @f(i32** %a, i32 %n) align 2 {
11*9880d681SAndroid Build Coastguard Workerfor.preheader:
12*9880d681SAndroid Build Coastguard Worker  %t.0 = ashr exact i32 %n, 3
13*9880d681SAndroid Build Coastguard Worker  br label %for.body.1
14*9880d681SAndroid Build Coastguard Worker
15*9880d681SAndroid Build Coastguard Workerfor.body.1:
16*9880d681SAndroid Build Coastguard Worker  %i.1 = phi i32 [ %t.5, %for.inc ], [ 0, %for.preheader ]
17*9880d681SAndroid Build Coastguard Worker  %i.2 = phi i32 [ %i.5, %for.inc ], [ %t.0, %for.preheader ]
18*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.inc, label %for.body.2
19*9880d681SAndroid Build Coastguard Worker
20*9880d681SAndroid Build Coastguard Workerfor.body.2:
21*9880d681SAndroid Build Coastguard Worker  %i.3 = phi i32 [ %t.1, %for.body.2 ], [ %i.1, %for.body.1 ]
22*9880d681SAndroid Build Coastguard Worker  %t.1 = add i32 %i.3, 1
23*9880d681SAndroid Build Coastguard Worker  %t.2 = load i32*, i32** %a, align 4
24*9880d681SAndroid Build Coastguard Worker  %t.3 = getelementptr inbounds i32, i32* %t.2, i32 %i.3
25*9880d681SAndroid Build Coastguard Worker  %t.4 = load i32, i32* %t.3, align 4
26*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.inc, label %for.body.2
27*9880d681SAndroid Build Coastguard Worker
28*9880d681SAndroid Build Coastguard Workerfor.inc:
29*9880d681SAndroid Build Coastguard Worker  %i.4 = phi i32 [ %i.2, %for.body.1 ], [ %i.2, %for.body.2 ]
30*9880d681SAndroid Build Coastguard Worker  %t.5 = add i32 %i.1, %i.4
31*9880d681SAndroid Build Coastguard Worker  %i.5 = add i32 %i.2, -1
32*9880d681SAndroid Build Coastguard Worker  br i1 undef, label %for.exit, label %for.body.1
33*9880d681SAndroid Build Coastguard Worker
34*9880d681SAndroid Build Coastguard Workerfor.exit:
35*9880d681SAndroid Build Coastguard Worker  ret void
36*9880d681SAndroid Build Coastguard Worker}
37