387 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -run-pass=aarch64-ldst-opt -verify-machineinstrs %s -o - | FileCheck %s3 4--- |5 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"6 target triple = "aarch64-none-linux-gnu"7 8 ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable vscale_range(1,16)9 define dso_local void @test(ptr noundef captures(none) %data) local_unnamed_addr #0 {10 entry:11 br i1 undef, label %while.cond.preheader, label %for.body.preheader12 13 for.body.preheader: ; preds = %entry14 br label %for.body15 16 while.cond.preheader.loopexit: ; preds = %for.body17 br label %while.cond.preheader18 19 while.cond.preheader: ; preds = %while.cond.preheader.loopexit, %entry20 br i1 undef, label %while.body.lr.ph.lr.ph, label %for.cond28.preheader21 22 while.body.lr.ph.lr.ph: ; preds = %while.cond.preheader23 br label %while.body.preheader24 25 for.body: ; preds = %for.body, %for.body.preheader26 br i1 undef, label %for.body, label %while.cond.preheader.loopexit27 28 for.cond28.preheader: ; preds = %if.then, %if.end, %while.cond.preheader29 br i1 undef, label %for.end45, label %for.body36.preheader30 31 for.body36.preheader: ; preds = %for.cond28.preheader32 br label %for.body3633 34 while.body: ; preds = %if.end, %while.body.preheader35 br i1 undef, label %if.end, label %if.then36 37 if.then: ; preds = %while.body38 br i1 undef, label %while.body.preheader, label %for.cond28.preheader39 40 while.body.preheader: ; preds = %if.then, %while.body.lr.ph.lr.ph41 br label %while.body42 43 if.end: ; preds = %while.body44 br i1 undef, label %for.cond28.preheader, label %while.body45 46 for.body36: ; preds = %for.body36.preheader, %for.body3647 br i1 undef, label %for.body36, label %for.end4548 49 for.end45: ; preds = %for.body36, %for.cond28.preheader50 ret void51 }52 53...54---55name: test56alignment: 1657exposesReturnsTwice: false58legalized: false59regBankSelected: false60selected: false61failedISel: false62tracksRegLiveness: true63hasWinCFI: false64noPhis: true65isSSA: false66noVRegs: true67hasFakeUses: false68callsEHReturn: false69callsUnwindInit: false70hasEHContTarget: false71hasEHScopes: false72hasEHFunclets: false73isOutlined: false74debugInstrRef: false75failsVerification: false76tracksDebugUserValues: true77registers: []78liveins:79 - { reg: '$x0', virtual-reg: '' }80frameInfo:81 isFrameAddressTaken: false82 isReturnAddressTaken: false83 hasStackMap: false84 hasPatchPoint: false85 stackSize: 086 offsetAdjustment: 087 maxAlignment: 188 adjustsStack: false89 hasCalls: false90 stackProtector: ''91 functionContext: ''92 maxCallFrameSize: 093 cvBytesOfCalleeSavedRegisters: 094 hasOpaqueSPAdjustment: false95 hasVAStart: false96 hasMustTailInVarArgFunc: false97 hasTailCall: false98 isCalleeSavedInfoValid: true99 localFrameSize: 0100 savePoint: []101 restorePoint: []102fixedStack: []103stack: []104entry_values: []105callSites: []106debugValueSubstitutions: []107constants: []108machineFunctionInfo:109 hasRedZone: false110body: |111 ; CHECK-LABEL: name: test112 ; CHECK: bb.0.entry:113 ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.5(0x40000000)114 ; CHECK-NEXT: liveins: $x0115 ; CHECK-NEXT: {{ $}}116 ; CHECK-NEXT: renamable $w8 = LDRBBui renamable $x0, 4117 ; CHECK-NEXT: TBNZW killed renamable $w8, 3, %bb.5118 ; CHECK-NEXT: {{ $}}119 ; CHECK-NEXT: bb.1:120 ; CHECK-NEXT: successors: %bb.2(0x80000000)121 ; CHECK-NEXT: liveins: $x0122 ; CHECK-NEXT: {{ $}}123 ; CHECK-NEXT: renamable $w11 = MOVZWi 1, 0124 ; CHECK-NEXT: renamable $w9 = MOVZWi 1, 0125 ; CHECK-NEXT: renamable $w8 = MOVZWi 2, 0, implicit-def $x8126 ; CHECK-NEXT: {{ $}}127 ; CHECK-NEXT: bb.2.while.cond.preheader:128 ; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.8(0x20000000)129 ; CHECK-NEXT: liveins: $w9, $w11, $x0, $x8130 ; CHECK-NEXT: {{ $}}131 ; CHECK-NEXT: dead $wzr = SUBSWri renamable $w11, 299, 0, implicit-def $nzcv132 ; CHECK-NEXT: Bcc 8, %bb.8, implicit $nzcv133 ; CHECK-NEXT: {{ $}}134 ; CHECK-NEXT: bb.3.while.cond.preheader:135 ; CHECK-NEXT: successors: %bb.4(0x55555555), %bb.8(0x2aaaaaab)136 ; CHECK-NEXT: liveins: $w9, $x0, $x8137 ; CHECK-NEXT: {{ $}}138 ; CHECK-NEXT: renamable $x10 = nuw ADDXrx renamable $x0, renamable $w9, 18139 ; CHECK-NEXT: renamable $w11 = LDRWui renamable $x10, 0140 ; CHECK-NEXT: TBZW killed renamable $w11, 3, %bb.8141 ; CHECK-NEXT: {{ $}}142 ; CHECK-NEXT: bb.4:143 ; CHECK-NEXT: successors: %bb.14(0x80000000)144 ; CHECK-NEXT: liveins: $w9, $x0, $x8, $x10145 ; CHECK-NEXT: {{ $}}146 ; CHECK-NEXT: renamable $w9 = ORRWrs $wzr, killed renamable $w9, 0, implicit-def $x9147 ; CHECK-NEXT: B %bb.14148 ; CHECK-NEXT: {{ $}}149 ; CHECK-NEXT: bb.5.for.body.preheader:150 ; CHECK-NEXT: successors: %bb.6(0x80000000)151 ; CHECK-NEXT: liveins: $x0152 ; CHECK-NEXT: {{ $}}153 ; CHECK-NEXT: renamable $x10 = ADDXri renamable $x0, 8, 0154 ; CHECK-NEXT: renamable $w9 = MOVZWi 1, 0155 ; CHECK-NEXT: renamable $w12 = MOVZWi 2, 0, implicit-def $x12156 ; CHECK-NEXT: $x11 = ORRXrs $xzr, $x10, 0157 ; CHECK-NEXT: {{ $}}158 ; CHECK-NEXT: bb.6.for.body:159 ; CHECK-NEXT: successors: %bb.7(0x7e000000), %bb.2(0x02000000)160 ; CHECK-NEXT: liveins: $w9, $x0, $x10, $x11, $x12161 ; CHECK-NEXT: {{ $}}162 ; CHECK-NEXT: renamable $w8 = LDURWi renamable $x11, -4163 ; CHECK-NEXT: STRWui killed renamable $w8, renamable $x11, 0164 ; CHECK-NEXT: renamable $x8 = nuw nsw ADDXri renamable $x12, 2, 0165 ; CHECK-NEXT: renamable $w9 = nuw nsw ADDWri killed renamable $w9, 1, 0166 ; CHECK-NEXT: early-clobber renamable $x10, renamable $w13 = LDRBBpost killed renamable $x10, 4167 ; CHECK-NEXT: TBZW killed renamable $w13, 3, %bb.2168 ; CHECK-NEXT: {{ $}}169 ; CHECK-NEXT: bb.7.for.body:170 ; CHECK-NEXT: successors: %bb.6(0x7df7df7e), %bb.2(0x02082082)171 ; CHECK-NEXT: liveins: $w9, $x0, $x8, $x10, $x11, $x12172 ; CHECK-NEXT: {{ $}}173 ; CHECK-NEXT: renamable $x11 = ADDXri killed renamable $x11, 8, 0174 ; CHECK-NEXT: dead $xzr = SUBSXri killed renamable $x12, 598, 0, implicit-def $nzcv175 ; CHECK-NEXT: $x12 = ORRXrs $xzr, $x8, 0176 ; CHECK-NEXT: Bcc 0, %bb.2, implicit $nzcv177 ; CHECK-NEXT: B %bb.6178 ; CHECK-NEXT: {{ $}}179 ; CHECK-NEXT: bb.8.for.cond28.preheader:180 ; CHECK-NEXT: successors: %bb.12(0x40000000), %bb.9(0x40000000)181 ; CHECK-NEXT: liveins: $x0, $x8182 ; CHECK-NEXT: {{ $}}183 ; CHECK-NEXT: renamable $w9 = LDRBBui renamable $x0, 4184 ; CHECK-NEXT: TBZW killed renamable $w9, 3, %bb.12185 ; CHECK-NEXT: {{ $}}186 ; CHECK-NEXT: bb.9.for.body36.preheader:187 ; CHECK-NEXT: successors: %bb.10(0x80000000)188 ; CHECK-NEXT: liveins: $x0, $x8189 ; CHECK-NEXT: {{ $}}190 ; CHECK-NEXT: renamable $w9 = MOVZWi 8, 0, implicit-def $x9191 ; CHECK-NEXT: {{ $}}192 ; CHECK-NEXT: bb.10.for.body36:193 ; CHECK-NEXT: successors: %bb.11(0x7e000000), %bb.12(0x02000000)194 ; CHECK-NEXT: liveins: $x0, $x8, $x9195 ; CHECK-NEXT: {{ $}}196 ; CHECK-NEXT: renamable $w10 = SUBWri renamable $w8, 1, 0197 ; CHECK-NEXT: renamable $w10 = LDRWroW renamable $x0, killed renamable $w10, 0, 1198 ; CHECK-NEXT: early-clobber renamable $x8 = STRWpost killed renamable $w10, renamable $x8, 2199 ; CHECK-NEXT: renamable $w10 = LDRBBroX renamable $x0, renamable $x9, 0, 0200 ; CHECK-NEXT: TBZW killed renamable $w10, 3, %bb.12201 ; CHECK-NEXT: {{ $}}202 ; CHECK-NEXT: bb.11.for.body36:203 ; CHECK-NEXT: successors: %bb.10(0x7df7df7e), %bb.12(0x02082082)204 ; CHECK-NEXT: liveins: $x0, $x8, $x9205 ; CHECK-NEXT: {{ $}}206 ; CHECK-NEXT: dead $xzr = SUBSXri renamable $x9, 1200, 0, implicit-def $nzcv207 ; CHECK-NEXT: renamable $x9 = nuw nsw ADDXri killed renamable $x9, 4, 0208 ; CHECK-NEXT: Bcc 1, %bb.10, implicit $nzcv209 ; CHECK-NEXT: {{ $}}210 ; CHECK-NEXT: bb.12.for.end45:211 ; CHECK-NEXT: RET undef $lr212 ; CHECK-NEXT: {{ $}}213 ; CHECK-NEXT: bb.13.if.end:214 ; CHECK-NEXT: successors: %bb.8(0x04000000), %bb.14(0x7c000000)215 ; CHECK-NEXT: liveins: $x0, $x8, $x9, $x10216 ; CHECK-NEXT: {{ $}}217 ; CHECK-NEXT: renamable $w11 = LDRBBui renamable $x10, 0218 ; CHECK-NEXT: TBZW killed renamable $w11, 3, %bb.8219 ; CHECK-NEXT: {{ $}}220 ; CHECK-NEXT: bb.14.while.body:221 ; CHECK-NEXT: successors: %bb.13(0x7c000000), %bb.15(0x04000000)222 ; CHECK-NEXT: liveins: $x0, $x8, $x9, $x10223 ; CHECK-NEXT: {{ $}}224 ; CHECK-NEXT: renamable $w11 = SUBWri renamable $w8, 1, 0225 ; CHECK-NEXT: renamable $w11 = LDRWroW renamable $x0, killed renamable $w11, 0, 1226 ; CHECK-NEXT: early-clobber renamable $x8 = STRWpost renamable $w11, renamable $x8, 2227 ; CHECK-NEXT: TBZW killed renamable $w11, 2, %bb.13228 ; CHECK-NEXT: {{ $}}229 ; CHECK-NEXT: bb.15.if.then:230 ; CHECK-NEXT: successors: %bb.16(0x7e000000), %bb.8(0x02000000)231 ; CHECK-NEXT: liveins: $x0, $x9232 ; CHECK-NEXT: {{ $}}233 ; CHECK-NEXT: renamable $w8 = LDRWui renamable $x0, 4234 ; CHECK-NEXT: STRWroX killed renamable $w8, renamable $x0, renamable $x9, 0, 1235 ; CHECK-NEXT: renamable $w8 = MOVZWi 3, 0, implicit-def $x8236 ; CHECK-NEXT: dead $xzr = SUBSXri renamable $x9, 298, 0, implicit-def $nzcv237 ; CHECK-NEXT: Bcc 8, %bb.8, implicit $nzcv238 ; CHECK-NEXT: {{ $}}239 ; CHECK-NEXT: bb.16.if.then:240 ; CHECK-NEXT: successors: %bb.14(0x7df7df7e), %bb.8(0x02082082)241 ; CHECK-NEXT: liveins: $x0, $x8, $x9242 ; CHECK-NEXT: {{ $}}243 ; CHECK-NEXT: renamable $x9 = nuw nsw ADDXri killed renamable $x9, 1, 0244 ; CHECK-NEXT: renamable $x10 = nuw ADDXrs renamable $x0, renamable $x9, 2245 ; CHECK-NEXT: renamable $w11 = LDRWui renamable $x10, 0246 ; CHECK-NEXT: TBZW killed renamable $w11, 3, %bb.8247 ; CHECK-NEXT: B %bb.14248 bb.0.entry:249 successors: %bb.1(0x40000000), %bb.5(0x40000000)250 liveins: $x0251 252 renamable $w8 = LDRBBui renamable $x0, 4253 TBNZW killed renamable $w8, 3, %bb.5254 255 bb.1:256 successors: %bb.2(0x80000000)257 liveins: $x0258 259 renamable $w11 = MOVZWi 1, 0260 renamable $w9 = MOVZWi 1, 0261 renamable $w8 = MOVZWi 2, 0, implicit-def $x8262 263 bb.2.while.cond.preheader:264 successors: %bb.3(0x60000000), %bb.8(0x20000000)265 liveins: $w9, $w11, $x0, $x8266 267 dead $wzr = SUBSWri renamable $w11, 299, 0, implicit-def $nzcv268 Bcc 8, %bb.8, implicit $nzcv269 270 bb.3.while.cond.preheader:271 successors: %bb.4(0x55555555), %bb.8(0x2aaaaaab)272 liveins: $w9, $x0, $x8273 274 renamable $x10 = nuw ADDXrx renamable $x0, renamable $w9, 18275 renamable $w11 = LDRWui renamable $x10, 0276 TBZW killed renamable $w11, 3, %bb.8277 278 bb.4:279 successors: %bb.14(0x80000000)280 liveins: $w9, $x0, $x8, $x10281 282 renamable $w9 = ORRWrs $wzr, killed renamable $w9, 0, implicit-def $x9283 B %bb.14284 285 bb.5.for.body.preheader:286 successors: %bb.6(0x80000000)287 liveins: $x0288 289 renamable $x10 = ADDXri renamable $x0, 8, 0290 renamable $w9 = MOVZWi 1, 0291 renamable $w12 = MOVZWi 2, 0, implicit-def $x12292 $x11 = ORRXrs $xzr, $x10, 0293 294 bb.6.for.body:295 successors: %bb.7(0x7e000000), %bb.2(0x02000000)296 liveins: $w9, $x0, $x10, $x11, $x12297 298 renamable $w8 = LDURWi renamable $x11, -4299 STRWui killed renamable $w8, renamable $x11, 0300 renamable $x8 = nuw nsw ADDXri renamable $x12, 2, 0301 renamable $w9 = nuw nsw ADDWri killed renamable $w9, 1, 0302 early-clobber renamable $x10, renamable $w13 = LDRBBpost killed renamable $x10, 4303 TBZW killed renamable $w13, 3, %bb.2304 305 bb.7.for.body:306 successors: %bb.6(0x7df7df7e), %bb.2(0x02082082)307 liveins: $w9, $x0, $x8, $x10, $x11, $x12308 309 renamable $x11 = ADDXri killed renamable $x11, 8, 0310 dead $xzr = SUBSXri killed renamable $x12, 598, 0, implicit-def $nzcv311 $x12 = ORRXrs $xzr, $x8, 0312 Bcc 0, %bb.2, implicit $nzcv313 B %bb.6314 315 bb.8.for.cond28.preheader:316 successors: %bb.12(0x40000000), %bb.9(0x40000000)317 liveins: $x0, $x8318 319 renamable $w9 = LDRBBui renamable $x0, 4320 TBZW killed renamable $w9, 3, %bb.12321 322 bb.9.for.body36.preheader:323 successors: %bb.10(0x80000000)324 liveins: $x0, $x8325 326 renamable $w9 = MOVZWi 8, 0, implicit-def $x9327 328 bb.10.for.body36:329 successors: %bb.11(0x7e000000), %bb.12(0x02000000)330 liveins: $x0, $x8, $x9331 332 renamable $w10 = SUBWri renamable $w8, 1, 0333 renamable $w10 = LDRWroW renamable $x0, killed renamable $w10, 0, 1334 STRWui killed renamable $w10, renamable $x8, 0335 renamable $w10 = LDRBBroX renamable $x0, renamable $x9, 0, 0336 TBZW killed renamable $w10, 3, %bb.12337 338 bb.11.for.body36:339 successors: %bb.10(0x7df7df7e), %bb.12(0x02082082)340 liveins: $x0, $x8, $x9341 342 renamable $x8 = ADDXri renamable $x8, 2, 0, implicit killed $x8, implicit-def $x8343 dead $xzr = SUBSXri renamable $x9, 1200, 0, implicit-def $nzcv344 renamable $x9 = nuw nsw ADDXri killed renamable $x9, 4, 0345 Bcc 1, %bb.10, implicit $nzcv346 347 bb.12.for.end45:348 RET undef $lr349 350 bb.13.if.end:351 successors: %bb.8(0x04000000), %bb.14(0x7c000000)352 liveins: $x0, $x8, $x9, $x10353 354 renamable $x8 = ADDXri renamable $x8, 2, 0, implicit killed $x8, implicit-def $x8355 renamable $w11 = LDRBBui renamable $x10, 0356 TBZW killed renamable $w11, 3, %bb.8357 358 bb.14.while.body:359 successors: %bb.13(0x7c000000), %bb.15(0x04000000)360 liveins: $x0, $x8, $x9, $x10361 362 renamable $w11 = SUBWri renamable $w8, 1, 0363 renamable $w11 = LDRWroW renamable $x0, killed renamable $w11, 0, 1364 STRWui renamable $w11, renamable $x8, 0365 TBZW killed renamable $w11, 2, %bb.13366 367 bb.15.if.then:368 successors: %bb.16(0x7e000000), %bb.8(0x02000000)369 liveins: $x0, $x9370 371 renamable $w8 = LDRWui renamable $x0, 4372 STRWroX killed renamable $w8, renamable $x0, renamable $x9, 0, 1373 renamable $w8 = MOVZWi 3, 0, implicit-def $x8374 dead $xzr = SUBSXri renamable $x9, 298, 0, implicit-def $nzcv375 Bcc 8, %bb.8, implicit $nzcv376 377 bb.16.if.then:378 successors: %bb.14(0x7df7df7e), %bb.8(0x02082082)379 liveins: $x0, $x8, $x9380 381 renamable $x9 = nuw nsw ADDXri killed renamable $x9, 1, 0382 renamable $x10 = nuw ADDXrs renamable $x0, renamable $x9, 2383 renamable $w11 = LDRWui renamable $x10, 0384 TBZW killed renamable $w11, 3, %bb.8385 B %bb.14386...387