xref: /aosp_15_r20/external/llvm/test/Transforms/LICM/update-scev.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: opt -S -licm < %s | FileCheck %s --check-prefix=IR-AFTER-TRANSFORM
2*9880d681SAndroid Build Coastguard Worker; RUN: opt -analyze -scalar-evolution -licm -scalar-evolution < %s | FileCheck %s --check-prefix=SCEV-EXPRS
3*9880d681SAndroid Build Coastguard Worker
4*9880d681SAndroid Build Coastguard Workerdeclare void @clobber()
5*9880d681SAndroid Build Coastguard Worker
6*9880d681SAndroid Build Coastguard Workerdefine void @f_0(i1* %loc) {
7*9880d681SAndroid Build Coastguard Worker; IR-AFTER-TRANSFORM-LABEL: @f_0(
8*9880d681SAndroid Build Coastguard Worker; IR-AFTER-TRANSFORM: loop.outer:
9*9880d681SAndroid Build Coastguard Worker; IR-AFTER-TRANSFORM-NEXT:  call void @clobber()
10*9880d681SAndroid Build Coastguard Worker; IR-AFTER-TRANSFORM-NEXT:  %cond = load i1, i1* %loc
11*9880d681SAndroid Build Coastguard Worker; IR-AFTER-TRANSFORM-NEXT:  br label %loop.inner
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Worker; SCEV-EXPRS: Classifying expressions for: @f_0
14*9880d681SAndroid Build Coastguard Worker; SCEV-EXPRS: Classifying expressions for: @f_0
15*9880d681SAndroid Build Coastguard Worker; SCEV-EXPRS:  %cond = load i1, i1* %loc
16*9880d681SAndroid Build Coastguard Worker; SCEV-EXPRS-NEXT:   -->  {{.*}} LoopDispositions: { %loop.outer: Variant, %loop.inner: Invariant }
17*9880d681SAndroid Build Coastguard Worker
18*9880d681SAndroid Build Coastguard Workerentry:
19*9880d681SAndroid Build Coastguard Worker  br label %loop.outer
20*9880d681SAndroid Build Coastguard Worker
21*9880d681SAndroid Build Coastguard Workerloop.outer:
22*9880d681SAndroid Build Coastguard Worker  call void @clobber()
23*9880d681SAndroid Build Coastguard Worker  br label %loop.inner
24*9880d681SAndroid Build Coastguard Worker
25*9880d681SAndroid Build Coastguard Workerloop.inner:
26*9880d681SAndroid Build Coastguard Worker  %cond = load i1, i1* %loc
27*9880d681SAndroid Build Coastguard Worker  br i1 %cond, label %loop.inner, label %leave.inner
28*9880d681SAndroid Build Coastguard Worker
29*9880d681SAndroid Build Coastguard Workerleave.inner:
30*9880d681SAndroid Build Coastguard Worker  br label %loop.outer
31*9880d681SAndroid Build Coastguard Worker}
32