112 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 32# RUN: llc -o - %s -run-pass=greedy | FileCheck %s3#4# Make sure we don't run into dead loop when split register with a hint.5 6--- |7 target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"8 target triple = "aarch64-none-linux-gnu"9 10 define void @foo(ptr %0, i32 %1) gc "statepoint-example" personality ptr null {11 bci_0:12 unreachable13 14 bci_19:15 unreachable16 17 bci_10:18 unreachable19 }20 21...22---23name: foo24alignment: 425exposesReturnsTwice: false26legalized: false27regBankSelected: false28selected: false29failedISel: false30tracksRegLiveness: true31hasWinCFI: false32callsEHReturn: false33callsUnwindInit: false34hasEHContTarget: false35hasEHScopes: false36hasEHFunclets: false37isOutlined: false38debugInstrRef: false39failsVerification: false40tracksDebugUserValues: false41registers:42 - { id: 0, class: gpr64, preferred-register: '' }43 - { id: 1, class: gpr32, preferred-register: '' }44 - { id: 2, class: gpr32, preferred-register: '' }45 - { id: 3, class: gpr64all, preferred-register: '' }46 - { id: 4, class: gpr64all, preferred-register: '' }47 - { id: 5, class: gpr32all, preferred-register: '' }48liveins:49 - { reg: '$w1', virtual-reg: '%1' }50frameInfo:51 isFrameAddressTaken: false52 isReturnAddressTaken: false53 hasStackMap: false54 hasPatchPoint: false55 stackSize: 056 offsetAdjustment: 057 maxAlignment: 158 adjustsStack: true59 hasCalls: true60 stackProtector: ''61 functionContext: ''62 maxCallFrameSize: 063 cvBytesOfCalleeSavedRegisters: 064 hasOpaqueSPAdjustment: false65 hasVAStart: false66 hasMustTailInVarArgFunc: false67 hasTailCall: false68 localFrameSize: 069 savePoint: []70 restorePoint: []71fixedStack: []72stack: []73entry_values: []74callSites: []75debugValueSubstitutions: []76constants: []77machineFunctionInfo: {}78body: |79 ; CHECK-LABEL: name: foo80 ; CHECK: bb.0.bci_0:81 ; CHECK-NEXT: successors: %bb.1(0x80000000)82 ; CHECK-NEXT: liveins: $w183 ; CHECK-NEXT: {{ $}}84 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr32 = COPY $w185 ; CHECK-NEXT: {{ $}}86 ; CHECK-NEXT: bb.1.bci_19:87 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp88 ; CHECK-NEXT: $x0 = COPY $xzr89 ; CHECK-NEXT: STATEPOINT 0, 0, 1, $xzr, killed $x0, 2, 0, 2, 0, 2, 33, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, [[COPY]], 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 0, 2, 1, 0, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead $x0, implicit-def dead early-clobber $lr90 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp91 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp92 ; CHECK-NEXT: $w0 = COPY $wzr93 ; CHECK-NEXT: STATEPOINT 0, 0, 1, $xzr, killed $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr94 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp95 bb.0.bci_0:96 successors: %bb.1(0x80000000)97 liveins: $w198 99 %1:gpr32 = COPY $w1100 101 bb.1.bci_19:102 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp103 $x0 = COPY $xzr104 STATEPOINT 0, 0, 1, $xzr, killed $x0, 2, 0, 2, 0, 2, 33, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, %1, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, 2, 0, 2, 1, 0, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead $x0, implicit-def dead early-clobber $lr105 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp106 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp107 $w0 = COPY $wzr108 STATEPOINT 0, 0, 1, $xzr, killed $w0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, 2, 0, csr_aarch64_aapcs, implicit-def $sp, implicit-def dead early-clobber $lr109 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp110 111...112