1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py 2# RUN: llc -run-pass=arm-ldst-opt %s -o - | FileCheck %s 3 4--- | 5 target datalayout = "e-m:e-p:32:32-Fi8-i64:64-v128:64:128-a:0:32-n32-S64" 6 target triple = "thumbv7a-none-unknown-eabi" 7 8 define ptr @STR_pre4(ptr %p, i32 %v) { unreachable } 9 define ptr @STR_pre8(ptr %p, i32 %v) { unreachable } 10 define ptr @STR_pre255(ptr %p, i32 %v) { unreachable } 11 define ptr @STR_pre256(ptr %p, i32 %v) { unreachable } 12 define ptr @STR_pre1024(ptr %p, i32 %v) { unreachable } 13 define ptr @STR_pre4095(ptr %p, i32 %v) { unreachable } 14 define ptr @STR_pre4096(ptr %p, i32 %v) { unreachable } 15 define ptr @STR_prem1024(ptr %p, i32 %v) { unreachable } 16 define ptr @STR_prem4095(ptr %p, i32 %v) { unreachable } 17 define ptr @STR_prem4096(ptr %p, i32 %v) { unreachable } 18 19 define ptr @STR_post4(ptr %p, i32 %v) { unreachable } 20 define ptr @STR_post8(ptr %p, i32 %v) { unreachable } 21 define ptr @STR_post255(ptr %p, i32 %v) { unreachable } 22 define ptr @STR_post256(ptr %p, i32 %v) { unreachable } 23 define ptr @STR_post1024(ptr %p, i32 %v) { unreachable } 24 define ptr @STR_post4095(ptr %p, i32 %v) { unreachable } 25 define ptr @STR_post4096(ptr %p, i32 %v) { unreachable } 26 define ptr @STR_postm1024(ptr %p, i32 %v) { unreachable } 27 define ptr @STR_postm4095(ptr %p, i32 %v) { unreachable } 28 define ptr @STR_postm4096(ptr %p, i32 %v) { unreachable } 29 30... 31--- 32name: STR_pre4 33alignment: 4 34tracksRegLiveness: true 35liveins: 36 - { reg: '$r0', virtual-reg: '' } 37 - { reg: '$r1', virtual-reg: '' } 38body: | 39 bb.0 (%ir-block.0): 40 liveins: $r0, $r1 41 42 ; CHECK-LABEL: name: STR_pre4 43 ; CHECK: liveins: $r0, $r1 44 ; CHECK: early-clobber $r0 = STR_PRE_IMM killed $r1, $r0, 4, 14 /* CC::al */, $noreg :: (store (s32)) 45 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 46 renamable $r0 = nuw ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 47 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 48 BX_RET 14 /* CC::al */, $noreg, implicit $r0 49 50... 51--- 52name: STR_pre8 53alignment: 4 54tracksRegLiveness: true 55liveins: 56 - { reg: '$r0', virtual-reg: '' } 57 - { reg: '$r1', virtual-reg: '' } 58body: | 59 bb.0 (%ir-block.0): 60 liveins: $r0, $r1 61 62 ; CHECK-LABEL: name: STR_pre8 63 ; CHECK: liveins: $r0, $r1 64 ; CHECK: renamable $r0 = nuw ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 65 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 66 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 67 renamable $r0 = nuw ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 68 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 69 BX_RET 14 /* CC::al */, $noreg, implicit $r0 70 71... 72--- 73name: STR_pre255 74alignment: 4 75tracksRegLiveness: true 76liveins: 77 - { reg: '$r0', virtual-reg: '' } 78 - { reg: '$r1', virtual-reg: '' } 79body: | 80 bb.0 (%ir-block.0): 81 liveins: $r0, $r1 82 83 ; CHECK-LABEL: name: STR_pre255 84 ; CHECK: liveins: $r0, $r1 85 ; CHECK: renamable $r0 = nuw ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 86 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 87 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 88 renamable $r0 = nuw ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 89 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 90 BX_RET 14 /* CC::al */, $noreg, implicit $r0 91 92... 93--- 94name: STR_pre256 95alignment: 4 96tracksRegLiveness: true 97liveins: 98 - { reg: '$r0', virtual-reg: '' } 99 - { reg: '$r1', virtual-reg: '' } 100body: | 101 bb.0 (%ir-block.0): 102 liveins: $r0, $r1 103 104 ; CHECK-LABEL: name: STR_pre256 105 ; CHECK: liveins: $r0, $r1 106 ; CHECK: renamable $r0 = nuw ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 107 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 108 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 109 renamable $r0 = nuw ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 110 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 111 BX_RET 14 /* CC::al */, $noreg, implicit $r0 112 113... 114--- 115name: STR_pre1024 116alignment: 4 117tracksRegLiveness: true 118liveins: 119 - { reg: '$r0', virtual-reg: '' } 120 - { reg: '$r1', virtual-reg: '' } 121body: | 122 bb.0 (%ir-block.0): 123 liveins: $r0, $r1 124 125 ; CHECK-LABEL: name: STR_pre1024 126 ; CHECK: liveins: $r0, $r1 127 ; CHECK: renamable $r0 = nuw ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 128 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 129 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 130 renamable $r0 = nuw ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 131 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 132 BX_RET 14 /* CC::al */, $noreg, implicit $r0 133 134... 135--- 136name: STR_pre4095 137alignment: 4 138tracksRegLiveness: true 139liveins: 140 - { reg: '$r0', virtual-reg: '' } 141 - { reg: '$r1', virtual-reg: '' } 142body: | 143 bb.0 (%ir-block.0): 144 liveins: $r0, $r1 145 146 ; CHECK-LABEL: name: STR_pre4095 147 ; CHECK: liveins: $r0, $r1 148 ; CHECK: renamable $r0 = nuw ADDri killed renamable $r0, 4095, 14 /* CC::al */, $noreg, $noreg 149 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 150 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 151 renamable $r0 = nuw ADDri killed renamable $r0, 4095, 14 /* CC::al */, $noreg, $noreg 152 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 153 BX_RET 14 /* CC::al */, $noreg, implicit $r0 154 155... 156--- 157name: STR_pre4096 158alignment: 4 159tracksRegLiveness: true 160liveins: 161 - { reg: '$r0', virtual-reg: '' } 162 - { reg: '$r1', virtual-reg: '' } 163body: | 164 bb.0 (%ir-block.0): 165 liveins: $r0, $r1 166 167 ; CHECK-LABEL: name: STR_pre4096 168 ; CHECK: liveins: $r0, $r1 169 ; CHECK: renamable $r0 = nuw ADDri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 170 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 171 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 172 renamable $r0 = nuw ADDri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 173 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 174 BX_RET 14 /* CC::al */, $noreg, implicit $r0 175 176... 177--- 178name: STR_prem1024 179alignment: 4 180tracksRegLiveness: true 181liveins: 182 - { reg: '$r0', virtual-reg: '' } 183 - { reg: '$r1', virtual-reg: '' } 184body: | 185 bb.0 (%ir-block.0): 186 liveins: $r0, $r1 187 188 ; CHECK-LABEL: name: STR_prem1024 189 ; CHECK: liveins: $r0, $r1 190 ; CHECK: renamable $r0 = nuw SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 191 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 192 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 193 renamable $r0 = nuw SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 194 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 195 BX_RET 14 /* CC::al */, $noreg, implicit $r0 196 197... 198--- 199name: STR_prem4095 200alignment: 4 201tracksRegLiveness: true 202liveins: 203 - { reg: '$r0', virtual-reg: '' } 204 - { reg: '$r1', virtual-reg: '' } 205body: | 206 bb.0 (%ir-block.0): 207 liveins: $r0, $r1 208 209 ; CHECK-LABEL: name: STR_prem4095 210 ; CHECK: liveins: $r0, $r1 211 ; CHECK: renamable $r0 = nuw SUBri killed renamable $r0, 4095, 14 /* CC::al */, $noreg, $noreg 212 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 213 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 214 renamable $r0 = nuw SUBri killed renamable $r0, 4095, 14 /* CC::al */, $noreg, $noreg 215 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 216 BX_RET 14 /* CC::al */, $noreg, implicit $r0 217 218... 219--- 220name: STR_prem4096 221alignment: 4 222tracksRegLiveness: true 223liveins: 224 - { reg: '$r0', virtual-reg: '' } 225 - { reg: '$r1', virtual-reg: '' } 226body: | 227 bb.0 (%ir-block.0): 228 liveins: $r0, $r1 229 230 ; CHECK-LABEL: name: STR_prem4096 231 ; CHECK: liveins: $r0, $r1 232 ; CHECK: renamable $r0 = nuw SUBri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 233 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 234 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 235 renamable $r0 = nuw SUBri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 236 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 237 BX_RET 14 /* CC::al */, $noreg, implicit $r0 238 239... 240 241--- 242name: STR_post4 243alignment: 4 244tracksRegLiveness: true 245liveins: 246 - { reg: '$r0', virtual-reg: '' } 247 - { reg: '$r1', virtual-reg: '' } 248body: | 249 bb.0 (%ir-block.0): 250 liveins: $r0, $r1 251 252 ; CHECK-LABEL: name: STR_post4 253 ; CHECK: liveins: $r0, $r1 254 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 4, 14 /* CC::al */, $noreg :: (store (s32)) 255 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 256 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 257 renamable $r0 = nuw ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 258 BX_RET 14 /* CC::al */, $noreg, implicit $r0 259 260... 261--- 262name: STR_post8 263alignment: 4 264tracksRegLiveness: true 265liveins: 266 - { reg: '$r0', virtual-reg: '' } 267 - { reg: '$r1', virtual-reg: '' } 268body: | 269 bb.0 (%ir-block.0): 270 liveins: $r0, $r1 271 272 ; CHECK-LABEL: name: STR_post8 273 ; CHECK: liveins: $r0, $r1 274 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 8, 14 /* CC::al */, $noreg :: (store (s32)) 275 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 276 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 277 renamable $r0 = nuw ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 278 BX_RET 14 /* CC::al */, $noreg, implicit $r0 279 280... 281--- 282name: STR_post255 283alignment: 4 284tracksRegLiveness: true 285liveins: 286 - { reg: '$r0', virtual-reg: '' } 287 - { reg: '$r1', virtual-reg: '' } 288body: | 289 bb.0 (%ir-block.0): 290 liveins: $r0, $r1 291 292 ; CHECK-LABEL: name: STR_post255 293 ; CHECK: liveins: $r0, $r1 294 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 255, 14 /* CC::al */, $noreg :: (store (s32)) 295 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 296 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 297 renamable $r0 = nuw ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 298 BX_RET 14 /* CC::al */, $noreg, implicit $r0 299 300... 301--- 302name: STR_post256 303alignment: 4 304tracksRegLiveness: true 305liveins: 306 - { reg: '$r0', virtual-reg: '' } 307 - { reg: '$r1', virtual-reg: '' } 308body: | 309 bb.0 (%ir-block.0): 310 liveins: $r0, $r1 311 312 ; CHECK-LABEL: name: STR_post256 313 ; CHECK: liveins: $r0, $r1 314 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 256, 14 /* CC::al */, $noreg :: (store (s32)) 315 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 316 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 317 renamable $r0 = nuw ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 318 BX_RET 14 /* CC::al */, $noreg, implicit $r0 319 320... 321--- 322name: STR_post1024 323alignment: 4 324tracksRegLiveness: true 325liveins: 326 - { reg: '$r0', virtual-reg: '' } 327 - { reg: '$r1', virtual-reg: '' } 328body: | 329 bb.0 (%ir-block.0): 330 liveins: $r0, $r1 331 332 ; CHECK-LABEL: name: STR_post1024 333 ; CHECK: liveins: $r0, $r1 334 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 1024, 14 /* CC::al */, $noreg :: (store (s32)) 335 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 336 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 337 renamable $r0 = nuw ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 338 BX_RET 14 /* CC::al */, $noreg, implicit $r0 339 340... 341--- 342name: STR_post4095 343alignment: 4 344tracksRegLiveness: true 345liveins: 346 - { reg: '$r0', virtual-reg: '' } 347 - { reg: '$r1', virtual-reg: '' } 348body: | 349 bb.0 (%ir-block.0): 350 liveins: $r0, $r1 351 352 ; CHECK-LABEL: name: STR_post4095 353 ; CHECK: liveins: $r0, $r1 354 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 2095, 14 /* CC::al */, $noreg :: (store (s32)) 355 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 356 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 357 renamable $r0 = nuw ADDri killed renamable $r0, 2095, 14 /* CC::al */, $noreg, $noreg 358 BX_RET 14 /* CC::al */, $noreg, implicit $r0 359 360... 361--- 362name: STR_post4096 363alignment: 4 364tracksRegLiveness: true 365liveins: 366 - { reg: '$r0', virtual-reg: '' } 367 - { reg: '$r1', virtual-reg: '' } 368body: | 369 bb.0 (%ir-block.0): 370 liveins: $r0, $r1 371 372 ; CHECK-LABEL: name: STR_post4096 373 ; CHECK: liveins: $r0, $r1 374 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 375 ; CHECK: renamable $r0 = nuw ADDri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 376 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 377 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 378 renamable $r0 = nuw ADDri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 379 BX_RET 14 /* CC::al */, $noreg, implicit $r0 380 381... 382--- 383name: STR_postm1024 384alignment: 4 385tracksRegLiveness: true 386liveins: 387 - { reg: '$r0', virtual-reg: '' } 388 - { reg: '$r1', virtual-reg: '' } 389body: | 390 bb.0 (%ir-block.0): 391 liveins: $r0, $r1 392 393 ; CHECK-LABEL: name: STR_postm1024 394 ; CHECK: liveins: $r0, $r1 395 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 5120, 14 /* CC::al */, $noreg :: (store (s32)) 396 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 397 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 398 renamable $r0 = nuw SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 399 BX_RET 14 /* CC::al */, $noreg, implicit $r0 400 401... 402--- 403name: STR_postm4095 404alignment: 4 405tracksRegLiveness: true 406liveins: 407 - { reg: '$r0', virtual-reg: '' } 408 - { reg: '$r1', virtual-reg: '' } 409body: | 410 bb.0 (%ir-block.0): 411 liveins: $r0, $r1 412 413 ; CHECK-LABEL: name: STR_postm4095 414 ; CHECK: liveins: $r0, $r1 415 ; CHECK: early-clobber $r0 = STR_POST_IMM killed $r1, $r0, $noreg, 6191, 14 /* CC::al */, $noreg :: (store (s32)) 416 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 417 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 418 renamable $r0 = nuw SUBri killed renamable $r0, 2095, 14 /* CC::al */, $noreg, $noreg 419 BX_RET 14 /* CC::al */, $noreg, implicit $r0 420 421... 422--- 423name: STR_postm4096 424alignment: 4 425tracksRegLiveness: true 426liveins: 427 - { reg: '$r0', virtual-reg: '' } 428 - { reg: '$r1', virtual-reg: '' } 429body: | 430 bb.0 (%ir-block.0): 431 liveins: $r0, $r1 432 433 ; CHECK-LABEL: name: STR_postm4096 434 ; CHECK: liveins: $r0, $r1 435 ; CHECK: STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 436 ; CHECK: renamable $r0 = nuw SUBri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 437 ; CHECK: BX_RET 14 /* CC::al */, $noreg, implicit $r0 438 STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 439 renamable $r0 = nuw SUBri killed renamable $r0, 4096, 14 /* CC::al */, $noreg, $noreg 440 BX_RET 14 /* CC::al */, $noreg, implicit $r0 441 442... 443