# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 5 # RUN: llc -run-pass=aarch64-ldst-opt -verify-machineinstrs %s -o - | FileCheck %s --- | target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" target triple = "aarch64-none-linux-gnu" ; Function Attrs: nofree norecurse nosync nounwind memory(argmem: readwrite) uwtable vscale_range(1,16) define dso_local void @test(ptr noundef captures(none) %data) local_unnamed_addr #0 { entry: br i1 undef, label %while.cond.preheader, label %for.body.preheader for.body.preheader: ; preds = %entry br label %for.body while.cond.preheader.loopexit: ; preds = %for.body br label %while.cond.preheader while.cond.preheader: ; preds = %while.cond.preheader.loopexit, %entry br i1 undef, label %while.body.lr.ph.lr.ph, label %for.cond28.preheader while.body.lr.ph.lr.ph: ; preds = %while.cond.preheader br label %while.body.preheader for.body: ; preds = %for.body, %for.body.preheader br i1 undef, label %for.body, label %while.cond.preheader.loopexit for.cond28.preheader: ; preds = %if.then, %if.end, %while.cond.preheader br i1 undef, label %for.end45, label %for.body36.preheader for.body36.preheader: ; preds = %for.cond28.preheader br label %for.body36 while.body: ; preds = %if.end, %while.body.preheader br i1 undef, label %if.end, label %if.then if.then: ; preds = %while.body br i1 undef, label %while.body.preheader, label %for.cond28.preheader while.body.preheader: ; preds = %if.then, %while.body.lr.ph.lr.ph br label %while.body if.end: ; preds = %while.body br i1 undef, label %for.cond28.preheader, label %while.body for.body36: ; preds = %for.body36.preheader, %for.body36 br i1 undef, label %for.body36, label %for.end45 for.end45: ; preds = %for.body36, %for.cond28.preheader ret void } ... --- name: test alignment: 16 exposesReturnsTwice: false legalized: false regBankSelected: false selected: false failedISel: false tracksRegLiveness: true hasWinCFI: false noPhis: true isSSA: false noVRegs: true hasFakeUses: false callsEHReturn: false callsUnwindInit: false hasEHContTarget: false hasEHScopes: false hasEHFunclets: false isOutlined: false debugInstrRef: false failsVerification: false tracksDebugUserValues: true registers: [] liveins: - { reg: '$x0', virtual-reg: '' } frameInfo: isFrameAddressTaken: false isReturnAddressTaken: false hasStackMap: false hasPatchPoint: false stackSize: 0 offsetAdjustment: 0 maxAlignment: 1 adjustsStack: false hasCalls: false stackProtector: '' functionContext: '' maxCallFrameSize: 0 cvBytesOfCalleeSavedRegisters: 0 hasOpaqueSPAdjustment: false hasVAStart: false hasMustTailInVarArgFunc: false hasTailCall: false isCalleeSavedInfoValid: true localFrameSize: 0 savePoint: [] restorePoint: [] fixedStack: [] stack: [] entry_values: [] callSites: [] debugValueSubstitutions: [] constants: [] machineFunctionInfo: hasRedZone: false body: | ; CHECK-LABEL: name: test ; CHECK: bb.0.entry: ; CHECK-NEXT: successors: %bb.1(0x40000000), %bb.5(0x40000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w8 = LDRBBui renamable $x0, 4 ; CHECK-NEXT: TBNZW killed renamable $w8, 3, %bb.5 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.1: ; CHECK-NEXT: successors: %bb.2(0x80000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w11 = MOVZWi 1, 0 ; CHECK-NEXT: renamable $w9 = MOVZWi 1, 0 ; CHECK-NEXT: renamable $w8 = MOVZWi 2, 0, implicit-def $x8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.2.while.cond.preheader: ; CHECK-NEXT: successors: %bb.3(0x60000000), %bb.8(0x20000000) ; CHECK-NEXT: liveins: $w9, $w11, $x0, $x8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: dead $wzr = SUBSWri renamable $w11, 299, 0, implicit-def $nzcv ; CHECK-NEXT: Bcc 8, %bb.8, implicit $nzcv ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.3.while.cond.preheader: ; CHECK-NEXT: successors: %bb.4(0x55555555), %bb.8(0x2aaaaaab) ; CHECK-NEXT: liveins: $w9, $x0, $x8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $x10 = nuw ADDXrx renamable $x0, renamable $w9, 18 ; CHECK-NEXT: renamable $w11 = LDRWui renamable $x10, 0 ; CHECK-NEXT: TBZW killed renamable $w11, 3, %bb.8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.4: ; CHECK-NEXT: successors: %bb.14(0x80000000) ; CHECK-NEXT: liveins: $w9, $x0, $x8, $x10 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w9 = ORRWrs $wzr, killed renamable $w9, 0, implicit-def $x9 ; CHECK-NEXT: B %bb.14 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.5.for.body.preheader: ; CHECK-NEXT: successors: %bb.6(0x80000000) ; CHECK-NEXT: liveins: $x0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $x10 = ADDXri renamable $x0, 8, 0 ; CHECK-NEXT: renamable $w9 = MOVZWi 1, 0 ; CHECK-NEXT: renamable $w12 = MOVZWi 2, 0, implicit-def $x12 ; CHECK-NEXT: $x11 = ORRXrs $xzr, $x10, 0 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.6.for.body: ; CHECK-NEXT: successors: %bb.7(0x7e000000), %bb.2(0x02000000) ; CHECK-NEXT: liveins: $w9, $x0, $x10, $x11, $x12 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w8 = LDURWi renamable $x11, -4 ; CHECK-NEXT: STRWui killed renamable $w8, renamable $x11, 0 :: (store (s32)) ; CHECK-NEXT: renamable $x8 = nuw nsw ADDXri renamable $x12, 2, 0 ; CHECK-NEXT: renamable $w9 = nuw nsw ADDWri killed renamable $w9, 1, 0 ; CHECK-NEXT: early-clobber renamable $x10, renamable $w13 = LDRBBpost killed renamable $x10, 4 ; CHECK-NEXT: TBZW killed renamable $w13, 3, %bb.2 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.7.for.body: ; CHECK-NEXT: successors: %bb.6(0x7df7df7e), %bb.2(0x02082082) ; CHECK-NEXT: liveins: $w9, $x0, $x8, $x10, $x11, $x12 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $x11 = ADDXri killed renamable $x11, 8, 0 ; CHECK-NEXT: dead $xzr = SUBSXri killed renamable $x12, 598, 0, implicit-def $nzcv ; CHECK-NEXT: $x12 = ORRXrs $xzr, $x8, 0 ; CHECK-NEXT: Bcc 0, %bb.2, implicit $nzcv ; CHECK-NEXT: B %bb.6 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.8.for.cond28.preheader: ; CHECK-NEXT: successors: %bb.12(0x40000000), %bb.9(0x40000000) ; CHECK-NEXT: liveins: $x0, $x8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w9 = LDRBBui renamable $x0, 4 ; CHECK-NEXT: TBZW killed renamable $w9, 3, %bb.12 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.9.for.body36.preheader: ; CHECK-NEXT: successors: %bb.10(0x80000000) ; CHECK-NEXT: liveins: $x0, $x8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w9 = MOVZWi 8, 0, implicit-def $x9 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.10.for.body36: ; CHECK-NEXT: successors: %bb.11(0x7e000000), %bb.12(0x02000000) ; CHECK-NEXT: liveins: $x0, $x8, $x9 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w10 = SUBWri renamable $w8, 1, 0 ; CHECK-NEXT: renamable $w10 = LDRWroW renamable $x0, killed renamable $w10, 0, 1 ; CHECK-NEXT: early-clobber renamable $x8 = STRWpost killed renamable $w10, renamable $x8, 2 :: (store (s32)) ; CHECK-NEXT: renamable $w10 = LDRBBroX renamable $x0, renamable $x9, 0, 0 ; CHECK-NEXT: TBZW killed renamable $w10, 3, %bb.12 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.11.for.body36: ; CHECK-NEXT: successors: %bb.10(0x7df7df7e), %bb.12(0x02082082) ; CHECK-NEXT: liveins: $x0, $x8, $x9 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: dead $xzr = SUBSXri renamable $x9, 1200, 0, implicit-def $nzcv ; CHECK-NEXT: renamable $x9 = nuw nsw ADDXri killed renamable $x9, 4, 0 ; CHECK-NEXT: Bcc 1, %bb.10, implicit $nzcv ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.12.for.end45: ; CHECK-NEXT: RET undef $lr ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.13.if.end: ; CHECK-NEXT: successors: %bb.8(0x04000000), %bb.14(0x7c000000) ; CHECK-NEXT: liveins: $x0, $x8, $x9, $x10 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w11 = LDRBBui renamable $x10, 0 ; CHECK-NEXT: TBZW killed renamable $w11, 3, %bb.8 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.14.while.body: ; CHECK-NEXT: successors: %bb.13(0x7c000000), %bb.15(0x04000000) ; CHECK-NEXT: liveins: $x0, $x8, $x9, $x10 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w11 = SUBWri renamable $w8, 1, 0 ; CHECK-NEXT: renamable $w11 = LDRWroW renamable $x0, killed renamable $w11, 0, 1 ; CHECK-NEXT: early-clobber renamable $x8 = STRWpost renamable $w11, renamable $x8, 2 :: (store (s32)) ; CHECK-NEXT: TBZW killed renamable $w11, 2, %bb.13 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.15.if.then: ; CHECK-NEXT: successors: %bb.16(0x7e000000), %bb.8(0x02000000) ; CHECK-NEXT: liveins: $x0, $x9 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $w8 = LDRWui renamable $x0, 4 ; CHECK-NEXT: STRWroX killed renamable $w8, renamable $x0, renamable $x9, 0, 1 ; CHECK-NEXT: renamable $w8 = MOVZWi 3, 0, implicit-def $x8 ; CHECK-NEXT: dead $xzr = SUBSXri renamable $x9, 298, 0, implicit-def $nzcv ; CHECK-NEXT: Bcc 8, %bb.8, implicit $nzcv ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: bb.16.if.then: ; CHECK-NEXT: successors: %bb.14(0x7df7df7e), %bb.8(0x02082082) ; CHECK-NEXT: liveins: $x0, $x8, $x9 ; CHECK-NEXT: {{ $}} ; CHECK-NEXT: renamable $x9 = nuw nsw ADDXri killed renamable $x9, 1, 0 ; CHECK-NEXT: renamable $x10 = nuw ADDXrs renamable $x0, renamable $x9, 2 ; CHECK-NEXT: renamable $w11 = LDRWui renamable $x10, 0 ; CHECK-NEXT: TBZW killed renamable $w11, 3, %bb.8 ; CHECK-NEXT: B %bb.14 bb.0.entry: successors: %bb.1(0x40000000), %bb.5(0x40000000) liveins: $x0 renamable $w8 = LDRBBui renamable $x0, 4 TBNZW killed renamable $w8, 3, %bb.5 bb.1: successors: %bb.2(0x80000000) liveins: $x0 renamable $w11 = MOVZWi 1, 0 renamable $w9 = MOVZWi 1, 0 renamable $w8 = MOVZWi 2, 0, implicit-def $x8 bb.2.while.cond.preheader: successors: %bb.3(0x60000000), %bb.8(0x20000000) liveins: $w9, $w11, $x0, $x8 dead $wzr = SUBSWri renamable $w11, 299, 0, implicit-def $nzcv Bcc 8, %bb.8, implicit $nzcv bb.3.while.cond.preheader: successors: %bb.4(0x55555555), %bb.8(0x2aaaaaab) liveins: $w9, $x0, $x8 renamable $x10 = nuw ADDXrx renamable $x0, renamable $w9, 18 renamable $w11 = LDRWui renamable $x10, 0 TBZW killed renamable $w11, 3, %bb.8 bb.4: successors: %bb.14(0x80000000) liveins: $w9, $x0, $x8, $x10 renamable $w9 = ORRWrs $wzr, killed renamable $w9, 0, implicit-def $x9 B %bb.14 bb.5.for.body.preheader: successors: %bb.6(0x80000000) liveins: $x0 renamable $x10 = ADDXri renamable $x0, 8, 0 renamable $w9 = MOVZWi 1, 0 renamable $w12 = MOVZWi 2, 0, implicit-def $x12 $x11 = ORRXrs $xzr, $x10, 0 bb.6.for.body: successors: %bb.7(0x7e000000), %bb.2(0x02000000) liveins: $w9, $x0, $x10, $x11, $x12 renamable $w8 = LDURWi renamable $x11, -4 STRWui killed renamable $w8, renamable $x11, 0 :: (store (s32)) renamable $x8 = nuw nsw ADDXri renamable $x12, 2, 0 renamable $w9 = nuw nsw ADDWri killed renamable $w9, 1, 0 early-clobber renamable $x10, renamable $w13 = LDRBBpost killed renamable $x10, 4 TBZW killed renamable $w13, 3, %bb.2 bb.7.for.body: successors: %bb.6(0x7df7df7e), %bb.2(0x02082082) liveins: $w9, $x0, $x8, $x10, $x11, $x12 renamable $x11 = ADDXri killed renamable $x11, 8, 0 dead $xzr = SUBSXri killed renamable $x12, 598, 0, implicit-def $nzcv $x12 = ORRXrs $xzr, $x8, 0 Bcc 0, %bb.2, implicit $nzcv B %bb.6 bb.8.for.cond28.preheader: successors: %bb.12(0x40000000), %bb.9(0x40000000) liveins: $x0, $x8 renamable $w9 = LDRBBui renamable $x0, 4 TBZW killed renamable $w9, 3, %bb.12 bb.9.for.body36.preheader: successors: %bb.10(0x80000000) liveins: $x0, $x8 renamable $w9 = MOVZWi 8, 0, implicit-def $x9 bb.10.for.body36: successors: %bb.11(0x7e000000), %bb.12(0x02000000) liveins: $x0, $x8, $x9 renamable $w10 = SUBWri renamable $w8, 1, 0 renamable $w10 = LDRWroW renamable $x0, killed renamable $w10, 0, 1 STRWui killed renamable $w10, renamable $x8, 0 :: (store (s32)) renamable $w10 = LDRBBroX renamable $x0, renamable $x9, 0, 0 TBZW killed renamable $w10, 3, %bb.12 bb.11.for.body36: successors: %bb.10(0x7df7df7e), %bb.12(0x02082082) liveins: $x0, $x8, $x9 renamable $x8 = ADDXri renamable $x8, 2, 0, implicit killed $x8, implicit-def $x8 dead $xzr = SUBSXri renamable $x9, 1200, 0, implicit-def $nzcv renamable $x9 = nuw nsw ADDXri killed renamable $x9, 4, 0 Bcc 1, %bb.10, implicit $nzcv bb.12.for.end45: RET undef $lr bb.13.if.end: successors: %bb.8(0x04000000), %bb.14(0x7c000000) liveins: $x0, $x8, $x9, $x10 renamable $x8 = ADDXri renamable $x8, 2, 0, implicit killed $x8, implicit-def $x8 renamable $w11 = LDRBBui renamable $x10, 0 TBZW killed renamable $w11, 3, %bb.8 bb.14.while.body: successors: %bb.13(0x7c000000), %bb.15(0x04000000) liveins: $x0, $x8, $x9, $x10 renamable $w11 = SUBWri renamable $w8, 1, 0 renamable $w11 = LDRWroW renamable $x0, killed renamable $w11, 0, 1 STRWui renamable $w11, renamable $x8, 0 :: (store (s32)) TBZW killed renamable $w11, 2, %bb.13 bb.15.if.then: successors: %bb.16(0x7e000000), %bb.8(0x02000000) liveins: $x0, $x9 renamable $w8 = LDRWui renamable $x0, 4 STRWroX killed renamable $w8, renamable $x0, renamable $x9, 0, 1 renamable $w8 = MOVZWi 3, 0, implicit-def $x8 dead $xzr = SUBSXri renamable $x9, 298, 0, implicit-def $nzcv Bcc 8, %bb.8, implicit $nzcv bb.16.if.then: successors: %bb.14(0x7df7df7e), %bb.8(0x02082082) liveins: $x0, $x8, $x9 renamable $x9 = nuw nsw ADDXri killed renamable $x9, 1, 0 renamable $x10 = nuw ADDXrs renamable $x0, renamable $x9, 2 renamable $w11 = LDRWui renamable $x10, 0 TBZW killed renamable $w11, 3, %bb.8 B %bb.14 ...