• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1; RUN: llc -march=hexagon < %s | FileCheck %s
2
3; CHECK-DAG: r[[REG:[0-9]+]] = memw(r{{[0-9]+<<#[0-9]+}}+##.LJTI{{.*}})
4; CHECK-DAG: jumpr r[[REG]]
5
6define void @main() #0 {
7entry:
8  %ret = alloca i32, align 4
9  br label %while.body
10
11while.body:
12  %ret.0.load17 = load volatile i32, i32* %ret, align 4
13  switch i32 %ret.0.load17, label %label6 [
14    i32 0, label %label0
15    i32 1, label %label1
16    i32 2, label %label2
17    i32 3, label %label3
18    i32 4, label %label4
19    i32 5, label %label5
20  ]
21
22label0:
23  %ret.0.load18 = load volatile i32, i32* %ret, align 4
24  %inc = add nsw i32 %ret.0.load18, 1
25  store volatile i32 %inc, i32* %ret, align 4
26  br label %while.body
27
28label1:
29  %ret.0.load19 = load volatile i32, i32* %ret, align 4
30  %inc2 = add nsw i32 %ret.0.load19, 1
31  store volatile i32 %inc2, i32* %ret, align 4
32  br label %while.body
33
34label2:
35  %ret.0.load20 = load volatile i32, i32* %ret, align 4
36  %inc4 = add nsw i32 %ret.0.load20, 1
37  store volatile i32 %inc4, i32* %ret, align 4
38  br label %while.body
39
40label3:
41  %ret.0.load21 = load volatile i32, i32* %ret, align 4
42  %inc6 = add nsw i32 %ret.0.load21, 1
43  store volatile i32 %inc6, i32* %ret, align 4
44  br label %while.body
45
46label4:
47  %ret.0.load22 = load volatile i32, i32* %ret, align 4
48  %inc8 = add nsw i32 %ret.0.load22, 1
49  store volatile i32 %inc8, i32* %ret, align 4
50  br label %while.body
51
52label5:
53  %ret.0.load23 = load volatile i32, i32* %ret, align 4
54  %inc10 = add nsw i32 %ret.0.load23, 1
55  store volatile i32 %inc10, i32* %ret, align 4
56  br label %while.body
57
58label6:
59  store volatile i32 0, i32* %ret, align 4
60  br label %while.body
61}
62
63attributes #0 = { noreturn nounwind }
64