107 lines · plain
1# RUN: llc -o - %s -mtriple=aarch64-windows -run-pass=aarch64-ldst-opt \2# RUN: | FileCheck %s3 4# CHECK: $x0 = LDRXui $sp, 15# CHECK: $x19 = frame-destroy LDRXui $sp, 26 7--- |8 target triple = "aarch64-pc-windows-gnu"9 10 define dso_local noundef i64 @_Z1fPFvPxEx(ptr nocapture noundef readonly %g, i64 noundef %x) uwtable {11 entry:12 %x.addr = alloca i64, align 813 store i64 %x, ptr %x.addr, align 814 call void %g(ptr noundef nonnull %x.addr)15 call void asm sideeffect "", "~{x19}"()16 %0 = load i64, ptr %x.addr, align 817 ret i64 %018 }19...20---21name: _Z1fPFvPxEx22alignment: 423exposesReturnsTwice: false24legalized: false25regBankSelected: false26selected: false27failedISel: false28tracksRegLiveness: true29hasWinCFI: true30callsEHReturn: false31callsUnwindInit: false32hasEHContTarget: false33hasEHScopes: false34hasEHFunclets: false35failsVerification: false36tracksDebugUserValues: true37registers: []38liveins:39 - { reg: '$x0', virtual-reg: '' }40 - { reg: '$x1', virtual-reg: '' }41frameInfo:42 isFrameAddressTaken: false43 isReturnAddressTaken: false44 hasStackMap: false45 hasPatchPoint: false46 stackSize: 3247 offsetAdjustment: 048 maxAlignment: 849 adjustsStack: true50 hasCalls: true51 stackProtector: ''52 functionContext: ''53 maxCallFrameSize: 054 cvBytesOfCalleeSavedRegisters: 055 hasOpaqueSPAdjustment: false56 hasVAStart: false57 hasMustTailInVarArgFunc: false58 hasTailCall: false59 localFrameSize: 860 savePoint: []61 restorePoint: []62fixedStack: []63stack:64 - { id: 0, name: x.addr, type: default, offset: -24, size: 8, alignment: 8, 65 stack-id: default, callee-saved-register: '', callee-saved-restored: true, 66 local-offset: -8, debug-info-variable: '', debug-info-expression: '', 67 debug-info-location: '' }68 - { id: 1, name: '', type: spill-slot, offset: -8, size: 8, alignment: 8, 69 stack-id: default, callee-saved-register: '$lr', callee-saved-restored: true, 70 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }71 - { id: 2, name: '', type: spill-slot, offset: -16, size: 8, alignment: 8, 72 stack-id: default, callee-saved-register: '$x19', callee-saved-restored: true, 73 debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }74callSites: []75debugValueSubstitutions: []76constants: []77machineFunctionInfo:78 hasRedZone: false79body: |80 bb.0.entry:81 liveins: $x0, $x1, $x19, $lr82 83 $sp = frame-setup SUBXri $sp, 32, 084 frame-setup SEH_StackAlloc 3285 frame-setup STRXui killed $x19, $sp, 2 :: (store (s64) into %stack.2)86 frame-setup SEH_SaveReg 19, 1687 frame-setup STRXui killed $lr, $sp, 3 :: (store (s64) into %stack.1)88 frame-setup SEH_SaveReg 30, 2489 frame-setup SEH_PrologEnd90 renamable $x8 = COPY $x091 STRXui killed renamable $x1, $sp, 1 :: (store (s64) into %ir.x.addr)92 $x0 = ADDXri $sp, 8, 093 BLR killed renamable $x8, csr_aarch64_aapcs, implicit-def dead $lr, implicit $sp, implicit $x0, implicit-def $sp94 INLINEASM &"", 1 /* sideeffect attdialect */, 12 /* clobber */, implicit-def dead early-clobber $x1995 renamable $x0 = LDRXui $sp, 1 :: (dereferenceable load (s64) from %ir.x.addr)96 frame-destroy SEH_EpilogStart97 $lr = frame-destroy LDRXui $sp, 3 :: (load (s64) from %stack.1)98 frame-destroy SEH_SaveReg 30, 2499 $x19 = frame-destroy LDRXui $sp, 2 :: (load (s64) from %stack.2)100 frame-destroy SEH_SaveReg 19, 16101 $sp = frame-destroy ADDXri $sp, 32, 0102 frame-destroy SEH_StackAlloc 32103 frame-destroy SEH_EpilogEnd104 RET_ReallyLR implicit $x0105 106...107