[MIParser] Set RegClassOrRegBank during instruction parsing
[llvm-complete.git] / test / CodeGen / AArch64 / ldst-opt-mte.mir
blobb44258abd887162455505dc4c841c6a4d26bfb15
1 # RUN: llc -mtriple=aarch64-none-linux-gnu -run-pass aarch64-ldst-opt  -verify-machineinstrs  -o - %s | FileCheck %s
2 ---
4 ### STG and its offset limits
6 # CHECK-LABEL: name: test_STG_post
7 # CHECK: STGPostIndex $x0, $x0, 7
8 name: test_STG_post
9 body: |
10   bb.0.entry:
11     liveins: $x0
13     STGOffset $x0, $x0, 0
14     $x0 = ADDXri $x0, 112, 0
15     RET_ReallyLR implicit $x0
16 ...
18 # CHECK-LABEL: name: test_STG_post_same_reg
19 # CHECK: STGPostIndex $x1, $x0, 7
20 name: test_STG_post_same_reg
21 body: |
22   bb.0.entry:
23     liveins: $x0, $x1
25     STGOffset $x1, $x0, 0
26     $x0 = ADDXri $x0, 112, 0
27     RET_ReallyLR implicit $x0
28 ...
30 # CHECK-LABEL: name: test_STG_post_unaligned
31 # CHECK:      STGOffset $x0, $x0, 0
32 # CHECK-NEXT: ADDXri $x0, 8, 0
33 name: test_STG_post_unaligned
34 body: |
35   bb.0.entry:
36     liveins: $x0
38     STGOffset $x0, $x0, 0
39     $x0 = ADDXri $x0, 8, 0
40     RET_ReallyLR implicit $x0
41 ...
43 # CHECK-LABEL: name: test_STG_post2
44 # CHECK: STGPostIndex $x0, $x0, -256
45 name: test_STG_post2
46 body: |
47   bb.0.entry:
48     liveins: $x0
50     STGOffset $x0, $x0, 0
51     $x0 = SUBXri $x0, 4096, 0
52     RET_ReallyLR implicit $x0
53 ...
55 # CHECK-LABEL: name: test_STG_post3
56 # CHECK:      STGOffset $x0, $x0, 0
57 # CHECK-NEXT: SUBXri $x0, 4112, 0
58 name: test_STG_post3
59 body: |
60   bb.0.entry:
61     liveins: $x0
63     STGOffset $x0, $x0, 0
64     $x0 = SUBXri $x0, 4112, 0
65     RET_ReallyLR implicit $x0
66 ...
68 # CHECK-LABEL: name: test_STG_post4
69 # CHECK: STGPostIndex $x0, $x0, 255
70 name: test_STG_post4
71 body: |
72   bb.0.entry:
73     liveins: $x0
75     STGOffset $x0, $x0, 0
76     $x0 = ADDXri $x0, 4080, 0
77     RET_ReallyLR implicit $x0
78 ...
80 # CHECK-LABEL: name: test_STG_post5
81 # CHECK:      STGOffset $x0, $x0, 0
82 # CHECK-NEXT: ADDXri $x0, 4096, 0
83 name: test_STG_post5
84 body: |
85   bb.0.entry:
86     liveins: $x0
88     STGOffset $x0, $x0, 0
89     $x0 = ADDXri $x0, 4096, 0
90     RET_ReallyLR implicit $x0
91 ...
93 ### The rest of ST*G variants.
95 # CHECK-LABEL: name: test_STZG_post
96 # CHECK: STZGPostIndex $x0, $x0, 7
97 name: test_STZG_post
98 body: |
99   bb.0.entry:
100     liveins: $x0
102     STZGOffset $x0, $x0, 0
103     $x0 = ADDXri $x0, 112, 0
104     RET_ReallyLR implicit $x0
107 # CHECK-LABEL: name: test_ST2G_post
108 # CHECK: ST2GPostIndex $x0, $x0, 7
109 name: test_ST2G_post
110 body: |
111   bb.0.entry:
112     liveins: $x0
114     ST2GOffset $x0, $x0, 0
115     $x0 = ADDXri $x0, 112, 0
116     RET_ReallyLR implicit $x0
119 # CHECK-LABEL: name: test_STZ2G_post
120 # CHECK: STZ2GPostIndex $x0, $x0, 7
121 name: test_STZ2G_post
122 body: |
123   bb.0.entry:
124     liveins: $x0
126     STZ2GOffset $x0, $x0, 0
127     $x0 = ADDXri $x0, 112, 0
128     RET_ReallyLR implicit $x0
131 ### STGP and its offset limits
133 # CHECK-LABEL: name: test_STGP_post
134 # CHECK: STGPpost $x1, $x2, $x0, 7
135 name: test_STGP_post
136 body: |
137   bb.0.entry:
138     liveins: $x0, $x1, $x2
140     STGPi $x1, $x2, $x0, 0
141     $x0 = ADDXri $x0, 112, 0
142     RET_ReallyLR implicit $x0
145 # CHECK-LABEL: name: test_STGP_post2
146 # CHECK: STGPpost $x1, $x2, $x0, -64
147 name: test_STGP_post2
148 body: |
149   bb.0.entry:
150     liveins: $x0, $x1, $x2
152     STGPi $x1, $x2, $x0, 0
153     $x0 = SUBXri $x0, 1024, 0
154     RET_ReallyLR implicit $x0
157 # CHECK-LABEL: name: test_STGP_post3
158 # CHECK:      STGPi $x1, $x2, $x0, 0
159 # CHECK-NEXT: SUBXri $x0, 1040, 0
160 name: test_STGP_post3
161 body: |
162   bb.0.entry:
163     liveins: $x0, $x1, $x2
165     STGPi $x1, $x2, $x0, 0
166     $x0 = SUBXri $x0, 1040, 0
167     RET_ReallyLR implicit $x0
170 # CHECK-LABEL: name: test_STGP_post4
171 # CHECK: STGPpost $x1, $x2, $x0, 63
172 name: test_STGP_post4
173 body: |
174   bb.0.entry:
175     liveins: $x0, $x1, $x2
177     STGPi $x1, $x2, $x0, 0
178     $x0 = ADDXri $x0, 1008, 0
179     RET_ReallyLR implicit $x0
182 # CHECK-LABEL: name: test_STGP_post5
183 # CHECK:      STGPi $x1, $x2, $x0, 0
184 # CHECK-NEXT: ADDXri $x0, 1024, 0
185 name: test_STGP_post5
186 body: |
187   bb.0.entry:
188     liveins: $x0, $x1, $x2
190     STGPi $x1, $x2, $x0, 0
191     $x0 = ADDXri $x0, 1024, 0
192     RET_ReallyLR implicit $x0
195 ### Pre-indexed forms
197 # CHECK-LABEL: name: test_STG_pre
198 # CHECK: STGPreIndex $x0, $x0, 10
199 name: test_STG_pre
200 body: |
201   bb.0.entry:
202     liveins: $x0
204     STGOffset $x0, $x0, 10
205     $x0 = ADDXri $x0, 160, 0
206     RET_ReallyLR implicit $x0
209 # CHECK-LABEL: name: test_STGP_pre
210 # CHECK: STGPpre $x1, $x2, $x0, 10
211 name: test_STGP_pre
212 body: |
213   bb.0.entry:
214     liveins: $x0, $x1, $x2
216     STGPi $x1, $x2, $x0, 10
217     $x0 = ADDXri $x0, 160, 0
218     RET_ReallyLR implicit $x0
221 ### Pre-indexed forms with add/sub coming before the store.
223 # CHECK-LABEL: name: test_STG_pre_back
224 # CHECK: STGPreIndex $x0, $x0, 2
225 name: test_STG_pre_back
226 body: |
227   bb.0.entry:
228     liveins: $x0
230     $x0 = ADDXri $x0, 32, 0
231     STGOffset $x0, $x0, 0
232     RET_ReallyLR implicit $x0
235 # CHECK-LABEL: name: test_STGP_pre_back
236 # CHECK: STGPpre $x1, $x2, $x0, -3
237 name: test_STGP_pre_back
238 body: |
239   bb.0.entry:
240     liveins: $x0, $x1, $x2
242     $x0 = SUBXri $x0, 48, 0
243     STGPi $x1, $x2, $x0, 0
244     RET_ReallyLR implicit $x0
247 ### STGP with source register == address register
249 # CHECK-LABEL: name: test_STGP_post_same_reg
250 # CHECK: STGPpost $x0, $x0, $x0, 7
251 name: test_STGP_post_same_reg
252 body: |
253   bb.0.entry:
254     liveins: $x0
256     STGPi $x0, $x0, $x0, 0
257     $x0 = ADDXri $x0, 112, 0
258     RET_ReallyLR implicit $x0
261 # CHECK-LABEL: name: test_STGP_pre_same_reg
262 # CHECK: STGPpre $x0, $x0, $x0, 7
263 name: test_STGP_pre_same_reg
264 body: |
265   bb.0.entry:
266     liveins: $x0
268     STGPi $x0, $x0, $x0, 7
269     $x0 = ADDXri $x0, 112, 0
270     RET_ReallyLR implicit $x0
273 # This case can not be merged because the source register is always read before writeback.
274 # CHECK-LABEL: name: test_STGP_pre_back_same_reg
275 # CHECK:      SUBXri $x0, 48, 0
276 # CHECK-NEXT: STGPi $x0, $x0, $x0, 0
277 name: test_STGP_pre_back_same_reg
278 body: |
279   bb.0.entry:
280     liveins: $x0
282     $x0 = SUBXri $x0, 48, 0
283     STGPi $x0, $x0, $x0, 0
284     RET_ReallyLR implicit $x0