[ARM] Fix for MVE load/store stack accesses
[llvm-core.git] / test / CodeGen / Thumb2 / mve-stacksplot.mir
blob4add5c4f9a547330b9cfa6a32403e024c5cabeab
1 # NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py
2 # RUN: llc -o - %s -mtriple=thumbv8.1m.main-arm-none-eabi -mattr=+mve.fp -run-pass=stack-protector -run-pass=prologepilog | FileCheck %s
3 ---
4 name: func0
5 tracksRegLiveness: true
6 stack:
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: '' }
11 body: |
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, $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, $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, $noreg :: (store 4 into %stack.1)
43     ; CHECK: $r0 = tMOVr killed $sp, 14, $noreg
44     ; CHECK: renamable $q2 = MVE_VLDRBU32 killed $r0, 16, 0, $noreg :: (load 4 from %stack.0 + 12)
45     ; CHECK: $r0 = t2LDRi12 $sp, 0, 14, $noreg :: (load 4 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
75     renamable $q2 = MVE_VLDRBU32 %stack.0, 12, 0, $noreg :: (load 4 from %stack.0 + 12)
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 ---
93 name: func1
94 tracksRegLiveness: true
95 stack:
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: '' }
104 body: |
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, $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 t2SUBri killed $sp, 1216, 14, $noreg, $noreg
120     ; CHECK: $sp = frame-setup tSUBspi $sp, 1, 14, $noreg
121     ; CHECK: frame-setup CFI_INSTRUCTION def_cfa_offset 1256
122     ; CHECK: $r0 = IMPLICIT_DEF
123     ; CHECK: $r1 = IMPLICIT_DEF
124     ; CHECK: $r2 = IMPLICIT_DEF
125     ; CHECK: $r3 = IMPLICIT_DEF
126     ; CHECK: $r4 = IMPLICIT_DEF
127     ; CHECK: $r5 = IMPLICIT_DEF
128     ; CHECK: $r6 = IMPLICIT_DEF
129     ; CHECK: $r7 = IMPLICIT_DEF
130     ; CHECK: $r8 = IMPLICIT_DEF
131     ; CHECK: $r9 = IMPLICIT_DEF
132     ; CHECK: $r10 = IMPLICIT_DEF
133     ; CHECK: $r11 = IMPLICIT_DEF
134     ; CHECK: $r12 = IMPLICIT_DEF
135     ; CHECK: $lr = IMPLICIT_DEF
136     ; CHECK: t2STRi12 killed $r0, $sp, 0, 14, $noreg :: (store 4 into %stack.2)
137     ; CHECK: $r0 = t2ADDri killed $sp, 1152, 14, $noreg, $noreg
138     ; CHECK: renamable $q2 = MVE_VLDRBU8 killed $r0, 52, 0, $noreg :: (load 4 from %stack.0)
139     ; CHECK: $r0 = t2LDRi12 $sp, 0, 14, $noreg :: (load 4 from %stack.2)
140     ; CHECK: KILL $r0
141     ; CHECK: KILL $r1
142     ; CHECK: KILL $r2
143     ; CHECK: KILL $r3
144     ; CHECK: KILL $r4
145     ; CHECK: KILL $r5
146     ; CHECK: KILL $r6
147     ; CHECK: KILL $r7
148     ; CHECK: KILL $r8
149     ; CHECK: KILL $r9
150     ; CHECK: KILL $r10
151     ; CHECK: KILL $r11
152     ; CHECK: KILL $r12
153     ; CHECK: KILL $lr
154     $r0 = IMPLICIT_DEF
155     $r1 = IMPLICIT_DEF
156     $r2 = IMPLICIT_DEF
157     $r3 = IMPLICIT_DEF
158     $r4 = IMPLICIT_DEF
159     $r5 = IMPLICIT_DEF
160     $r6 = IMPLICIT_DEF
161     $r7 = IMPLICIT_DEF
162     $r8 = IMPLICIT_DEF
163     $r9 = IMPLICIT_DEF
164     $r10 = IMPLICIT_DEF
165     $r11 = IMPLICIT_DEF
166     $r12 = IMPLICIT_DEF
167     $lr = IMPLICIT_DEF
169     renamable $q2 = MVE_VLDRBU8 %stack.0, 0, 0, $noreg :: (load 4 from %stack.0)
171     KILL $r0
172     KILL $r1
173     KILL $r2
174     KILL $r3
175     KILL $r4
176     KILL $r5
177     KILL $r6
178     KILL $r7
179     KILL $r8
180     KILL $r9
181     KILL $r10
182     KILL $r11
183     KILL $r12
184     KILL $lr