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 = "thumbv7m-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 13 define ptr @STRD_pre4(ptr %p, i32 %v) { unreachable } 14 define ptr @STRD_pre8(ptr %p, i32 %v) { unreachable } 15 define ptr @STRD_pre255(ptr %p, i32 %v) { unreachable } 16 define ptr @STRD_pre256(ptr %p, i32 %v) { unreachable } 17 define ptr @STRD_pre1020(ptr %p, i32 %v) { unreachable } 18 define ptr @STRD_pre1024(ptr %p, i32 %v) { unreachable } 19 define ptr @STRD_prem4(ptr %p, i32 %v) { unreachable } 20 define ptr @STRD_prem8(ptr %p, i32 %v) { unreachable } 21 define ptr @STRD_prem255(ptr %p, i32 %v) { unreachable } 22 define ptr @STRD_prem256(ptr %p, i32 %v) { unreachable } 23 define ptr @STRD_prem1020(ptr %p, i32 %v) { unreachable } 24 define ptr @STRD_prem1024(ptr %p, i32 %v) { unreachable } 25 26 define ptr @STR_post4(ptr %p, i32 %v) { unreachable } 27 define ptr @STR_post8(ptr %p, i32 %v) { unreachable } 28 define ptr @STR_post255(ptr %p, i32 %v) { unreachable } 29 define ptr @STR_post256(ptr %p, i32 %v) { unreachable } 30 31 define ptr @STRD_post4(ptr %p, i32 %v) { unreachable } 32 define ptr @STRD_post8(ptr %p, i32 %v) { unreachable } 33 define ptr @STRD_post255(ptr %p, i32 %v) { unreachable } 34 define ptr @STRD_post256(ptr %p, i32 %v) { unreachable } 35 define ptr @STRD_post1020(ptr %p, i32 %v) { unreachable } 36 define ptr @STRD_post1024(ptr %p, i32 %v) { unreachable } 37 define ptr @STRD_postm4(ptr %p, i32 %v) { unreachable } 38 define ptr @STRD_postm8(ptr %p, i32 %v) { unreachable } 39 define ptr @STRD_postm255(ptr %p, i32 %v) { unreachable } 40 define ptr @STRD_postm256(ptr %p, i32 %v) { unreachable } 41 define ptr @STRD_postm1020(ptr %p, i32 %v) { unreachable } 42 define ptr @STRD_postm1024(ptr %p, i32 %v) { unreachable } 43 44... 45--- 46name: STR_pre4 47alignment: 2 48tracksRegLiveness: true 49liveins: 50 - { reg: '$r0', virtual-reg: '' } 51 - { reg: '$r1', virtual-reg: '' } 52body: | 53 bb.0 (%ir-block.0): 54 liveins: $r0, $r1 55 56 ; CHECK-LABEL: name: STR_pre4 57 ; CHECK: liveins: $r0, $r1 58 ; CHECK-NEXT: {{ $}} 59 ; CHECK-NEXT: early-clobber $r0 = t2STR_PRE killed $r1, $r0, 4, 14 /* CC::al */, $noreg :: (store (s32)) 60 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 61 renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 62 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 63 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 64 65... 66--- 67name: STR_pre8 68alignment: 2 69tracksRegLiveness: true 70liveins: 71 - { reg: '$r0', virtual-reg: '' } 72 - { reg: '$r1', virtual-reg: '' } 73body: | 74 bb.0 (%ir-block.0): 75 liveins: $r0, $r1 76 77 ; CHECK-LABEL: name: STR_pre8 78 ; CHECK: liveins: $r0, $r1 79 ; CHECK-NEXT: {{ $}} 80 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 81 ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 82 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 83 renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 84 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 85 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 86 87... 88--- 89name: STR_pre255 90alignment: 2 91tracksRegLiveness: true 92liveins: 93 - { reg: '$r0', virtual-reg: '' } 94 - { reg: '$r1', virtual-reg: '' } 95body: | 96 bb.0 (%ir-block.0): 97 liveins: $r0, $r1 98 99 ; CHECK-LABEL: name: STR_pre255 100 ; CHECK: liveins: $r0, $r1 101 ; CHECK-NEXT: {{ $}} 102 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 103 ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 104 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 105 renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 106 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 107 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 108 109... 110--- 111name: STR_pre256 112alignment: 2 113tracksRegLiveness: true 114liveins: 115 - { reg: '$r0', virtual-reg: '' } 116 - { reg: '$r1', virtual-reg: '' } 117body: | 118 bb.0 (%ir-block.0): 119 liveins: $r0, $r1 120 121 ; CHECK-LABEL: name: STR_pre256 122 ; CHECK: liveins: $r0, $r1 123 ; CHECK-NEXT: {{ $}} 124 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 125 ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 126 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 127 renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 128 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 129 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 130 131... 132--- 133name: STRD_pre4 134alignment: 2 135tracksRegLiveness: true 136liveins: 137 - { reg: '$r0', virtual-reg: '' } 138 - { reg: '$r1', virtual-reg: '' } 139 - { reg: '$r2', virtual-reg: '' } 140body: | 141 bb.0 (%ir-block.0): 142 liveins: $r0, $r1, $r2 143 144 ; CHECK-LABEL: name: STRD_pre4 145 ; CHECK: liveins: $r0, $r1, $r2 146 ; CHECK-NEXT: {{ $}} 147 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 148 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 149 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 150 renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 151 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 152 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 153 154... 155--- 156name: STRD_pre8 157alignment: 2 158tracksRegLiveness: true 159liveins: 160 - { reg: '$r0', virtual-reg: '' } 161 - { reg: '$r1', virtual-reg: '' } 162 - { reg: '$r2', virtual-reg: '' } 163body: | 164 bb.0 (%ir-block.0): 165 liveins: $r0, $r1, $r2 166 167 ; CHECK-LABEL: name: STRD_pre8 168 ; CHECK: liveins: $r0, $r1, $r2 169 ; CHECK-NEXT: {{ $}} 170 ; CHECK-NEXT: $r0 = t2STRD_PRE killed renamable $r1, killed renamable $r2, killed $r0, 8, 14 /* CC::al */, $noreg :: (store (s64)) 171 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 172 renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 173 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 174 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 175 176... 177--- 178name: STRD_pre255 179alignment: 2 180tracksRegLiveness: true 181liveins: 182 - { reg: '$r0', virtual-reg: '' } 183 - { reg: '$r1', virtual-reg: '' } 184 - { reg: '$r2', virtual-reg: '' } 185body: | 186 bb.0 (%ir-block.0): 187 liveins: $r0, $r1, $r2 188 189 ; CHECK-LABEL: name: STRD_pre255 190 ; CHECK: liveins: $r0, $r1, $r2 191 ; CHECK-NEXT: {{ $}} 192 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 193 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 194 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 195 renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 196 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 197 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 198 199... 200--- 201name: STRD_pre256 202alignment: 2 203tracksRegLiveness: true 204liveins: 205 - { reg: '$r0', virtual-reg: '' } 206 - { reg: '$r1', virtual-reg: '' } 207 - { reg: '$r2', virtual-reg: '' } 208body: | 209 bb.0 (%ir-block.0): 210 liveins: $r0, $r1, $r2 211 212 ; CHECK-LABEL: name: STRD_pre256 213 ; CHECK: liveins: $r0, $r1, $r2 214 ; CHECK-NEXT: {{ $}} 215 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 216 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 217 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 218 renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 219 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 220 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 221 222... 223--- 224name: STRD_pre1020 225alignment: 2 226tracksRegLiveness: true 227liveins: 228 - { reg: '$r0', virtual-reg: '' } 229 - { reg: '$r1', virtual-reg: '' } 230 - { reg: '$r2', virtual-reg: '' } 231body: | 232 bb.0 (%ir-block.0): 233 liveins: $r0, $r1, $r2 234 235 ; CHECK-LABEL: name: STRD_pre1020 236 ; CHECK: liveins: $r0, $r1, $r2 237 ; CHECK-NEXT: {{ $}} 238 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg 239 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 240 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 241 renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg 242 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 243 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 244 245... 246--- 247name: STRD_pre1024 248alignment: 2 249tracksRegLiveness: true 250liveins: 251 - { reg: '$r0', virtual-reg: '' } 252 - { reg: '$r1', virtual-reg: '' } 253 - { reg: '$r2', virtual-reg: '' } 254body: | 255 bb.0 (%ir-block.0): 256 liveins: $r0, $r1, $r2 257 258 ; CHECK-LABEL: name: STRD_pre1024 259 ; CHECK: liveins: $r0, $r1, $r2 260 ; CHECK-NEXT: {{ $}} 261 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 262 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 263 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 264 renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 265 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 266 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 267 268... 269--- 270name: STRD_prem4 271alignment: 2 272tracksRegLiveness: true 273liveins: 274 - { reg: '$r0', virtual-reg: '' } 275 - { reg: '$r1', virtual-reg: '' } 276 - { reg: '$r2', virtual-reg: '' } 277body: | 278 bb.0 (%ir-block.0): 279 liveins: $r0, $r1, $r2 280 281 ; CHECK-LABEL: name: STRD_prem4 282 ; CHECK: liveins: $r0, $r1, $r2 283 ; CHECK-NEXT: {{ $}} 284 ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 285 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 286 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 287 renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 288 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 289 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 290 291... 292--- 293name: STRD_prem8 294alignment: 2 295tracksRegLiveness: true 296liveins: 297 - { reg: '$r0', virtual-reg: '' } 298 - { reg: '$r1', virtual-reg: '' } 299 - { reg: '$r2', virtual-reg: '' } 300body: | 301 bb.0 (%ir-block.0): 302 liveins: $r0, $r1, $r2 303 304 ; CHECK-LABEL: name: STRD_prem8 305 ; CHECK: liveins: $r0, $r1, $r2 306 ; CHECK-NEXT: {{ $}} 307 ; CHECK-NEXT: $r0 = t2STRD_PRE killed renamable $r1, killed renamable $r2, killed $r0, -8, 14 /* CC::al */, $noreg :: (store (s64)) 308 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 309 renamable $r0 = nuw t2SUBri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 310 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 311 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 312 313... 314--- 315name: STRD_prem255 316alignment: 2 317tracksRegLiveness: true 318liveins: 319 - { reg: '$r0', virtual-reg: '' } 320 - { reg: '$r1', virtual-reg: '' } 321 - { reg: '$r2', virtual-reg: '' } 322body: | 323 bb.0 (%ir-block.0): 324 liveins: $r0, $r1, $r2 325 326 ; CHECK-LABEL: name: STRD_prem255 327 ; CHECK: liveins: $r0, $r1, $r2 328 ; CHECK-NEXT: {{ $}} 329 ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 330 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 331 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 332 renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 333 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 334 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 335 336... 337--- 338name: STRD_prem256 339alignment: 2 340tracksRegLiveness: true 341liveins: 342 - { reg: '$r0', virtual-reg: '' } 343 - { reg: '$r1', virtual-reg: '' } 344 - { reg: '$r2', virtual-reg: '' } 345body: | 346 bb.0 (%ir-block.0): 347 liveins: $r0, $r1, $r2 348 349 ; CHECK-LABEL: name: STRD_prem256 350 ; CHECK: liveins: $r0, $r1, $r2 351 ; CHECK-NEXT: {{ $}} 352 ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 353 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 354 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 355 renamable $r0 = nuw t2SUBri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 356 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 357 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 358 359... 360--- 361name: STRD_prem1020 362alignment: 2 363tracksRegLiveness: true 364liveins: 365 - { reg: '$r0', virtual-reg: '' } 366 - { reg: '$r1', virtual-reg: '' } 367 - { reg: '$r2', virtual-reg: '' } 368body: | 369 bb.0 (%ir-block.0): 370 liveins: $r0, $r1, $r2 371 372 ; CHECK-LABEL: name: STRD_prem1020 373 ; CHECK: liveins: $r0, $r1, $r2 374 ; CHECK-NEXT: {{ $}} 375 ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg 376 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 377 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 378 renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg 379 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 380 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 381 382... 383--- 384name: STRD_prem1024 385alignment: 2 386tracksRegLiveness: true 387liveins: 388 - { reg: '$r0', virtual-reg: '' } 389 - { reg: '$r1', virtual-reg: '' } 390 - { reg: '$r2', virtual-reg: '' } 391body: | 392 bb.0 (%ir-block.0): 393 liveins: $r0, $r1, $r2 394 395 ; CHECK-LABEL: name: STRD_prem1024 396 ; CHECK: liveins: $r0, $r1, $r2 397 ; CHECK-NEXT: {{ $}} 398 ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 399 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 400 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 401 renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 402 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 403 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 404 405... 406 407--- 408name: STR_post4 409alignment: 2 410tracksRegLiveness: true 411liveins: 412 - { reg: '$r0', virtual-reg: '' } 413 - { reg: '$r1', virtual-reg: '' } 414body: | 415 bb.0 (%ir-block.0): 416 liveins: $r0, $r1 417 418 ; CHECK-LABEL: name: STR_post4 419 ; CHECK: liveins: $r0, $r1 420 ; CHECK-NEXT: {{ $}} 421 ; CHECK-NEXT: early-clobber $r0 = t2STR_POST killed $r1, $r0, 4, 14 /* CC::al */, $noreg :: (store (s32)) 422 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 423 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 424 renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 425 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 426 427... 428--- 429name: STR_post8 430alignment: 2 431tracksRegLiveness: true 432liveins: 433 - { reg: '$r0', virtual-reg: '' } 434 - { reg: '$r1', virtual-reg: '' } 435body: | 436 bb.0 (%ir-block.0): 437 liveins: $r0, $r1 438 439 ; CHECK-LABEL: name: STR_post8 440 ; CHECK: liveins: $r0, $r1 441 ; CHECK-NEXT: {{ $}} 442 ; CHECK-NEXT: early-clobber $r0 = t2STR_POST killed $r1, $r0, 8, 14 /* CC::al */, $noreg :: (store (s32)) 443 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 444 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 445 renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 446 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 447 448... 449--- 450name: STR_post255 451alignment: 2 452tracksRegLiveness: true 453liveins: 454 - { reg: '$r0', virtual-reg: '' } 455 - { reg: '$r1', virtual-reg: '' } 456body: | 457 bb.0 (%ir-block.0): 458 liveins: $r0, $r1 459 460 ; CHECK-LABEL: name: STR_post255 461 ; CHECK: liveins: $r0, $r1 462 ; CHECK-NEXT: {{ $}} 463 ; CHECK-NEXT: early-clobber $r0 = t2STR_POST killed $r1, $r0, 255, 14 /* CC::al */, $noreg :: (store (s32)) 464 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 465 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 466 renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 467 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 468 469... 470--- 471name: STR_post256 472alignment: 2 473tracksRegLiveness: true 474liveins: 475 - { reg: '$r0', virtual-reg: '' } 476 - { reg: '$r1', virtual-reg: '' } 477body: | 478 bb.0 (%ir-block.0): 479 liveins: $r0, $r1 480 481 ; CHECK-LABEL: name: STR_post256 482 ; CHECK: liveins: $r0, $r1 483 ; CHECK-NEXT: {{ $}} 484 ; CHECK-NEXT: t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 485 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 486 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 487 t2STRi12 killed renamable $r1, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s32)) 488 renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 489 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 490 491... 492--- 493name: STRD_post4 494alignment: 2 495tracksRegLiveness: true 496liveins: 497 - { reg: '$r0', virtual-reg: '' } 498 - { reg: '$r1', virtual-reg: '' } 499 - { reg: '$r2', virtual-reg: '' } 500body: | 501 bb.0 (%ir-block.0): 502 liveins: $r0, $r1, $r2 503 504 ; CHECK-LABEL: name: STRD_post4 505 ; CHECK: liveins: $r0, $r1, $r2 506 ; CHECK-NEXT: {{ $}} 507 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 4, 14 /* CC::al */, $noreg :: (store (s64)) 508 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 509 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 510 renamable $r0 = nuw t2ADDri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 511 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 512 513... 514--- 515name: STRD_post8 516alignment: 2 517tracksRegLiveness: true 518liveins: 519 - { reg: '$r0', virtual-reg: '' } 520 - { reg: '$r1', virtual-reg: '' } 521 - { reg: '$r2', virtual-reg: '' } 522body: | 523 bb.0 (%ir-block.0): 524 liveins: $r0, $r1, $r2 525 526 ; CHECK-LABEL: name: STRD_post8 527 ; CHECK: liveins: $r0, $r1, $r2 528 ; CHECK-NEXT: {{ $}} 529 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 8, 14 /* CC::al */, $noreg :: (store (s64)) 530 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 531 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 532 renamable $r0 = nuw t2ADDri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 533 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 534 535... 536--- 537name: STRD_post255 538alignment: 2 539tracksRegLiveness: true 540liveins: 541 - { reg: '$r0', virtual-reg: '' } 542 - { reg: '$r1', virtual-reg: '' } 543 - { reg: '$r2', virtual-reg: '' } 544body: | 545 bb.0 (%ir-block.0): 546 liveins: $r0, $r1, $r2 547 548 ; CHECK-LABEL: name: STRD_post255 549 ; CHECK: liveins: $r0, $r1, $r2 550 ; CHECK-NEXT: {{ $}} 551 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 552 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 553 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 554 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 555 renamable $r0 = nuw t2ADDri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 556 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 557 558... 559--- 560name: STRD_post256 561alignment: 2 562tracksRegLiveness: true 563liveins: 564 - { reg: '$r0', virtual-reg: '' } 565 - { reg: '$r1', virtual-reg: '' } 566 - { reg: '$r2', virtual-reg: '' } 567body: | 568 bb.0 (%ir-block.0): 569 liveins: $r0, $r1, $r2 570 571 ; CHECK-LABEL: name: STRD_post256 572 ; CHECK: liveins: $r0, $r1, $r2 573 ; CHECK-NEXT: {{ $}} 574 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 256, 14 /* CC::al */, $noreg :: (store (s64)) 575 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 576 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 577 renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 578 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 579 580... 581--- 582name: STRD_post1020 583alignment: 2 584tracksRegLiveness: true 585liveins: 586 - { reg: '$r0', virtual-reg: '' } 587 - { reg: '$r1', virtual-reg: '' } 588 - { reg: '$r2', virtual-reg: '' } 589body: | 590 bb.0 (%ir-block.0): 591 liveins: $r0, $r1, $r2 592 593 ; CHECK-LABEL: name: STRD_post1020 594 ; CHECK: liveins: $r0, $r1, $r2 595 ; CHECK-NEXT: {{ $}} 596 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 1020, 14 /* CC::al */, $noreg :: (store (s64)) 597 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 598 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 599 renamable $r0 = nuw t2ADDri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg 600 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 601 602... 603--- 604name: STRD_post1024 605alignment: 2 606tracksRegLiveness: true 607liveins: 608 - { reg: '$r0', virtual-reg: '' } 609 - { reg: '$r1', virtual-reg: '' } 610 - { reg: '$r2', virtual-reg: '' } 611body: | 612 bb.0 (%ir-block.0): 613 liveins: $r0, $r1, $r2 614 615 ; CHECK-LABEL: name: STRD_post1024 616 ; CHECK: liveins: $r0, $r1, $r2 617 ; CHECK-NEXT: {{ $}} 618 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 619 ; CHECK-NEXT: renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 620 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 621 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 622 renamable $r0 = nuw t2ADDri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 623 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 624 625... 626--- 627name: STRD_postm4 628alignment: 2 629tracksRegLiveness: true 630liveins: 631 - { reg: '$r0', virtual-reg: '' } 632 - { reg: '$r1', virtual-reg: '' } 633 - { reg: '$r2', virtual-reg: '' } 634body: | 635 bb.0 (%ir-block.0): 636 liveins: $r0, $r1, $r2 637 638 ; CHECK-LABEL: name: STRD_postm4 639 ; CHECK: liveins: $r0, $r1, $r2 640 ; CHECK-NEXT: {{ $}} 641 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -4, 14 /* CC::al */, $noreg :: (store (s64)) 642 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 643 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 644 renamable $r0 = nuw t2SUBri killed renamable $r0, 4, 14 /* CC::al */, $noreg, $noreg 645 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 646 647... 648--- 649name: STRD_postm8 650alignment: 2 651tracksRegLiveness: true 652liveins: 653 - { reg: '$r0', virtual-reg: '' } 654 - { reg: '$r1', virtual-reg: '' } 655 - { reg: '$r2', virtual-reg: '' } 656body: | 657 bb.0 (%ir-block.0): 658 liveins: $r0, $r1, $r2 659 660 ; CHECK-LABEL: name: STRD_postm8 661 ; CHECK: liveins: $r0, $r1, $r2 662 ; CHECK-NEXT: {{ $}} 663 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -8, 14 /* CC::al */, $noreg :: (store (s64)) 664 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 665 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 666 renamable $r0 = nuw t2SUBri killed renamable $r0, 8, 14 /* CC::al */, $noreg, $noreg 667 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 668 669... 670--- 671name: STRD_postm255 672alignment: 2 673tracksRegLiveness: true 674liveins: 675 - { reg: '$r0', virtual-reg: '' } 676 - { reg: '$r1', virtual-reg: '' } 677 - { reg: '$r2', virtual-reg: '' } 678body: | 679 bb.0 (%ir-block.0): 680 liveins: $r0, $r1, $r2 681 682 ; CHECK-LABEL: name: STRD_postm255 683 ; CHECK: liveins: $r0, $r1, $r2 684 ; CHECK-NEXT: {{ $}} 685 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 686 ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 687 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 688 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 689 renamable $r0 = nuw t2SUBri killed renamable $r0, 255, 14 /* CC::al */, $noreg, $noreg 690 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 691 692... 693--- 694name: STRD_postm256 695alignment: 2 696tracksRegLiveness: true 697liveins: 698 - { reg: '$r0', virtual-reg: '' } 699 - { reg: '$r1', virtual-reg: '' } 700 - { reg: '$r2', virtual-reg: '' } 701body: | 702 bb.0 (%ir-block.0): 703 liveins: $r0, $r1, $r2 704 705 ; CHECK-LABEL: name: STRD_postm256 706 ; CHECK: liveins: $r0, $r1, $r2 707 ; CHECK-NEXT: {{ $}} 708 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, 256, 14 /* CC::al */, $noreg :: (store (s64)) 709 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 710 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 711 renamable $r0 = nuw t2ADDri killed renamable $r0, 256, 14 /* CC::al */, $noreg, $noreg 712 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 713 714... 715--- 716name: STRD_postm1020 717alignment: 2 718tracksRegLiveness: true 719liveins: 720 - { reg: '$r0', virtual-reg: '' } 721 - { reg: '$r1', virtual-reg: '' } 722 - { reg: '$r2', virtual-reg: '' } 723body: | 724 bb.0 (%ir-block.0): 725 liveins: $r0, $r1, $r2 726 727 ; CHECK-LABEL: name: STRD_postm1020 728 ; CHECK: liveins: $r0, $r1, $r2 729 ; CHECK-NEXT: {{ $}} 730 ; CHECK-NEXT: $r0 = t2STRD_POST killed renamable $r1, killed renamable $r2, killed $r0, -1020, 14 /* CC::al */, $noreg :: (store (s64)) 731 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 732 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 733 renamable $r0 = nuw t2SUBri killed renamable $r0, 1020, 14 /* CC::al */, $noreg, $noreg 734 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 735 736... 737--- 738name: STRD_postm1024 739alignment: 2 740tracksRegLiveness: true 741liveins: 742 - { reg: '$r0', virtual-reg: '' } 743 - { reg: '$r1', virtual-reg: '' } 744 - { reg: '$r2', virtual-reg: '' } 745body: | 746 bb.0 (%ir-block.0): 747 liveins: $r0, $r1, $r2 748 749 ; CHECK-LABEL: name: STRD_postm1024 750 ; CHECK: liveins: $r0, $r1, $r2 751 ; CHECK-NEXT: {{ $}} 752 ; CHECK-NEXT: t2STRDi8 killed $r1, killed $r2, $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 753 ; CHECK-NEXT: renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 754 ; CHECK-NEXT: tBX_RET 14 /* CC::al */, $noreg, implicit $r0 755 t2STRDi8 killed renamable $r1, killed renamable $r2, renamable $r0, 0, 14 /* CC::al */, $noreg :: (store (s64)) 756 renamable $r0 = nuw t2SUBri killed renamable $r0, 1024, 14 /* CC::al */, $noreg, $noreg 757 tBX_RET 14 /* CC::al */, $noreg, implicit $r0 758 759... 760