Files
clang-p2996/llvm/test/CodeGen/RISCV/stack-inst-compress.mir
laichunfeng 71b5f57f0d [RISCV] Adjust first sp size to use c.addi16sp.
addi sp, sp, 512 may be used to recover the sp in the epilogue
when stack size is larger than 2047(2^11 - 1), however, it can
not be compressed using C extension, and addi sp, sp, 496 is
able to be compressed, so try to use 496 as the ajust amount of
the fisrt sp if function doesn't need extra instructions after
adjust.

Reviewed By: wangpc

Differential Revision: https://reviews.llvm.org/D159431
2023-09-06 14:26:52 +08:00

308 lines
16 KiB
YAML

# NOTE: Assertions have been autogenerated by utils/update_mir_test_checks.py UTC_ARGS: --version 2
# RUN: llc -march=riscv32 -x mir -run-pass=prologepilog -verify-machineinstrs < %s \
# RUN: | FileCheck -check-prefixes=CHECK-RV32-NO-COM %s
# RUN: llc -march=riscv32 -mattr=+c -x mir -run-pass=prologepilog \
# RUN: -verify-machineinstrs < %s | FileCheck -check-prefixes=CHECK-RV32-COM %s
# RUN: llc -march=riscv64 -x mir -run-pass=prologepilog -verify-machineinstrs < %s \
# RUN: | FileCheck -check-prefixes=CHECK-RV64-NO-COM %s
# RUN: llc -march=riscv64 -mattr=+c -x mir -run-pass=prologepilog \
# RUN: -verify-machineinstrs < %s | FileCheck -check-prefixes=CHECK-RV64-COM %s
--- |
define dso_local void @_Z15stack_size_2048v() {
entry:
ret void
}
declare dso_local void @_Z6calleePi(ptr noundef)
define dso_local void @_Z15stack_size_4096v() {
entry:
ret void
}
define dso_local void @_Z15stack_size_8192v() {
entry:
ret void
}
...
---
name: _Z15stack_size_2048v
alignment: 2
tracksRegLiveness: true
frameInfo:
maxAlignment: 4
hasCalls: true
localFrameSize: 2048
stack:
- { id: 0, size: 2048, alignment: 4, local-offset: -2048 }
machineFunctionInfo:
varArgsFrameIndex: 0
varArgsSaveSize: 0
body: |
bb.0.entry:
; CHECK-RV32-NO-COM-LABEL: name: _Z15stack_size_2048v
; CHECK-RV32-NO-COM: liveins: $x1
; CHECK-RV32-NO-COM-NEXT: {{ $}}
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
; CHECK-RV32-NO-COM-NEXT: SW killed $x1, $x2, 2028 :: (store (s32) into %stack.1)
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -32
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
; CHECK-RV32-NO-COM-NEXT: renamable $x10 = ADDI $x2, 12
; CHECK-RV32-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 32
; CHECK-RV32-NO-COM-NEXT: $x1 = LW $x2, 2028 :: (load (s32) from %stack.1)
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV32-NO-COM-NEXT: PseudoRET
;
; CHECK-RV32-COM-LABEL: name: _Z15stack_size_2048v
; CHECK-RV32-COM: liveins: $x1
; CHECK-RV32-COM-NEXT: {{ $}}
; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -256
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 256
; CHECK-RV32-COM-NEXT: SW killed $x1, $x2, 252 :: (store (s32) into %stack.1)
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -1808
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
; CHECK-RV32-COM-NEXT: renamable $x10 = ADDI $x2, 12
; CHECK-RV32-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 1808
; CHECK-RV32-COM-NEXT: $x1 = LW $x2, 252 :: (load (s32) from %stack.1)
; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 256
; CHECK-RV32-COM-NEXT: PseudoRET
;
; CHECK-RV64-NO-COM-LABEL: name: _Z15stack_size_2048v
; CHECK-RV64-NO-COM: liveins: $x1
; CHECK-RV64-NO-COM-NEXT: {{ $}}
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
; CHECK-RV64-NO-COM-NEXT: SD killed $x1, $x2, 2024 :: (store (s64) into %stack.1)
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -32
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
; CHECK-RV64-NO-COM-NEXT: renamable $x10 = ADDI $x2, 8
; CHECK-RV64-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 32
; CHECK-RV64-NO-COM-NEXT: $x1 = LD $x2, 2024 :: (load (s64) from %stack.1)
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV64-NO-COM-NEXT: PseudoRET
;
; CHECK-RV64-COM-LABEL: name: _Z15stack_size_2048v
; CHECK-RV64-COM: liveins: $x1
; CHECK-RV64-COM-NEXT: {{ $}}
; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -496
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 496
; CHECK-RV64-COM-NEXT: SD killed $x1, $x2, 488 :: (store (s64) into %stack.1)
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -1568
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2064
; CHECK-RV64-COM-NEXT: renamable $x10 = ADDI $x2, 8
; CHECK-RV64-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 1568
; CHECK-RV64-COM-NEXT: $x1 = LD $x2, 488 :: (load (s64) from %stack.1)
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 496
; CHECK-RV64-COM-NEXT: PseudoRET
ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2
renamable $x10 = ADDI %stack.0, 0
PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2
PseudoRET
...
---
name: _Z15stack_size_4096v
alignment: 2
tracksRegLiveness: true
frameInfo:
maxAlignment: 4
hasCalls: true
localFrameSize: 4096
stack:
- { id: 0, size: 4096, alignment: 4, local-offset: -4096 }
machineFunctionInfo:
varArgsFrameIndex: 0
varArgsSaveSize: 0
body: |
bb.0.entry:
; CHECK-RV32-NO-COM-LABEL: name: _Z15stack_size_4096v
; CHECK-RV32-NO-COM: liveins: $x1
; CHECK-RV32-NO-COM-NEXT: {{ $}}
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
; CHECK-RV32-NO-COM-NEXT: SW killed $x1, $x2, 2028 :: (store (s32) into %stack.1)
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -32
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
; CHECK-RV32-NO-COM-NEXT: renamable $x10 = ADDI $x2, 12
; CHECK-RV32-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 48
; CHECK-RV32-NO-COM-NEXT: $x1 = LW $x2, 2028 :: (load (s32) from %stack.1)
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV32-NO-COM-NEXT: PseudoRET
;
; CHECK-RV32-COM-LABEL: name: _Z15stack_size_4096v
; CHECK-RV32-COM: liveins: $x1
; CHECK-RV32-COM-NEXT: {{ $}}
; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -256
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 256
; CHECK-RV32-COM-NEXT: SW killed $x1, $x2, 252 :: (store (s32) into %stack.1)
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -1808
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
; CHECK-RV32-COM-NEXT: renamable $x10 = ADDI $x2, 12
; CHECK-RV32-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 1824
; CHECK-RV32-COM-NEXT: $x1 = LW $x2, 252 :: (load (s32) from %stack.1)
; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 256
; CHECK-RV32-COM-NEXT: PseudoRET
;
; CHECK-RV64-NO-COM-LABEL: name: _Z15stack_size_4096v
; CHECK-RV64-NO-COM: liveins: $x1
; CHECK-RV64-NO-COM-NEXT: {{ $}}
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
; CHECK-RV64-NO-COM-NEXT: SD killed $x1, $x2, 2024 :: (store (s64) into %stack.1)
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -32
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
; CHECK-RV64-NO-COM-NEXT: renamable $x10 = ADDI $x2, 8
; CHECK-RV64-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 48
; CHECK-RV64-NO-COM-NEXT: $x1 = LD $x2, 2024 :: (load (s64) from %stack.1)
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV64-NO-COM-NEXT: PseudoRET
;
; CHECK-RV64-COM-LABEL: name: _Z15stack_size_4096v
; CHECK-RV64-COM: liveins: $x1
; CHECK-RV64-COM-NEXT: {{ $}}
; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -496
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 496
; CHECK-RV64-COM-NEXT: SD killed $x1, $x2, 488 :: (store (s64) into %stack.1)
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -2048
; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI killed $x2, -1568
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 4112
; CHECK-RV64-COM-NEXT: renamable $x10 = ADDI $x2, 8
; CHECK-RV64-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI killed $x2, 1584
; CHECK-RV64-COM-NEXT: $x1 = LD $x2, 488 :: (load (s64) from %stack.1)
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 496
; CHECK-RV64-COM-NEXT: PseudoRET
ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2
renamable $x10 = ADDI %stack.0, 0
PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2
PseudoRET
...
---
name: _Z15stack_size_8192v
alignment: 2
tracksRegLiveness: true
frameInfo:
maxAlignment: 4
hasCalls: true
localFrameSize: 8192
stack:
- { id: 0, size: 8192, alignment: 4, local-offset: -8192 }
machineFunctionInfo:
varArgsFrameIndex: 0
varArgsSaveSize: 0
body: |
bb.0.entry:
; CHECK-RV32-NO-COM-LABEL: name: _Z15stack_size_8192v
; CHECK-RV32-NO-COM: liveins: $x1
; CHECK-RV32-NO-COM-NEXT: {{ $}}
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
; CHECK-RV32-NO-COM-NEXT: SW killed $x1, $x2, 2028 :: (store (s32) into %stack.1)
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
; CHECK-RV32-NO-COM-NEXT: $x10 = frame-setup LUI 2
; CHECK-RV32-NO-COM-NEXT: $x10 = frame-setup ADDI killed $x10, -2016
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
; CHECK-RV32-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
; CHECK-RV32-NO-COM-NEXT: renamable $x10 = ADDI $x2, 12
; CHECK-RV32-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV32-NO-COM-NEXT: $x10 = frame-destroy LUI 2
; CHECK-RV32-NO-COM-NEXT: $x10 = frame-destroy ADDI killed $x10, -2016
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
; CHECK-RV32-NO-COM-NEXT: $x1 = LW $x2, 2028 :: (load (s32) from %stack.1)
; CHECK-RV32-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV32-NO-COM-NEXT: PseudoRET
;
; CHECK-RV32-COM-LABEL: name: _Z15stack_size_8192v
; CHECK-RV32-COM: liveins: $x1
; CHECK-RV32-COM-NEXT: {{ $}}
; CHECK-RV32-COM-NEXT: $x2 = frame-setup ADDI $x2, -256
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 256
; CHECK-RV32-COM-NEXT: SW killed $x1, $x2, 252 :: (store (s32) into %stack.1)
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -4
; CHECK-RV32-COM-NEXT: $x10 = frame-setup LUI 2
; CHECK-RV32-COM-NEXT: $x10 = frame-setup ADDI killed $x10, -240
; CHECK-RV32-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
; CHECK-RV32-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
; CHECK-RV32-COM-NEXT: renamable $x10 = ADDI $x2, 12
; CHECK-RV32-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV32-COM-NEXT: $x10 = frame-destroy LUI 2
; CHECK-RV32-COM-NEXT: $x10 = frame-destroy ADDI killed $x10, -240
; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
; CHECK-RV32-COM-NEXT: $x1 = LW $x2, 252 :: (load (s32) from %stack.1)
; CHECK-RV32-COM-NEXT: $x2 = frame-destroy ADDI $x2, 256
; CHECK-RV32-COM-NEXT: PseudoRET
;
; CHECK-RV64-NO-COM-LABEL: name: _Z15stack_size_8192v
; CHECK-RV64-NO-COM: liveins: $x1
; CHECK-RV64-NO-COM-NEXT: {{ $}}
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup ADDI $x2, -2032
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 2032
; CHECK-RV64-NO-COM-NEXT: SD killed $x1, $x2, 2024 :: (store (s64) into %stack.1)
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
; CHECK-RV64-NO-COM-NEXT: $x10 = frame-setup LUI 2
; CHECK-RV64-NO-COM-NEXT: $x10 = frame-setup ADDIW killed $x10, -2016
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
; CHECK-RV64-NO-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
; CHECK-RV64-NO-COM-NEXT: renamable $x10 = ADDI $x2, 8
; CHECK-RV64-NO-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV64-NO-COM-NEXT: $x10 = frame-destroy LUI 2
; CHECK-RV64-NO-COM-NEXT: $x10 = frame-destroy ADDIW killed $x10, -2016
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
; CHECK-RV64-NO-COM-NEXT: $x1 = LD $x2, 2024 :: (load (s64) from %stack.1)
; CHECK-RV64-NO-COM-NEXT: $x2 = frame-destroy ADDI $x2, 2032
; CHECK-RV64-NO-COM-NEXT: PseudoRET
;
; CHECK-RV64-COM-LABEL: name: _Z15stack_size_8192v
; CHECK-RV64-COM: liveins: $x1
; CHECK-RV64-COM-NEXT: {{ $}}
; CHECK-RV64-COM-NEXT: $x2 = frame-setup ADDI $x2, -496
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 496
; CHECK-RV64-COM-NEXT: SD killed $x1, $x2, 488 :: (store (s64) into %stack.1)
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION offset $x1, -8
; CHECK-RV64-COM-NEXT: $x10 = frame-setup LUI 2
; CHECK-RV64-COM-NEXT: $x10 = frame-setup ADDIW killed $x10, -480
; CHECK-RV64-COM-NEXT: $x2 = frame-setup SUB $x2, killed $x10
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 8208
; CHECK-RV64-COM-NEXT: renamable $x10 = ADDI $x2, 8
; CHECK-RV64-COM-NEXT: PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
; CHECK-RV64-COM-NEXT: $x10 = frame-destroy LUI 2
; CHECK-RV64-COM-NEXT: $x10 = frame-destroy ADDIW killed $x10, -480
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
; CHECK-RV64-COM-NEXT: $x1 = LD $x2, 488 :: (load (s64) from %stack.1)
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 496
; CHECK-RV64-COM-NEXT: PseudoRET
ADJCALLSTACKDOWN 0, 0, implicit-def dead $x2, implicit $x2
renamable $x10 = ADDI %stack.0, 0
PseudoCALL target-flags(riscv-call) @_Z6calleePi, csr_ilp32_lp64, implicit-def dead $x1, implicit killed $x10, implicit-def $x2
ADJCALLSTACKUP 0, 0, implicit-def dead $x2, implicit $x2
PseudoRET
...