1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2# RUN: llc -o - %s -mtriple=thumbv8.1m.main-none-none-eabi -mattr=+mve.fp -run-pass=stack-protector -run-pass=prologepilog | FileCheck %s
3---
4name: func0
5tracksRegLiveness: true
6stack:
7  - { id: 0, name: '', type: default, offset: 0, size: 16, alignment: 4,
8      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
9      local-offset: -16, debug-info-variable: '', debug-info-expression: '',
10      debug-info-location: '' }
11body: |
12  bb.0:
13    ; CHECK-LABEL: name: func0
14    ; CHECK: liveins: $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $lr
15    ; CHECK: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $r7, killed $r8, killed $r9, killed $r10, killed $r11, killed $lr
16    ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 36
17    ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
18    ; CHECK: frame-setup CFI_INSTRUCTION offset $r11, -8
19    ; CHECK: frame-setup CFI_INSTRUCTION offset $r10, -12
20    ; CHECK: frame-setup CFI_INSTRUCTION offset $r9, -16
21    ; CHECK: frame-setup CFI_INSTRUCTION offset $r8, -20
22    ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -24
23    ; CHECK: frame-setup CFI_INSTRUCTION offset $r6, -28
24    ; CHECK: frame-setup CFI_INSTRUCTION offset $r5, -32
25    ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -36
26    ; CHECK: $sp = frame-setup tSUBspi $sp, 5, 14 /* CC::al */, $noreg
27    ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 56
28    ; CHECK: $r0 = IMPLICIT_DEF
29    ; CHECK: $r1 = IMPLICIT_DEF
30    ; CHECK: $r2 = IMPLICIT_DEF
31    ; CHECK: $r3 = IMPLICIT_DEF
32    ; CHECK: $r4 = IMPLICIT_DEF
33    ; CHECK: $r5 = IMPLICIT_DEF
34    ; CHECK: $r6 = IMPLICIT_DEF
35    ; CHECK: $r7 = IMPLICIT_DEF
36    ; CHECK: $r8 = IMPLICIT_DEF
37    ; CHECK: $r9 = IMPLICIT_DEF
38    ; CHECK: $r10 = IMPLICIT_DEF
39    ; CHECK: $r11 = IMPLICIT_DEF
40    ; CHECK: $r12 = IMPLICIT_DEF
41    ; CHECK: $lr = IMPLICIT_DEF
42    ; CHECK: t2STRi12 killed $r0, $sp, 0, 14 /* CC::al */, $noreg :: (store (s32) into %stack.1)
43    ; CHECK: $r0 = tMOVr killed $sp, 14 /* CC::al */, $noreg
44    ; CHECK: renamable $q2 = MVE_VLDRBU32 killed $r0, 16, 0, $noreg, $noreg :: (load (s32) from %stack.0 + 12)
45    ; CHECK: $r0 = t2LDRi12 $sp, 0, 14 /* CC::al */, $noreg :: (load (s32) from %stack.1)
46    ; CHECK: KILL $r0
47    ; CHECK: KILL $r1
48    ; CHECK: KILL $r2
49    ; CHECK: KILL $r3
50    ; CHECK: KILL $r4
51    ; CHECK: KILL $r5
52    ; CHECK: KILL $r6
53    ; CHECK: KILL $r7
54    ; CHECK: KILL $r8
55    ; CHECK: KILL $r9
56    ; CHECK: KILL $r10
57    ; CHECK: KILL $r11
58    ; CHECK: KILL $r12
59    ; CHECK: KILL $lr
60    $r0 = IMPLICIT_DEF
61    $r1 = IMPLICIT_DEF
62    $r2 = IMPLICIT_DEF
63    $r3 = IMPLICIT_DEF
64    $r4 = IMPLICIT_DEF
65    $r5 = IMPLICIT_DEF
66    $r6 = IMPLICIT_DEF
67    $r7 = IMPLICIT_DEF
68    $r8 = IMPLICIT_DEF
69    $r9 = IMPLICIT_DEF
70    $r10 = IMPLICIT_DEF
71    $r11 = IMPLICIT_DEF
72    $r12 = IMPLICIT_DEF
73    $lr = IMPLICIT_DEF
74
75    renamable $q2 = MVE_VLDRBU32 %stack.0, 12, 0, $noreg, $noreg :: (load (s32) from %stack.0 + 12)
76
77    KILL $r0
78    KILL $r1
79    KILL $r2
80    KILL $r3
81    KILL $r4
82    KILL $r5
83    KILL $r6
84    KILL $r7
85    KILL $r8
86    KILL $r9
87    KILL $r10
88    KILL $r11
89    KILL $r12
90    KILL $lr
91...
92---
93name: func1
94tracksRegLiveness: true
95stack:
96  - { id: 0, name: '', type: default, offset: 0, size: 16, alignment: 4,
97      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
98      local-offset: -1200, debug-info-variable: '', debug-info-expression: '',
99      debug-info-location: '' }
100  - { id: 1, name: '', type: default, offset: 0, size: 1200, alignment: 4,
101      stack-id: default, callee-saved-register: '', callee-saved-restored: true,
102      local-offset: -1200, debug-info-variable: '', debug-info-expression: '',
103      debug-info-location: '' }
104body: |
105  bb.0:
106    ; CHECK-LABEL: name: func1
107    ; CHECK: liveins: $r4, $r5, $r6, $r7, $r8, $r9, $r10, $r11, $lr
108    ; CHECK: $sp = frame-setup t2STMDB_UPD $sp, 14 /* CC::al */, $noreg, killed $r4, killed $r5, killed $r6, killed $r7, killed $r8, killed $r9, killed $r10, killed $r11, killed $lr
109    ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 36
110    ; CHECK: frame-setup CFI_INSTRUCTION offset $lr, -4
111    ; CHECK: frame-setup CFI_INSTRUCTION offset $r11, -8
112    ; CHECK: frame-setup CFI_INSTRUCTION offset $r10, -12
113    ; CHECK: frame-setup CFI_INSTRUCTION offset $r9, -16
114    ; CHECK: frame-setup CFI_INSTRUCTION offset $r8, -20
115    ; CHECK: frame-setup CFI_INSTRUCTION offset $r7, -24
116    ; CHECK: frame-setup CFI_INSTRUCTION offset $r6, -28
117    ; CHECK: frame-setup CFI_INSTRUCTION offset $r5, -32
118    ; CHECK: frame-setup CFI_INSTRUCTION offset $r4, -36
119    ; CHECK: $sp = frame-setup t2SUBspImm12 killed $sp, 1220, 14 /* CC::al */, $noreg
120    ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 1256
121    ; CHECK: $r0 = IMPLICIT_DEF
122    ; CHECK: $r1 = IMPLICIT_DEF
123    ; CHECK: $r2 = IMPLICIT_DEF
124    ; CHECK: $r3 = IMPLICIT_DEF
125    ; CHECK: $r4 = IMPLICIT_DEF
126    ; CHECK: $r5 = IMPLICIT_DEF
127    ; CHECK: $r6 = IMPLICIT_DEF
128    ; CHECK: $r7 = IMPLICIT_DEF
129    ; CHECK: $r8 = IMPLICIT_DEF
130    ; CHECK: $r9 = IMPLICIT_DEF
131    ; CHECK: $r10 = IMPLICIT_DEF
132    ; CHECK: $r11 = IMPLICIT_DEF
133    ; CHECK: $r12 = IMPLICIT_DEF
134    ; CHECK: $lr = IMPLICIT_DEF
135    ; CHECK: t2STRi12 killed $r0, $sp, 0, 14 /* CC::al */, $noreg :: (store (s32) into %stack.2)
136    ; CHECK: $r0 = t2ADDri killed $sp, 1152, 14 /* CC::al */, $noreg, $noreg
137    ; CHECK: renamable $q2 = MVE_VLDRBU8 killed $r0, 52, 0, $noreg, $noreg :: (load (s32) from %stack.0)
138    ; CHECK: $r0 = t2LDRi12 $sp, 0, 14 /* CC::al */, $noreg :: (load (s32) from %stack.2)
139    ; CHECK: KILL $r0
140    ; CHECK: KILL $r1
141    ; CHECK: KILL $r2
142    ; CHECK: KILL $r3
143    ; CHECK: KILL $r4
144    ; CHECK: KILL $r5
145    ; CHECK: KILL $r6
146    ; CHECK: KILL $r7
147    ; CHECK: KILL $r8
148    ; CHECK: KILL $r9
149    ; CHECK: KILL $r10
150    ; CHECK: KILL $r11
151    ; CHECK: KILL $r12
152    ; CHECK: KILL $lr
153    $r0 = IMPLICIT_DEF
154    $r1 = IMPLICIT_DEF
155    $r2 = IMPLICIT_DEF
156    $r3 = IMPLICIT_DEF
157    $r4 = IMPLICIT_DEF
158    $r5 = IMPLICIT_DEF
159    $r6 = IMPLICIT_DEF
160    $r7 = IMPLICIT_DEF
161    $r8 = IMPLICIT_DEF
162    $r9 = IMPLICIT_DEF
163    $r10 = IMPLICIT_DEF
164    $r11 = IMPLICIT_DEF
165    $r12 = IMPLICIT_DEF
166    $lr = IMPLICIT_DEF
167
168    renamable $q2 = MVE_VLDRBU8 %stack.0, 0, 0, $noreg, $noreg :: (load (s32) from %stack.0)
169
170    KILL $r0
171    KILL $r1
172    KILL $r2
173    KILL $r3
174    KILL $r4
175    KILL $r5
176    KILL $r6
177    KILL $r7
178    KILL $r8
179    KILL $r9
180    KILL $r10
181    KILL $r11
182    KILL $r12
183    KILL $lr
184...
185