xref: /llvm-project/llvm/test/tools/llvm-reduce/mir/preserve-jump-table-info.mir (revision 748f861bea5e22520e490efef15f334994602669)
1# REQUIRES: aarch64-registered-target
2# FIXME: Fails with -abort-on-invalid-reduction
3# RUN: llvm-reduce -simplify-mir --delta-passes=instructions -mtriple=aarch64-- --test FileCheck --test-arg --check-prefix=CHECK-INTERESTINGNESS --test-arg %s --test-arg --input-file %s -o %t 2> %t.log
4# RUN: FileCheck --match-full-lines --check-prefix=RESULT %s < %t
5
6# Check that jump table info is preserved through cloning
7
8# CHECK-INTERESTINGNESS: MOVi32imm
9
10# RESULT: jumpTable:
11# RESULT-NEXT: kind:            label-difference32
12# RESULT-NEXT: entries:
13# RESULT-NEXT: - id:              0
14# RESULT-NEXT: blocks:          [ '%bb.9', '%bb.5', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
15# RESULT-NEXT:                    '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.6', '%bb.2',
16# RESULT-NEXT:                    '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
17# RESULT-NEXT:                    '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
18# RESULT-NEXT:                    '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
19# RESULT-NEXT:                    '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.7', '%bb.2',
20# RESULT-NEXT:                    '%bb.2', '%bb.2', '%bb.2', '%bb.7' ]
21
22---
23name:            widget
24tracksRegLiveness: true
25jumpTable:
26  kind:            label-difference32
27  entries:
28    - id:              0
29      blocks:          [ '%bb.9', '%bb.5', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
30                         '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.6', '%bb.2',
31                         '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
32                         '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
33                         '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.2',
34                         '%bb.2', '%bb.2', '%bb.2', '%bb.2', '%bb.7', '%bb.2',
35                         '%bb.2', '%bb.2', '%bb.2', '%bb.7' ]
36body:             |
37  bb.0:
38    liveins: $w0, $w1, $x2, $x3, $x4, $w5, $w6
39
40    %0:gpr32 = COPY $w6
41    %1:gpr32 = COPY $w5
42    %2:gpr64common = COPY $x4
43    %3:gpr64 = COPY $x3
44    %4:gpr64common = COPY $x2
45    %5:gpr32common = COPY $w1
46    %6:gpr32 = COPY $w0
47    undef %7.sub_32:gpr64 = ORRWrs $wzr, %5, 0, implicit-def %7
48    %8:gpr64common = MOVaddrJT target-flags(aarch64-page) %jump-table.0, target-flags(aarch64-pageoff, aarch64-nc) %jump-table.0
49    %9:gpr32 = MOVi32imm 1
50    undef %10.sub_32:gpr64 = IMPLICIT_DEF
51
52  bb.1:
53
54  bb.2:
55    successors: %bb.3(0x0fbefbf0), %bb.4(0x70410410)
56
57    dead $wzr = SUBSWri %5, 39, 0, implicit-def $nzcv
58    Bcc 8, %bb.3, implicit killed $nzcv
59    B %bb.4
60
61  bb.3:
62    successors: %bb.11(0x00000000), %bb.2(0x80000000)
63
64    dead $wzr = SUBSWri %5, 64, 0, implicit-def $nzcv
65    Bcc 0, %bb.11, implicit killed $nzcv
66    B %bb.2
67
68  bb.4:
69    successors: %bb.9(0x01288b01), %bb.5(0x01288b01), %bb.2(0x11f46a91), %bb.6(0x23e8d524), %bb.7(0x47d1aa49)
70
71    early-clobber %11:gpr64, dead early-clobber %12:gpr64sp = JumpTableDest32 %8, %7, %jump-table.0
72    JUMP_TABLE_DEBUG_INFO 0
73    BR %11
74
75  bb.5:
76    B %bb.8
77
78  bb.6:
79    B %bb.2
80
81  bb.7:
82    B %bb.2
83
84  bb.8:
85    B %bb.8
86
87  bb.9:
88    TBZW %0, 0, %bb.1
89    B %bb.10
90
91  bb.10:
92    B %bb.1
93
94  bb.11:
95    BRK 1
96
97...
98