Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / ARM / misched-branch-targets.mir
blobd828d9e5162731f9fb7120e6213f7f0ea35ae692
1 # RUN: llc -o - -run-pass=machine-scheduler -misched=shuffle %s | FileCheck %s
2 # RUN: llc -o - -run-pass=postmisched %s | FileCheck %s
4 # REQUIRES: asserts
5 # -misched=shuffle is only available with assertions enabled
7 --- |
8   target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64"
9   target triple = "thumbv8.1m.main-arm-none-eabi"
11   define i32 @foo_bti() #0 {
12   entry:
13     ret i32 0
14   }
16   define i32 @foo_pac() #0 {
17   entry:
18     ret i32 0
19   }
21   define i32 @foo_pacbti() #0 {
22   entry:
23     ret i32 0
24   }
26   define i32 @foo_setjmp() #0 {
27   entry:
28     ret i32 0
29   if.then:
30     ret i32 0
31   }
33   define i32 @foo_sg() #0 {
34   entry:
35     ret i32 0
36   }
38   declare i32 @setjmp(ptr noundef) #1
39   declare void @longjmp(ptr noundef, i32 noundef) #2
41   attributes #0 = { "frame-pointer"="all" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main" }
42   attributes #1 = { nounwind returns_twice "frame-pointer"="all" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main" }
43   attributes #2 = { noreturn nounwind "frame-pointer"="all" "target-cpu"="cortex-m55" "target-features"="+armv8.1-m.main" }
45 ...
46 ---
47 name:            foo_bti
48 tracksRegLiveness: true
49 body:             |
50   bb.0.entry:
51     liveins: $r0
53     t2BTI
54     renamable $r0, dead $cpsr = nsw tADDi8 killed renamable $r0, 1, 14 /* CC::al */, $noreg
55     tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0
57 ...
59 # CHECK-LABEL: name:            foo_bti
60 # CHECK:       body:
61 # CHECK-NEXT:   bb.0.entry:
62 # CHECK-NEXT:     liveins: $r0
63 # CHECK-NEXT:     {{^ +$}}
64 # CHECK-NEXT:     t2BTI
66 ---
67 name:            foo_pac
68 tracksRegLiveness: true
69 body:             |
70   bb.0.entry:
71     liveins: $r0, $lr, $r12
73     frame-setup t2PAC implicit-def $r12, implicit $lr, implicit $sp
74     renamable $r2 = nsw t2ADDri $r0, 3, 14 /* CC::al */, $noreg, $noreg
75     $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
76     $r7 = frame-setup tMOVr killed $sp, 14 /* CC::al */, $noreg
77     early-clobber $sp = frame-setup t2STR_PRE killed $r12, $sp, -4, 14 /* CC::al */, $noreg
78     $r12, $sp = frame-destroy t2LDR_POST $sp, 4, 14 /* CC::al */, $noreg
79     $sp = frame-destroy t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
80     t2AUT implicit $r12, implicit $lr, implicit $sp
81     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
83 ...
85 # CHECK-LABEL: name:            foo_pac
86 # CHECK:       body:
87 # CHECK-NEXT:    bb.0.entry:
88 # CHECK-NEXT:      liveins: $r0, $lr, $r12
89 # CHECK-NEXT:      {{^ +$}}
90 # CHECK-NEXT:      frame-setup t2PAC implicit-def $r12, implicit $lr, implicit $sp
92 ---
93 name:            foo_pacbti
94 tracksRegLiveness: true
95 body:             |
96   bb.0.entry:
97     liveins: $r0, $lr, $r12
99     frame-setup t2PACBTI implicit-def $r12, implicit $lr, implicit $sp
100     renamable $r2 = nsw t2ADDri $r0, 3, 14 /* CC::al */, $noreg, $noreg
101     $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r7, killed $lr
102     $r7 = frame-setup tMOVr killed $sp, 14 /* CC::al */, $noreg
103     early-clobber $sp = frame-setup t2STR_PRE killed $r12, $sp, -4, 14 /* CC::al */, $noreg
104     $r12, $sp = frame-destroy t2LDR_POST $sp, 4, 14 /* CC::al */, $noreg
105     $sp = frame-destroy t2LDMIA_UPD $sp, 14 /* CC::al */, $noreg, def $r7, def $lr
106     t2AUT implicit $r12, implicit $lr, implicit $sp
107     tBX_RET 14 /* CC::al */, $noreg, implicit $r0
111 # CHECK-LABEL: name:            foo_pacbti
112 # CHECK:       body:
113 # CHECK-NEXT:    bb.0.entry:
114 # CHECK-NEXT:      liveins: $r0, $lr, $r12
115 # CHECK-NEXT:      {{^ +$}}
116 # CHECK-NEXT:      frame-setup t2PACBTI implicit-def $r12, implicit $lr, implicit $sp
119 name:            foo_setjmp
120 tracksRegLiveness: true
121 body:             |
122   bb.0.entry:
123     successors: %bb.1
124     liveins: $lr
126     frame-setup tPUSH 14 /* CC::al */, $noreg, $r7, killed $lr, implicit-def $sp, implicit $sp
127     $r7 = frame-setup tMOVr $sp, 14 /* CC::al */, $noreg
128     $sp = frame-setup tSUBspi $sp, 40, 14 /* CC::al */, $noreg
129     renamable $r0 = tMOVr $sp, 14 /* CC::al */, $noreg
130     tBL 14 /* CC::al */, $noreg, @setjmp, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit-def $sp, implicit-def $r0
131     t2BTI
132     renamable $r2 = nsw t2ADDri $r0, 3, 14 /* CC::al */, $noreg, $noreg
133     tCMPi8 killed renamable $r0, 0, 14 /* CC::al */, $noreg, implicit-def $cpsr
134     t2IT 0, 2, implicit-def $itstate
135     renamable $r0 = tMOVi8 $noreg, 0, 0 /* CC::eq */, $cpsr, implicit $itstate
136     $sp = frame-destroy tADDspi $sp, 40, 0 /* CC::eq */, $cpsr, implicit $itstate
137     frame-destroy tPOP_RET 0 /* CC::eq */, killed $cpsr, def $r7, def $pc, implicit killed $r0, implicit $sp, implicit killed $itstate
139   bb.1.if.then:
140     renamable $r0 = tMOVr $sp, 14 /* CC::al */, $noreg
141     renamable $r1, dead $cpsr = tMOVi8 1, 14 /* CC::al */, $noreg
142     tBL 14 /* CC::al */, $noreg, @longjmp, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit killed $r1, implicit-def $sp
146 # CHECK-LABEL: name:            foo_setjmp
147 # CHECK:       body:
148 # CHECK:         tBL 14 /* CC::al */, $noreg, @setjmp, csr_aapcs, implicit-def dead $lr, implicit $sp, implicit killed $r0, implicit-def $sp, implicit-def $r0
149 # CHECK-NEXT:    t2BTI
152 name:            foo_sg
153 tracksRegLiveness: true
154 body:             |
155   bb.0.entry:
156     liveins: $r0
158     t2SG 14 /* CC::al */, $noreg
159     renamable $r0, dead $cpsr = nsw tADDi8 killed renamable $r0, 1, 14 /* CC::al */, $noreg
160     tBX_RET 14 /* CC::al */, $noreg, implicit killed $r0
164 # CHECK-LABEL: name:            foo_sg
165 # CHECK:       body:
166 # CHECK-NEXT:   bb.0.entry:
167 # CHECK-NEXT:     liveins: $r0
168 # CHECK-NEXT:     {{^ +$}}
169 # CHECK-NEXT:     t2SG