855 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -o - %s -mtriple=aarch64 -mcpu=cortex-a55 -lsr-preferred-addressing-mode=preindexed -stop-after=aarch64-ldst-opt | FileCheck %s3 4---5name: 1-ldrwpre-ldrwui-merge6tracksRegLiveness: true7liveins:8 - { reg: '$x1' }9 - { reg: '$w0' }10 - { reg: '$w1' }11machineFunctionInfo:12 hasRedZone: false13body: |14 bb.0:15 liveins: $w0, $w1, $x116 ; CHECK-LABEL: name: 1-ldrwpre-ldrwui-merge17 ; CHECK: liveins: $w0, $w1, $x118 ; CHECK-NEXT: {{ $}}19 ; CHECK-NEXT: early-clobber $x1, renamable $w0, renamable $w2 = LDPWpre renamable $x1, 5 :: (load (s32))20 ; CHECK-NEXT: STPWi renamable $w0, killed renamable $w2, renamable $x1, 0 :: (store (s32))21 ; CHECK-NEXT: RET undef $lr22 early-clobber renamable $x1, renamable $w0 = LDRWpre killed renamable $x1, 20 :: (load (s32))23 renamable $w2 = LDRWui renamable $x1, 1 :: (load (s32))24 STRWui killed renamable $w0, renamable $x1, 0 :: (store (s32))25 STRWui killed renamable $w2, renamable $x1, 1 :: (store (s32))26 RET undef $lr27...28 29 30---31name: 2-ldrxpre-ldrxui-merge32tracksRegLiveness: true33liveins:34 - { reg: '$x1' }35 - { reg: '$x2' }36 - { reg: '$x3' }37machineFunctionInfo:38 hasRedZone: false39body: |40 bb.0:41 liveins: $x2, $x3, $x142 ; CHECK-LABEL: name: 2-ldrxpre-ldrxui-merge43 ; CHECK: liveins: $x1, $x2, $x344 ; CHECK-NEXT: {{ $}}45 ; CHECK-NEXT: early-clobber $x1, renamable $x2, renamable $x3 = LDPXpre renamable $x1, 3 :: (load (s64))46 ; CHECK-NEXT: STPXi renamable $x2, renamable $x3, renamable $x1, 0 :: (store (s64))47 ; CHECK-NEXT: RET undef $lr48 early-clobber renamable $x1, renamable $x2 = LDRXpre killed renamable $x1, 24 :: (load (s64))49 renamable $x3 = LDRXui renamable $x1, 1 :: (load (s64))50 STRXui killed renamable $x2, renamable $x1, 0 :: (store (s64))51 STRXui killed renamable $x3, renamable $x1, 1 :: (store (s64))52 RET undef $lr53...54 55 56---57name: 3-ldrspre-ldrsui-merge58tracksRegLiveness: true59liveins:60 - { reg: '$x1' }61 - { reg: '$s0' }62 - { reg: '$s1' }63machineFunctionInfo:64 hasRedZone: false65body: |66 bb.0:67 liveins: $s0, $s1, $x168 ; CHECK-LABEL: name: 3-ldrspre-ldrsui-merge69 ; CHECK: liveins: $s0, $s1, $x170 ; CHECK-NEXT: {{ $}}71 ; CHECK-NEXT: early-clobber $x1, renamable $s0, renamable $s1 = LDPSpre renamable $x1, 3 :: (load (s32))72 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))73 ; CHECK-NEXT: RET undef $lr74 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))75 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))76 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))77 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))78 RET undef $lr79...80 81 82---83name: 4-ldrqdre-ldrdui-merge84tracksRegLiveness: true85liveins:86 - { reg: '$x1' }87 - { reg: '$d0' }88 - { reg: '$d1' }89machineFunctionInfo:90 hasRedZone: false91body: |92 bb.0:93 liveins: $d0, $d1, $x194 ; CHECK-LABEL: name: 4-ldrqdre-ldrdui-merge95 ; CHECK: liveins: $d0, $d1, $x196 ; CHECK-NEXT: {{ $}}97 ; CHECK-NEXT: early-clobber $x1, renamable $d0, renamable $d1 = LDPDpre renamable $x1, 16 :: (load (s64))98 ; CHECK-NEXT: STPDi renamable $d0, renamable $d1, renamable $x1, 0 :: (store (s64))99 ; CHECK-NEXT: RET undef $lr100 early-clobber renamable $x1, renamable $d0 = LDRDpre killed renamable $x1, 128 :: (load (s64))101 renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))102 STRDui killed renamable $d0, renamable $x1, 0 :: (store (s64))103 STRDui killed renamable $d1, renamable $x1, 1 :: (store (s64))104 RET undef $lr105...106 107 108---109name: 5-ldrqpre-ldrqui-merge110alignment: 4111tracksRegLiveness: true112liveins:113 - { reg: '$x1' }114 - { reg: '$q0' }115 - { reg: '$q1' }116frameInfo:117 maxAlignment: 1118 maxCallFrameSize: 0119machineFunctionInfo:120 hasRedZone: false121body: |122 bb.0:123 liveins: $q0, $q1, $x1124 ; CHECK-LABEL: name: 5-ldrqpre-ldrqui-merge125 ; CHECK: liveins: $q0, $q1, $x1126 ; CHECK-NEXT: {{ $}}127 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, 3 :: (load (s128))128 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))129 ; CHECK-NEXT: RET undef $lr130 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 48 :: (load (s128))131 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))132 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))133 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))134 RET undef $lr135...136 137 138---139name: 6-ldrqui-ldrqpre-no-merge140alignment: 4141tracksRegLiveness: true142liveins:143 - { reg: '$x1' }144 - { reg: '$q0' }145 - { reg: '$q1' }146frameInfo:147 maxAlignment: 1148 maxCallFrameSize: 0149machineFunctionInfo:150 hasRedZone: false151body: |152 bb.0:153 liveins: $q0, $q1, $x1154 ; CHECK-LABEL: name: 6-ldrqui-ldrqpre-no-merge155 ; CHECK: liveins: $q0, $q1, $x1156 ; CHECK-NEXT: {{ $}}157 ; CHECK-NEXT: renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))158 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 48, implicit $w1, implicit $w1_hi :: (load (s128))159 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))160 ; CHECK-NEXT: RET undef $lr161 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))162 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 48 :: (load (s128))163 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))164 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))165 RET undef $lr166...167 168 169---170name: 7-ldrqpre-ldrqui-max-offset-merge171alignment: 4172tracksRegLiveness: true173liveins:174 - { reg: '$x1' }175 - { reg: '$q0' }176 - { reg: '$q1' }177frameInfo:178 maxAlignment: 1179 maxCallFrameSize: 0180machineFunctionInfo:181 hasRedZone: false182body: |183 bb.0:184 liveins: $q0, $q1, $x1185 ; CHECK-LABEL: name: 7-ldrqpre-ldrqui-max-offset-merge186 ; CHECK: liveins: $q0, $q1, $x1187 ; CHECK-NEXT: {{ $}}188 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, 15 :: (load (s128))189 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))190 ; CHECK-NEXT: RET undef $lr191 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 240 :: (load (s128))192 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))193 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))194 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))195 RET undef $lr196...197 198 199---200name: 8-ldrqpre-ldrqui-min-offset-merge201alignment: 4202tracksRegLiveness: true203liveins:204 - { reg: '$x1' }205 - { reg: '$q0' }206 - { reg: '$q1' }207frameInfo:208 maxAlignment: 1209 maxCallFrameSize: 0210machineFunctionInfo:211 hasRedZone: false212body: |213 bb.0:214 liveins: $q0, $q1, $x1215 ; CHECK-LABEL: name: 8-ldrqpre-ldrqui-min-offset-merge216 ; CHECK: liveins: $q0, $q1, $x1217 ; CHECK-NEXT: {{ $}}218 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, -16 :: (load (s128))219 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))220 ; CHECK-NEXT: RET undef $lr221 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, -256 :: (load (s128))222 renamable $q1 = LDRQui renamable $x1, 1 :: (load (s128))223 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))224 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))225 RET undef $lr226...227 228 229---230name: 9-ldrspre-ldrsui-mod-base-reg-no-merge231alignment: 4232tracksRegLiveness: true233liveins:234 - { reg: '$x0' }235 - { reg: '$x1' }236 - { reg: '$s0' }237 - { reg: '$s1' }238frameInfo:239 maxAlignment: 1240 maxCallFrameSize: 0241machineFunctionInfo:242 hasRedZone: false243body: |244 bb.0:245 liveins: $s0, $s1, $x0, $x1246 ; CHECK-LABEL: name: 9-ldrspre-ldrsui-mod-base-reg-no-merge247 ; CHECK: liveins: $s0, $s1, $x0, $x1248 ; CHECK-NEXT: {{ $}}249 ; CHECK-NEXT: dead early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 12, implicit $w1, implicit $w1_hi :: (load (s32))250 ; CHECK-NEXT: renamable $x1 = LDRXui renamable $x0, 1 :: (load (s64))251 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))252 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))253 ; CHECK-NEXT: RET undef $lr254 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))255 renamable $x1 = LDRXui renamable $x0, 1 :: (load (s64))256 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))257 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))258 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))259 RET undef $lr260...261 262 263---264name: 10-ldrspre-ldrsui-used-base-reg-no-merge265alignment: 4266tracksRegLiveness: true267liveins:268 - { reg: '$x0' }269 - { reg: '$x1' }270 - { reg: '$s0' }271 - { reg: '$s1' }272frameInfo:273 maxAlignment: 1274 maxCallFrameSize: 0275machineFunctionInfo:276 hasRedZone: false277body: |278 bb.0:279 liveins: $s0, $s1, $x0, $x1280 ; CHECK-LABEL: name: 10-ldrspre-ldrsui-used-base-reg-no-merge281 ; CHECK: liveins: $s0, $s1, $x0, $x1282 ; CHECK-NEXT: {{ $}}283 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 12, implicit $w1, implicit $w1_hi :: (load (s32))284 ; CHECK-NEXT: renamable $x0 = LDRXui renamable $x1, 1 :: (load (s64))285 ; CHECK-NEXT: STRXui renamable $x0, renamable $x0, 1 :: (store (s64))286 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))287 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))288 ; CHECK-NEXT: RET undef $lr289 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))290 renamable $x0 = LDRXui renamable $x1, 1 :: (load (s64))291 STRXui killed renamable $x0, renamable $x0, 1 :: (store (s64))292 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))293 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))294 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))295 RET undef $lr296...297 298 299---300name: 11-ldrqpre-ldrqpre-no-merge301alignment: 4302tracksRegLiveness: true303liveins:304 - { reg: '$x1' }305 - { reg: '$q0' }306 - { reg: '$q1' }307frameInfo:308 maxAlignment: 1309 maxCallFrameSize: 0310machineFunctionInfo:311 hasRedZone: false312body: |313 bb.0:314 liveins: $q0, $q1, $x1315 ; CHECK-LABEL: name: 11-ldrqpre-ldrqpre-no-merge316 ; CHECK: liveins: $q0, $q1, $x1317 ; CHECK-NEXT: {{ $}}318 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q0 = LDRQpre renamable $x1, 48, implicit $w1, implicit $w1_hi :: (load (s128))319 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q1 = LDRQpre renamable $x1, 1, implicit $w1, implicit $w1_hi :: (load (s128))320 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q0 = LDRQpre renamable $x1, 16, implicit $w1, implicit $w1_hi :: (load (s128))321 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $q1 = LDRQpre renamable $x1, 12, implicit $w1, implicit $w1_hi :: (load (s128))322 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 16, implicit $w1, implicit $w1_hi :: (load (s128))323 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q1 = LDRQpre renamable $x1, 16, implicit $w1, implicit $w1_hi :: (load (s128))324 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))325 ; CHECK-NEXT: RET undef $lr326 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 48 :: (load (s128))327 early-clobber renamable $x1, renamable $q1 = LDRQpre killed renamable $x1, 1 :: (load (s128))328 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 16 :: (load (s128))329 early-clobber renamable $x1, renamable $q1 = LDRQpre killed renamable $x1, 12 :: (load (s128))330 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 16 :: (load (s128))331 early-clobber renamable $x1, renamable $q1 = LDRQpre killed renamable $x1, 16 :: (load (s128))332 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))333 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))334 RET undef $lr335...336 337 338---339name: 12-ldrspre-ldrsui-no-merge340tracksRegLiveness: true341liveins:342 - { reg: '$x1' }343 - { reg: '$s0' }344 - { reg: '$s1' }345machineFunctionInfo:346 hasRedZone: false347body: |348 bb.0:349 liveins: $s0, $s1, $x1350 351 352 ; CHECK-LABEL: name: 12-ldrspre-ldrsui-no-merge353 ; CHECK: liveins: $s0, $s1, $x1354 ; CHECK-NEXT: {{ $}}355 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 12, implicit $w1, implicit $w1_hi :: (load (s32))356 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 2 :: (load (s32))357 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))358 ; CHECK-NEXT: RET undef $lr359 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 12 :: (load (s32))360 renamable $s1 = LDRSui renamable $x1, 2 :: (load (s32))361 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))362 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))363 RET undef $lr364...365 366 367---368name: 13-ldrqpre-ldrdui-no-merge369alignment: 4370tracksRegLiveness: true371liveins:372 - { reg: '$x1' }373 - { reg: '$q0' }374 - { reg: '$d1' }375frameInfo:376 maxAlignment: 1377 maxCallFrameSize: 0378machineFunctionInfo:379 hasRedZone: false380body: |381 bb.0:382 liveins: $q0, $d1, $x1383 ; CHECK-LABEL: name: 13-ldrqpre-ldrdui-no-merge384 ; CHECK: liveins: $d1, $q0, $x1385 ; CHECK-NEXT: {{ $}}386 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1, implicit $w1_hi :: (load (s128))387 ; CHECK-NEXT: renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))388 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))389 ; CHECK-NEXT: STRDui renamable $d1, renamable $x1, 1 :: (store (s64))390 ; CHECK-NEXT: RET undef $lr391 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))392 renamable $d1 = LDRDui renamable $x1, 1 :: (load (s64))393 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))394 STRDui killed renamable $d1, renamable $x1, 1 :: (store (s64))395 RET undef $lr396...397 398 399---400name: 14-ldrqpre-strqui-no-merge401alignment: 4402tracksRegLiveness: true403liveins:404 - { reg: '$x1' }405 - { reg: '$q0' }406 - { reg: '$q1' }407frameInfo:408 maxAlignment: 1409 maxCallFrameSize: 0410machineFunctionInfo:411 hasRedZone: false412body: |413 bb.0:414 liveins: $q0, $q1, $x1415 ; CHECK-LABEL: name: 14-ldrqpre-strqui-no-merge416 ; CHECK: liveins: $q0, $q1, $x1417 ; CHECK-NEXT: {{ $}}418 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1, implicit $w1_hi :: (load (s128))419 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))420 ; CHECK-NEXT: RET undef $lr421 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))422 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))423 RET undef $lr424...425 426 427---428name: 15-ldrqpre-ldrqui-same-dst-reg-no-merge429alignment: 4430tracksRegLiveness: true431liveins:432 - { reg: '$x1' }433 - { reg: '$q0' }434 - { reg: '$q1' }435frameInfo:436 maxAlignment: 1437 maxCallFrameSize: 0438machineFunctionInfo:439 hasRedZone: false440body: |441 bb.0:442 liveins: $q0, $x1443 ; CHECK-LABEL: name: 15-ldrqpre-ldrqui-same-dst-reg-no-merge444 ; CHECK: liveins: $q0, $q1, $x1445 ; CHECK-NEXT: {{ $}}446 ; CHECK-NEXT: early-clobber $x1, dead $q2, renamable $q0 = LDPQpre renamable $x1, 2 :: (load (s128))447 ; CHECK-NEXT: STRQui renamable $q0, renamable $x1, 0 :: (store (s128))448 ; CHECK-NEXT: RET undef $lr449 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))450 renamable $q0 = LDRQui renamable $x1, 1 :: (load (s128))451 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))452 RET undef $lr453...454 455 456---457name: 16-ldrqpre-ldrqui-diff-base-reg-no-merge458alignment: 4459tracksRegLiveness: true460liveins:461 - { reg: '$x1' }462 - { reg: '$x2' }463 - { reg: '$q0' }464 - { reg: '$q1' }465frameInfo:466 maxAlignment: 1467 maxCallFrameSize: 0468machineFunctionInfo:469 hasRedZone: false470body: |471 bb.0:472 liveins: $q0, $q1, $x1, $x2473 ; CHECK-LABEL: name: 16-ldrqpre-ldrqui-diff-base-reg-no-merge474 ; CHECK: liveins: $q0, $q1, $x1, $x2475 ; CHECK-NEXT: {{ $}}476 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1, implicit $w1_hi :: (load (s128))477 ; CHECK-NEXT: renamable $q1 = LDRQui renamable $x2, 1 :: (load (s128))478 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))479 ; CHECK-NEXT: RET undef $lr480 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))481 renamable $q1 = LDRQui renamable $x2, 1 :: (load (s128))482 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))483 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))484 RET undef $lr485...486 487 488---489name: 17-ldrqpre-ldurqi-merge490alignment: 4491tracksRegLiveness: true492liveins:493 - { reg: '$x1' }494 - { reg: '$q0' }495 - { reg: '$q1' }496frameInfo:497 maxAlignment: 1498 maxCallFrameSize: 0499machineFunctionInfo:500 hasRedZone: false501body: |502 bb.0:503 liveins: $q0, $q1, $x1504 ; CHECK-LABEL: name: 17-ldrqpre-ldurqi-merge505 ; CHECK: liveins: $q0, $q1, $x1506 ; CHECK-NEXT: {{ $}}507 ; CHECK-NEXT: early-clobber $x1, renamable $q0, renamable $q1 = LDPQpre renamable $x1, 2 :: (load (s128))508 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))509 ; CHECK-NEXT: RET undef $lr510 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))511 renamable $q1 = LDURQi renamable $x1, 16 :: (load (s128))512 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))513 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))514 RET undef $lr515...516 517 518---519name: 18-ldrqpre-ldurqi-no-merge520alignment: 4521tracksRegLiveness: true522liveins:523 - { reg: '$x1' }524 - { reg: '$q0' }525 - { reg: '$q1' }526frameInfo:527 maxAlignment: 1528 maxCallFrameSize: 0529machineFunctionInfo:530 hasRedZone: false531body: |532 bb.0:533 liveins: $q0, $q1, $x1534 ; CHECK-LABEL: name: 18-ldrqpre-ldurqi-no-merge535 ; CHECK: liveins: $q0, $q1, $x1536 ; CHECK-NEXT: {{ $}}537 ; CHECK-NEXT: early-clobber renamable $x1, renamable $q0 = LDRQpre renamable $x1, 32, implicit $w1, implicit $w1_hi :: (load (s128))538 ; CHECK-NEXT: renamable $q1 = LDURQi renamable $x1, 1 :: (load (s128))539 ; CHECK-NEXT: STPQi renamable $q0, renamable $q1, renamable $x1, 0 :: (store (s128))540 ; CHECK-NEXT: RET undef $lr541 early-clobber renamable $x1, renamable $q0 = LDRQpre killed renamable $x1, 32 :: (load (s128))542 renamable $q1 = LDURQi renamable $x1, 1 :: (load (s128))543 STRQui killed renamable $q0, renamable $x1, 0 :: (store (s128))544 STRQui killed renamable $q1, renamable $x1, 1 :: (store (s128))545 RET undef $lr546...547 548 549---550name: 19-ldrspre-ldrsui-max-merge551tracksRegLiveness: true552liveins:553 - { reg: '$x1' }554 - { reg: '$s0' }555 - { reg: '$s1' }556machineFunctionInfo:557 hasRedZone: false558body: |559 bb.0:560 liveins: $s0, $s1, $x1561 ; CHECK-LABEL: name: 19-ldrspre-ldrsui-max-merge562 ; CHECK: liveins: $s0, $s1, $x1563 ; CHECK-NEXT: {{ $}}564 ; CHECK-NEXT: early-clobber $x1, renamable $s0, renamable $s1 = LDPSpre renamable $x1, 63 :: (load (s32))565 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))566 ; CHECK-NEXT: RET undef $lr567 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 252 :: (load (s32))568 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))569 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))570 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))571 RET undef $lr572...573 574 575---576name: 20-ldrspre-ldrsui-unaligned-no-merge577tracksRegLiveness: true578liveins:579 - { reg: '$x1' }580 - { reg: '$s0' }581 - { reg: '$s1' }582machineFunctionInfo:583 hasRedZone: false584body: |585 bb.0:586 liveins: $s0, $s1, $x1587 ; CHECK-LABEL: name: 20-ldrspre-ldrsui-unaligned-no-merge588 ; CHECK: liveins: $s0, $s1, $x1589 ; CHECK-NEXT: {{ $}}590 ; CHECK-NEXT: early-clobber renamable $x1, renamable $s0 = LDRSpre renamable $x1, 251, implicit $w1, implicit $w1_hi :: (load (s32))591 ; CHECK-NEXT: renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))592 ; CHECK-NEXT: STPSi renamable $s0, renamable $s1, renamable $x1, 0 :: (store (s32))593 ; CHECK-NEXT: RET undef $lr594 early-clobber renamable $x1, renamable $s0 = LDRSpre killed renamable $x1, 251 :: (load (s32))595 renamable $s1 = LDRSui renamable $x1, 1 :: (load (s32))596 STRSui killed renamable $s0, renamable $x1, 0 :: (store (s32))597 STRSui killed renamable $s1, renamable $x1, 1 :: (store (s32))598 RET undef $lr599...600 601 602---603name: 21-ldrswpre-ldrswui-merge604tracksRegLiveness: true605liveins:606 - { reg: '$x0' }607 - { reg: '$x1' }608 - { reg: '$x2' }609machineFunctionInfo:610 hasRedZone: false611body: |612 bb.0:613 liveins: $x0, $x1, $x2614 ; CHECK-LABEL: name: 21-ldrswpre-ldrswui-merge615 ; CHECK: liveins: $x0, $x1, $x2616 ; CHECK-NEXT: {{ $}}617 ; CHECK-NEXT: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))618 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))619 ; CHECK-NEXT: RET undef $lr620 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))621 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))622 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))623 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))624 RET undef $lr625...626 627 628---629name: 22-ldrswpre-ldurswi-merge630tracksRegLiveness: true631liveins:632 - { reg: '$x0' }633 - { reg: '$x1' }634 - { reg: '$x2' }635machineFunctionInfo:636 hasRedZone: false637body: |638 bb.0:639 liveins: $x0, $x1, $x2640 ; CHECK-LABEL: name: 22-ldrswpre-ldurswi-merge641 ; CHECK: liveins: $x0, $x1, $x2642 ; CHECK-NEXT: {{ $}}643 ; CHECK-NEXT: early-clobber $x1, renamable $x0, renamable $x2 = LDPSWpre renamable $x1, 10 :: (load (s32))644 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))645 ; CHECK-NEXT: RET undef $lr646 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))647 renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))648 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))649 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))650 RET undef $lr651...652 653 654---655name: 23-ldrswui-ldrswpre-no-merge656tracksRegLiveness: true657liveins:658 - { reg: '$x0' }659 - { reg: '$x1' }660 - { reg: '$x2' }661machineFunctionInfo:662 hasRedZone: false663body: |664 bb.0:665 liveins: $x0, $x1, $x2666 ; CHECK-LABEL: name: 23-ldrswui-ldrswpre-no-merge667 ; CHECK: liveins: $x0, $x1, $x2668 ; CHECK-NEXT: {{ $}}669 ; CHECK-NEXT: renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))670 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1, implicit $w1_hi :: (load (s32))671 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))672 ; CHECK-NEXT: RET undef $lr673 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))674 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))675 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))676 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))677 RET undef $lr678...679 680 681---682name: 24-ldurswi-ldrswpre-no-merge683tracksRegLiveness: true684liveins:685 - { reg: '$x0' }686 - { reg: '$x1' }687 - { reg: '$x2' }688machineFunctionInfo:689 hasRedZone: false690body: |691 bb.0:692 liveins: $x0, $x1, $x2693 ; CHECK-LABEL: name: 24-ldurswi-ldrswpre-no-merge694 ; CHECK: liveins: $x0, $x1, $x2695 ; CHECK-NEXT: {{ $}}696 ; CHECK-NEXT: renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))697 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1, implicit $w1_hi :: (load (s32))698 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))699 ; CHECK-NEXT: RET undef $lr700 renamable $x2 = LDURSWi renamable $x1, 4 :: (load (s32))701 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))702 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))703 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))704 RET undef $lr705...706 707 708---709name: 25-ldrswpre-ldrswpre-no-merge710tracksRegLiveness: true711liveins:712 - { reg: '$x0' }713 - { reg: '$x1' }714 - { reg: '$x2' }715machineFunctionInfo:716 hasRedZone: false717body: |718 bb.0:719 liveins: $x0, $x1, $x2720 ; CHECK-LABEL: name: 25-ldrswpre-ldrswpre-no-merge721 ; CHECK: liveins: $x0, $x1, $x2722 ; CHECK-NEXT: {{ $}}723 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x0 = LDRSWpre renamable $x1, 48, implicit $w1, implicit $w1_hi :: (load (s32))724 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x2 = LDRSWpre renamable $x1, 1, implicit $w1, implicit $w1_hi :: (load (s32))725 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x0 = LDRSWpre renamable $x1, 16, implicit $w1, implicit $w1_hi :: (load (s32))726 ; CHECK-NEXT: early-clobber renamable $x1, dead renamable $x2 = LDRSWpre renamable $x1, 12, implicit $w1, implicit $w1_hi :: (load (s32))727 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 16, implicit $w1, implicit $w1_hi :: (load (s32))728 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x2 = LDRSWpre renamable $x1, 16, implicit $w1, implicit $w1_hi :: (load (s32))729 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))730 ; CHECK-NEXT: RET undef $lr731 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 48 :: (load (s32))732 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 1 :: (load (s32))733 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 16 :: (load (s32))734 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 12 :: (load (s32))735 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 16 :: (load (s32))736 early-clobber renamable $x1, renamable $x2 = LDRSWpre killed renamable $x1, 16 :: (load (s32))737 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))738 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))739 RET undef $lr740...741 742 743---744name: 26-ldrswpre-ldrwui-no-merge745tracksRegLiveness: true746liveins:747 - { reg: '$x0' }748 - { reg: '$x1' }749 - { reg: '$x2' }750machineFunctionInfo:751 hasRedZone: false752body: |753 bb.0:754 liveins: $x0, $x1, $x2755 ; CHECK-LABEL: name: 26-ldrswpre-ldrwui-no-merge756 ; CHECK: liveins: $x0, $x1, $x2757 ; CHECK-NEXT: {{ $}}758 ; CHECK-NEXT: early-clobber renamable $x1, renamable $x0 = LDRSWpre renamable $x1, 40, implicit $w1, implicit $w1_hi :: (load (s32))759 ; CHECK-NEXT: renamable $w2 = LDRWui renamable $x1, 1, implicit-def $x2 :: (load (s32))760 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))761 ; CHECK-NEXT: RET undef $lr762 early-clobber renamable $x1, renamable $x0 = LDRSWpre killed renamable $x1, 40 :: (load (s32))763 renamable $w2 = LDRWui renamable $x1, 1 :: (load (s32))764 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))765 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))766 RET undef $lr767...768 769 770---771name: 27-ldrwpre-ldrswui-no-merge772tracksRegLiveness: true773liveins:774 - { reg: '$x0' }775 - { reg: '$x1' }776 - { reg: '$x2' }777machineFunctionInfo:778 hasRedZone: false779body: |780 bb.0:781 liveins: $x0, $x1, $x2782 ; CHECK-LABEL: name: 27-ldrwpre-ldrswui-no-merge783 ; CHECK: liveins: $x0, $x1, $x2784 ; CHECK-NEXT: {{ $}}785 ; CHECK-NEXT: early-clobber renamable $x1, renamable $w0 = LDRWpre renamable $x1, 40, implicit $w1, implicit $w1_hi :: (load (s32))786 ; CHECK-NEXT: renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))787 ; CHECK-NEXT: STPXi renamable $x0, renamable $x2, renamable $x1, 0 :: (store (s64))788 ; CHECK-NEXT: RET undef $lr789 early-clobber renamable $x1, renamable $w0 = LDRWpre killed renamable $x1, 40 :: (load (s32))790 renamable $x2 = LDRSWui renamable $x1, 1 :: (load (s32))791 STRXui killed renamable $x0, renamable $x1, 0 :: (store (s64))792 STRXui killed renamable $x2, renamable $x1, 1 :: (store (s64))793 RET undef $lr794...795 796 797---798name: 28-ldrswpre-ldrwpre-no-merge799tracksRegLiveness: true800liveins:801 - { reg: '$x11' }802 - { reg: '$x13' }803machineFunctionInfo:804 hasRedZone: false805body: |806 bb.0:807 liveins: $x11, $x13808 ; CHECK-LABEL: name: 28-ldrswpre-ldrwpre-no-merge809 ; CHECK: liveins: $x11, $x13810 ; CHECK-NEXT: {{ $}}811 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 8, implicit $w11, implicit $w11_hi :: (load (s32), align 8)812 ; CHECK-NEXT: $x14 = EORXrs renamable $x11, renamable $x13, 0813 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 4, implicit $w11, implicit $w11_hi :: (load (s32))814 ; CHECK-NEXT: $x13 = EORXrs renamable $x11, renamable $x13, 0815 ; CHECK-NEXT: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))816 ; CHECK-NEXT: RET undef $lr817 early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 8 :: (load (s32), align 8)818 $x14 = EORXrs renamable $x11, renamable $x13, 0819 early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 4 :: (load (s32))820 $x13 = EORXrs renamable $x11, killed renamable $x13, 0821 STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))822 STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))823 RET undef $lr824...825 826 827---828name: 29-ldrwpre-ldrswpre-no-merge829tracksRegLiveness: true830liveins:831 - { reg: '$x11' }832 - { reg: '$x13' }833machineFunctionInfo:834 hasRedZone: false835body: |836 bb.0:837 liveins: $x11, $x13838 ; CHECK-LABEL: name: 29-ldrwpre-ldrswpre-no-merge839 ; CHECK: liveins: $x11, $x13840 ; CHECK-NEXT: {{ $}}841 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $w12 = LDRWpre renamable $x11, 8, implicit $w11, implicit $w11_hi :: (load (s32))842 ; CHECK-NEXT: $x14 = EORXrs renamable $x11, renamable $x13, 0843 ; CHECK-NEXT: early-clobber renamable $x11, dead renamable $x10 = LDRSWpre renamable $x11, 4, implicit $w11, implicit $w11_hi :: (load (s32), align 8)844 ; CHECK-NEXT: $x13 = EORXrs renamable $x11, renamable $x13, 0845 ; CHECK-NEXT: STPXi renamable $x13, renamable $x14, renamable $x11, 0 :: (store (s64))846 ; CHECK-NEXT: RET undef $lr847 early-clobber renamable $x11, renamable $w12 = LDRWpre killed renamable $x11, 8 :: (load (s32))848 $x14 = EORXrs renamable $x11, renamable $x13, 0849 early-clobber renamable $x11, renamable $x10 = LDRSWpre killed renamable $x11, 4 :: (load (s32), align 8)850 $x13 = EORXrs renamable $x11, killed renamable $x13, 0851 STRXui killed renamable $x13, renamable $x11, 0 :: (store (s64))852 STRXui killed renamable $x14, renamable $x11, 1 :: (store (s64))853 RET undef $lr854...855