llvm-project/llvm/test/CodeGen/RISCV/stack-inst-compress.mir
laichunfeng 13454a6e87 [RISCV] Compress stack insts by adjust offset.
For callee saved/restored operations, they mostly use the
following inst patterns,
sw rs2, offset(x2)
sd rs2, offset(x2)
fsw rs2, offset(x2)
fsd rs2, offset(x2)

lw rd, offset(x2)
ld rd, offset(x2)
flw rd, offset(x2)
fld rd, offset(x2)
and offset decides whether the instructions can be compressed.
now offset 2032 will be set by default if stacksize is bigger
than 2^12-1 to save and restore callee saved register, so it
will prevent all the callee saved/restored stack insts be
compressed.
Allocating proper offset for stack insts is useful to make
them be compressed.

Reviewed By: craig.topper, wangpc

Differential Revision: https://reviews.llvm.org/D157373
2023-08-18 10:49:53 +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, -512
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 512
; CHECK-RV64-COM-NEXT: SD killed $x1, $x2, 504 :: (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, -1552
; 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, 1552
; CHECK-RV64-COM-NEXT: $x1 = LD $x2, 504 :: (load (s64) from %stack.1)
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 512
; 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, -512
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 512
; CHECK-RV64-COM-NEXT: SD killed $x1, $x2, 504 :: (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, -1552
; 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, 1568
; CHECK-RV64-COM-NEXT: $x1 = LD $x2, 504 :: (load (s64) from %stack.1)
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 512
; 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, -512
; CHECK-RV64-COM-NEXT: frame-setup CFI_INSTRUCTION def_cfa_offset 512
; CHECK-RV64-COM-NEXT: SD killed $x1, $x2, 504 :: (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, -496
; 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, -496
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADD $x2, killed $x10
; CHECK-RV64-COM-NEXT: $x1 = LD $x2, 504 :: (load (s64) from %stack.1)
; CHECK-RV64-COM-NEXT: $x2 = frame-destroy ADDI $x2, 512
; 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
...