1# RUN: llc -mtriple=aarch64-linux-gnu -start-after=branch-relaxation --filetype=obj -o %t.o %s
2
3--- |
4  target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"
5  target triple = "aarch64-unknown-linux-gnu"
6
7  @reps = external dso_local global i32, align 4
8
9  define void @foo() {
10    ret void
11  }
12
13  !2 = !{!3, !3, i64 0}
14  !3 = !{!"int", !4, i64 0}
15  !4 = !{!"omnipotent char", !5, i64 0}
16  !5 = !{!"Simple C++ TBAA"}
17...
18---
19name:            foo
20alignment:       64
21jumpTable:
22  kind:            block-address
23  entries:
24    - id:              0
25      blocks:          [ '%bb.2', '%bb.3', '%bb.4', '%bb.5' ]
26body:             |
27  bb.0:
28    successors: %bb.6(0x19999998), %bb.1(0x66666668)
29    liveins: $w0, $x1, $x2, $x3, $x4
30
31    dead $wzr = SUBSWri renamable $w0, 3, 0, implicit-def $nzcv
32    Bcc 8, %bb.6, implicit $nzcv
33
34  bb.1:
35    successors: %bb.2(0x20000000), %bb.3(0x20000000), %bb.4(0x20000000), %bb.5(0x20000000)
36    liveins: $w0, $x1, $x2, $x3, $x4
37
38    $x8 = ADRP target-flags(aarch64-page) %jump-table.0
39    renamable $w9 = ORRWrs $wzr, killed renamable $w0, 0, implicit-def $x9
40    renamable $x8 = ADDXri killed $x8, target-flags(aarch64-pageoff, aarch64-nc) %jump-table.0, 0
41    early-clobber renamable $x10, dead early-clobber renamable $x11 = JumpTableDest32 killed renamable $x8, killed renamable $x9, %jump-table.0
42    BR killed renamable $x10
43
44  bb.2 (align 65536):
45    successors: %bb.3(0x50000000), %bb.6(0x30000000)
46    liveins: $x1, $x2, $x3, $x4
47
48    renamable $x8 = ADRP target-flags(aarch64-page) @reps
49    renamable $w9 = LDRWui renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @reps :: (volatile dereferenceable load 4 from @reps, !tbaa !2)
50    dead $wzr = SUBSWri killed renamable $w9, 1, 0, implicit-def $nzcv
51    Bcc 11, %bb.6, implicit $nzcv
52
53  bb.3 (align 65536):
54    successors: %bb.4(0x50000000), %bb.6(0x30000000)
55    liveins: $x1, $x2, $x3, $x4
56
57    renamable $x8 = ADRP target-flags(aarch64-page) @reps
58    renamable $w9 = LDRWui renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @reps :: (volatile dereferenceable load 4 from @reps, !tbaa !2)
59    dead $wzr = SUBSWri killed renamable $w9, 1, 0, implicit-def $nzcv
60    Bcc 11, %bb.6, implicit $nzcv
61
62  bb.4 (align 65536):
63    successors: %bb.5(0x50000000), %bb.6(0x30000000)
64    liveins: $x1, $x2, $x3, $x4
65
66    renamable $x8 = ADRP target-flags(aarch64-page) @reps
67    renamable $w9 = LDRWui renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @reps :: (volatile dereferenceable load 4 from @reps, !tbaa !2)
68    dead $wzr = SUBSWri killed renamable $w9, 1, 0, implicit-def $nzcv
69    Bcc 11, %bb.6, implicit $nzcv
70
71  bb.5 (align 65536):
72    successors: %bb.6(0x30000000)
73    liveins: $x1, $x2, $x3, $x4
74
75    renamable $x8 = ADRP target-flags(aarch64-page) @reps
76    renamable $w9 = LDRWui renamable $x8, target-flags(aarch64-pageoff, aarch64-nc) @reps :: (volatile dereferenceable load 4 from @reps, !tbaa !2)
77    dead $wzr = SUBSWri killed renamable $w9, 1, 0, implicit-def $nzcv
78    Bcc 11, %bb.6, implicit $nzcv
79
80  bb.6:
81    RET undef $lr
82
83...
84