[NFC][RemoveDIs] Prefer iterators over inst-pointers in InstCombine
[llvm-project.git] / llvm / test / CodeGen / Hexagon / block-addr.ll
blobcbe824643aca28aecbdc91123c785571550762f6
1 ; RUN: llc -march=hexagon < %s | FileCheck %s
3 ; CHECK-DAG: r[[REG:[0-9]+]] = memw(r{{[0-9]+<<#[0-9]+}}+##.LJTI{{.*}})
4 ; CHECK-DAG: jumpr r[[REG]]
6 define void @main() #0 {
7 entry:
8   %ret = alloca i32, align 4
9   br label %while.body
11 while.body:
12   %ret.0.load17 = load volatile i32, ptr %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   ]
22 label0:
23   %ret.0.load18 = load volatile i32, ptr %ret, align 4
24   %inc = add nsw i32 %ret.0.load18, 1
25   store volatile i32 %inc, ptr %ret, align 4
26   br label %while.body
28 label1:
29   %ret.0.load19 = load volatile i32, ptr %ret, align 4
30   %inc2 = add nsw i32 %ret.0.load19, 1
31   store volatile i32 %inc2, ptr %ret, align 4
32   br label %while.body
34 label2:
35   %ret.0.load20 = load volatile i32, ptr %ret, align 4
36   %inc4 = add nsw i32 %ret.0.load20, 1
37   store volatile i32 %inc4, ptr %ret, align 4
38   br label %while.body
40 label3:
41   %ret.0.load21 = load volatile i32, ptr %ret, align 4
42   %inc6 = add nsw i32 %ret.0.load21, 1
43   store volatile i32 %inc6, ptr %ret, align 4
44   br label %while.body
46 label4:
47   %ret.0.load22 = load volatile i32, ptr %ret, align 4
48   %inc8 = add nsw i32 %ret.0.load22, 1
49   store volatile i32 %inc8, ptr %ret, align 4
50   br label %while.body
52 label5:
53   %ret.0.load23 = load volatile i32, ptr %ret, align 4
54   %inc10 = add nsw i32 %ret.0.load23, 1
55   store volatile i32 %inc10, ptr %ret, align 4
56   br label %while.body
58 label6:
59   store volatile i32 0, ptr %ret, align 4
60   br label %while.body
63 attributes #0 = { noreturn nounwind }