83 lines · plain
1# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 52# RUN: llc -mtriple=aarch64 -mattr=+sve -mattr=+sme -run-pass=aarch64-machine-sme-abi -verify-machineinstrs %s -o - | FileCheck %s3 4# This test verifies that runtime defined live-ins are not included in the live5# outs of predecessors in the MachineSMEABIPass, as including them would result6# in copies of undefined registers.7 8--- |9 define void @sme_abi_eh_liveins() "aarch64_inout_za" personality ptr @__gxx_personality_v0 { entry: unreachable }10 11 declare i32 @__gxx_personality_v0(...)12...13---14name: sme_abi_eh_liveins15tracksRegLiveness: true16isSSA: true17noVRegs: false18 19body: |20 ; CHECK-LABEL: name: sme_abi_eh_liveins21 ; CHECK: bb.0:22 ; CHECK-NEXT: successors: %bb.2(0x00000000), %bb.1(0x80000000)23 ; CHECK-NEXT: {{ $}}24 ; CHECK-NEXT: [[RDSVLI_XI:%[0-9]+]]:gpr64 = RDSVLI_XI 1, implicit $vg25 ; CHECK-NEXT: [[COPY:%[0-9]+]]:gpr64 = COPY $sp26 ; CHECK-NEXT: [[MSUBXrrr:%[0-9]+]]:gpr64 = MSUBXrrr [[RDSVLI_XI]], [[RDSVLI_XI]], [[COPY]]27 ; CHECK-NEXT: $sp = COPY [[MSUBXrrr]]28 ; CHECK-NEXT: STPXi [[MSUBXrrr]], [[RDSVLI_XI]], %stack.0, 029 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp30 ; CHECK-NEXT: InOutZAUsePseudo31 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp32 ; CHECK-NEXT: [[ADDXri:%[0-9]+]]:gpr64sp = ADDXri %stack.0, 0, 033 ; CHECK-NEXT: [[COPY1:%[0-9]+]]:gpr64 = COPY [[ADDXri]]34 ; CHECK-NEXT: MSR 56965, [[COPY1]]35 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp36 ; CHECK-NEXT: RequiresZASavePseudo37 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp38 ; CHECK-NEXT: MSRpstatesvcrImm1 2, 1, implicit-def $nzcv39 ; CHECK-NEXT: [[MRS:%[0-9]+]]:gpr64 = MRS 56965, implicit-def $nzcv40 ; CHECK-NEXT: $x0 = ADDXri %stack.0, 0, 041 ; CHECK-NEXT: RestoreZAPseudo [[MRS]], $x0, &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x042 ; CHECK-NEXT: MSR 56965, $xzr43 ; CHECK-NEXT: B %bb.244 ; CHECK-NEXT: {{ $}}45 ; CHECK-NEXT: bb.1 (landing-pad):46 ; CHECK-NEXT: successors: %bb.2(0x80000000)47 ; CHECK-NEXT: liveins: $x0, $x148 ; CHECK-NEXT: {{ $}}49 ; CHECK-NEXT: MSRpstatesvcrImm1 2, 1, implicit-def $nzcv50 ; CHECK-NEXT: [[MRS1:%[0-9]+]]:gpr64 = MRS 56965, implicit-def $nzcv51 ; CHECK-NEXT: $x0 = ADDXri %stack.0, 0, 052 ; CHECK-NEXT: RestoreZAPseudo [[MRS1]], $x0, &__arm_tpidr2_restore, csr_aarch64_sme_abi_support_routines_preservemost_from_x053 ; CHECK-NEXT: MSR 56965, $xzr54 ; CHECK-NEXT: ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp55 ; CHECK-NEXT: InOutZAUsePseudo56 ; CHECK-NEXT: ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp57 ; CHECK-NEXT: {{ $}}58 ; CHECK-NEXT: bb.2:59 bb.0:60 successors: %bb.2(0x00000000), %bb.1(0x80000000)61 62 ; Simulate shared ZA call63 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp64 InOutZAUsePseudo65 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp66 67 ; Simulate private ZA call at the end of the block68 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp69 RequiresZASavePseudo70 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp71 72 B %bb.273 74 bb.1 (landing-pad):75 liveins: $x0, $x176 77 ; Simulate shared ZA call78 ADJCALLSTACKDOWN 0, 0, implicit-def dead $sp, implicit $sp79 InOutZAUsePseudo80 ADJCALLSTACKUP 0, 0, implicit-def dead $sp, implicit $sp81 82 bb.2:83