xref: /aosp_15_r20/external/llvm/test/CodeGen/Hexagon/block-addr.ll (revision 9880d6810fe72a1726cb53787c6711e909410d58)
1*9880d681SAndroid Build Coastguard Worker; RUN: llc -march=hexagon < %s | FileCheck %s
2*9880d681SAndroid Build Coastguard Worker
3*9880d681SAndroid Build Coastguard Worker; Allow combine(..##JTI..):
4*9880d681SAndroid Build Coastguard Worker; CHECK: r{{[0-9]+}}{{.*}} = {{.*}}#.LJTI
5*9880d681SAndroid Build Coastguard Worker; CHECK: r{{[0-9]+}} = memw(r{{[0-9]+}}{{ *}}+{{ *}}r{{[0-9]+<<#[0-9]+}})
6*9880d681SAndroid Build Coastguard Worker; CHECK: jumpr:nt r{{[0-9]+}}
7*9880d681SAndroid Build Coastguard Worker
8*9880d681SAndroid Build Coastguard Workerdefine void @main() #0 {
9*9880d681SAndroid Build Coastguard Workerentry:
10*9880d681SAndroid Build Coastguard Worker  %ret = alloca i32, align 4
11*9880d681SAndroid Build Coastguard Worker  br label %while.body
12*9880d681SAndroid Build Coastguard Worker
13*9880d681SAndroid Build Coastguard Workerwhile.body:
14*9880d681SAndroid Build Coastguard Worker  %ret.0.load17 = load volatile i32, i32* %ret, align 4
15*9880d681SAndroid Build Coastguard Worker  switch i32 %ret.0.load17, label %label6 [
16*9880d681SAndroid Build Coastguard Worker    i32 0, label %label0
17*9880d681SAndroid Build Coastguard Worker    i32 1, label %label1
18*9880d681SAndroid Build Coastguard Worker    i32 2, label %label2
19*9880d681SAndroid Build Coastguard Worker    i32 3, label %label3
20*9880d681SAndroid Build Coastguard Worker    i32 4, label %label4
21*9880d681SAndroid Build Coastguard Worker    i32 5, label %label5
22*9880d681SAndroid Build Coastguard Worker  ]
23*9880d681SAndroid Build Coastguard Worker
24*9880d681SAndroid Build Coastguard Workerlabel0:
25*9880d681SAndroid Build Coastguard Worker  %ret.0.load18 = load volatile i32, i32* %ret, align 4
26*9880d681SAndroid Build Coastguard Worker  %inc = add nsw i32 %ret.0.load18, 1
27*9880d681SAndroid Build Coastguard Worker  store volatile i32 %inc, i32* %ret, align 4
28*9880d681SAndroid Build Coastguard Worker  br label %while.body
29*9880d681SAndroid Build Coastguard Worker
30*9880d681SAndroid Build Coastguard Workerlabel1:
31*9880d681SAndroid Build Coastguard Worker  %ret.0.load19 = load volatile i32, i32* %ret, align 4
32*9880d681SAndroid Build Coastguard Worker  %inc2 = add nsw i32 %ret.0.load19, 1
33*9880d681SAndroid Build Coastguard Worker  store volatile i32 %inc2, i32* %ret, align 4
34*9880d681SAndroid Build Coastguard Worker  br label %while.body
35*9880d681SAndroid Build Coastguard Worker
36*9880d681SAndroid Build Coastguard Workerlabel2:
37*9880d681SAndroid Build Coastguard Worker  %ret.0.load20 = load volatile i32, i32* %ret, align 4
38*9880d681SAndroid Build Coastguard Worker  %inc4 = add nsw i32 %ret.0.load20, 1
39*9880d681SAndroid Build Coastguard Worker  store volatile i32 %inc4, i32* %ret, align 4
40*9880d681SAndroid Build Coastguard Worker  br label %while.body
41*9880d681SAndroid Build Coastguard Worker
42*9880d681SAndroid Build Coastguard Workerlabel3:
43*9880d681SAndroid Build Coastguard Worker  %ret.0.load21 = load volatile i32, i32* %ret, align 4
44*9880d681SAndroid Build Coastguard Worker  %inc6 = add nsw i32 %ret.0.load21, 1
45*9880d681SAndroid Build Coastguard Worker  store volatile i32 %inc6, i32* %ret, align 4
46*9880d681SAndroid Build Coastguard Worker  br label %while.body
47*9880d681SAndroid Build Coastguard Worker
48*9880d681SAndroid Build Coastguard Workerlabel4:
49*9880d681SAndroid Build Coastguard Worker  %ret.0.load22 = load volatile i32, i32* %ret, align 4
50*9880d681SAndroid Build Coastguard Worker  %inc8 = add nsw i32 %ret.0.load22, 1
51*9880d681SAndroid Build Coastguard Worker  store volatile i32 %inc8, i32* %ret, align 4
52*9880d681SAndroid Build Coastguard Worker  br label %while.body
53*9880d681SAndroid Build Coastguard Worker
54*9880d681SAndroid Build Coastguard Workerlabel5:
55*9880d681SAndroid Build Coastguard Worker  %ret.0.load23 = load volatile i32, i32* %ret, align 4
56*9880d681SAndroid Build Coastguard Worker  %inc10 = add nsw i32 %ret.0.load23, 1
57*9880d681SAndroid Build Coastguard Worker  store volatile i32 %inc10, i32* %ret, align 4
58*9880d681SAndroid Build Coastguard Worker  br label %while.body
59*9880d681SAndroid Build Coastguard Worker
60*9880d681SAndroid Build Coastguard Workerlabel6:
61*9880d681SAndroid Build Coastguard Worker  store volatile i32 0, i32* %ret, align 4
62*9880d681SAndroid Build Coastguard Worker  br label %while.body
63*9880d681SAndroid Build Coastguard Worker}
64*9880d681SAndroid Build Coastguard Worker
65*9880d681SAndroid Build Coastguard Workerattributes #0 = { noreturn nounwind "target-cpu"="hexagonv4" }
66