CodeQL / Analyze (actions) (push) Canceled after 0s
CodeQL / Analyze (python) (push) Canceled after 0s
pre-commit / pre-commit (push) Canceled after 0s
Multi-Arch CI / setup (push) Canceled after 0s
Publish build_manylinux_x86_64 images / publish_build_manylinux_x86_64 (push) Canceled after 0s
Setup (Multi-Arch) / setup (push) Canceled after 0s
Multi-Arch CI / Linux::${{ fromJSON(needs.setup.outputs.linux_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubi10 image / publish_no_rocm_image_ubi10 (push) Canceled after 0s
Multi-Arch CI / Windows::${{ fromJSON(needs.setup.outputs.windows_build_config || '{}').build_variant_label || 'skip' }} (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Multi-Arch CI / Manifest Diff (push) Canceled after 0s
TheRock Manifest Diff Report / Generate Manifest Diff Report (push) Canceled after 0s
Multi-Arch CI / CI Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_ocl_rt images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04_rocgdb images / publish_no_rocm_image_ubuntu24_04_rocgdb (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_ocl_rt (push) Canceled after 0s
Publish TheRock Docker image / build-and-push-image (push) Canceled after 0s
Unit Tests / Unit Tests :: ubuntu-24.04 (push) Canceled after 0s
Unit Tests / Unit Tests :: windows-2022 (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_media (push) Canceled after 0s
Unit Tests / Unit Tests Summary (push) Canceled after 0s
Publish no_rocm_image_ubuntu24_04 images / publish_no_rocm_image_ubuntu24_04_openmpi (push) Canceled after 0s
355 lines
16 KiB
YAML
355 lines
16 KiB
YAML
# RUN: llc -mtriple=riscv32 -enable-machine-outliner -start-before=machine-outliner \
|
|
# RUN: -verify-machineinstrs %s -o - | FileCheck %s
|
|
--- |
|
|
define i8 @test1(ptr %var1, ptr %0, ptr %var12, ptr %var2, ptr %var3, ptr %var11, ptr %var6, ptr %var7, ptr %var8, ptr %var9, ptr %1, ptr %var10, ptr %2) #0 {
|
|
; CHECK-LABEL: test1:
|
|
; CHECK: # %bb.0: # %entry
|
|
; CHECK-NEXT: addi sp, sp, -32
|
|
; CHECK-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s0, 24(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s1, 20(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s2, 16(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s3, 12(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: mv s0, a7
|
|
; CHECK-NEXT: mv t0, a6
|
|
; CHECK-NEXT: mv t1, a5
|
|
; CHECK-NEXT: mv s1, a4
|
|
; CHECK-NEXT: mv a1, a3
|
|
; CHECK-NEXT: lw s2, 48(sp)
|
|
; CHECK-NEXT: lw s3, 40(sp)
|
|
; CHECK-NEXT: lw a5, 32(sp)
|
|
; CHECK-NEXT: li a6, 1
|
|
; CHECK-NEXT: li a7, 1
|
|
; CHECK-NEXT: li t3, 0
|
|
; CHECK-NEXT: mv a2, a0
|
|
; CHECK-NEXT: mv a3, t1
|
|
; CHECK-NEXT: tail OUTLINED_FUNCTION_0
|
|
entry:
|
|
%var4 = alloca ptr, align 4
|
|
%var5 = alloca ptr, align 4
|
|
%call = call fastcc i8 null(ptr %var1, ptr %var2, ptr %var1, ptr %var11, ptr %var6, ptr %var8, i32 1, i8 1)
|
|
store ptr %1, ptr %var3, align 4
|
|
store ptr %2, ptr %var7, align 4
|
|
ret i8 1
|
|
}
|
|
|
|
define i8 @test2(ptr %var1, ptr %0, ptr %var12, ptr %var2, ptr %var3, ptr %var11, ptr %var6, ptr %var7, ptr %var8, ptr %var9, ptr %1, ptr %var10, ptr %2) #0 {
|
|
; CHECK-LABEL: test2:
|
|
; CHECK: # %bb.0: # %entry
|
|
; CHECK-NEXT: addi sp, sp, -32
|
|
; CHECK-NEXT: sw ra, 28(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s0, 24(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s1, 20(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s2, 16(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: sw s3, 12(sp) # 4-byte Folded Spill
|
|
; CHECK-NEXT: mv s0, a7
|
|
; CHECK-NEXT: mv t0, a6
|
|
; CHECK-NEXT: mv t1, a5
|
|
; CHECK-NEXT: mv s1, a4
|
|
; CHECK-NEXT: mv a2, a3
|
|
; CHECK-NEXT: lw s2, 48(sp)
|
|
; CHECK-NEXT: lw s3, 40(sp)
|
|
; CHECK-NEXT: lw a5, 32(sp)
|
|
; CHECK-NEXT: li a6, 1
|
|
; CHECK-NEXT: li a7, 1
|
|
; CHECK-NEXT: li t3, 0
|
|
; CHECK-NEXT: mv a1, a0
|
|
; CHECK-NEXT: mv a3, t1
|
|
; CHECK-NEXT: tail OUTLINED_FUNCTION_0
|
|
entry:
|
|
%var4 = alloca ptr, align 4
|
|
%var5 = alloca ptr, align 4
|
|
%call = call fastcc i8 null(ptr %var1, ptr %var1, ptr %var2, ptr %var11, ptr %var6, ptr %var8, i32 1, i8 1)
|
|
store ptr %1, ptr %var3, align 4
|
|
store ptr %2, ptr %var7, align 4
|
|
ret i8 1
|
|
}
|
|
|
|
; NOTE: the utils/update_llc_test_checks.py script does not produce checks for the outlined function
|
|
; so this is manually specified.
|
|
; CHECK-LABEL: OUTLINED_FUNCTION_0:
|
|
; CHECK: # %bb.0:
|
|
; CHECK-NEXT: mv a4, t0
|
|
; CHECK-NEXT: jalr t3
|
|
; CHECK-NEXT: sw s3, 0(s1)
|
|
; CHECK-NEXT: li a0, 1
|
|
; CHECK-NEXT: sw s2, 0(s0)
|
|
; CHECK-NEXT: lw ra, 28(sp)
|
|
; CHECK-NEXT: lw s0, 24(sp)
|
|
; CHECK-NEXT: lw s1, 20(sp)
|
|
; CHECK-NEXT: lw s2, 16(sp)
|
|
; CHECK-NEXT: lw s3, 12(sp)
|
|
; CHECK-NEXT: addi sp, sp, 32
|
|
; CHECK-NEXT: ret
|
|
|
|
attributes #0 = { minsize nounwind }
|
|
...
|
|
---
|
|
name: test1
|
|
alignment: 4
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
hasWinCFI: false
|
|
noPhis: true
|
|
isSSA: false
|
|
noVRegs: true
|
|
hasFakeUses: false
|
|
callsEHReturn: false
|
|
callsUnwindInit: false
|
|
hasEHContTarget: false
|
|
hasEHScopes: false
|
|
hasEHFunclets: false
|
|
isOutlined: false
|
|
debugInstrRef: false
|
|
failsVerification: false
|
|
tracksDebugUserValues: true
|
|
registers: []
|
|
liveins:
|
|
- { reg: '$x10', virtual-reg: '' }
|
|
- { reg: '$x13', virtual-reg: '' }
|
|
- { reg: '$x14', virtual-reg: '' }
|
|
- { reg: '$x15', virtual-reg: '' }
|
|
- { reg: '$x16', virtual-reg: '' }
|
|
- { reg: '$x17', virtual-reg: '' }
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 32
|
|
offsetAdjustment: 0
|
|
maxAlignment: 4
|
|
adjustsStack: true
|
|
hasCalls: true
|
|
stackProtector: ''
|
|
functionContext: ''
|
|
maxCallFrameSize: 0
|
|
cvBytesOfCalleeSavedRegisters: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
hasTailCall: false
|
|
isCalleeSavedInfoValid: true
|
|
localFrameSize: 8
|
|
fixedStack:
|
|
- { id: 0, type: default, offset: 16, size: 4, alignment: 16, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 1, type: default, offset: 12, size: 4, alignment: 4, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 2, type: default, offset: 8, size: 4, alignment: 8, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 3, type: default, offset: 4, size: 4, alignment: 4, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 4, type: default, offset: 0, size: 4, alignment: 16, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
stack:
|
|
- { id: 0, name: var4, type: default, offset: -24, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '', callee-saved-restored: true,
|
|
local-offset: -4, debug-info-variable: '', debug-info-expression: '',
|
|
debug-info-location: '' }
|
|
- { id: 1, name: var5, type: default, offset: -28, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '', callee-saved-restored: true,
|
|
local-offset: -8, debug-info-variable: '', debug-info-expression: '',
|
|
debug-info-location: '' }
|
|
- { id: 2, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x1', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 3, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x8', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 4, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x9', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 5, name: '', type: spill-slot, offset: -16, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x18', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 6, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x19', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
entry_values: []
|
|
callSites: []
|
|
debugValueSubstitutions: []
|
|
constants: []
|
|
machineFunctionInfo:
|
|
varArgsFrameIndex: 0
|
|
varArgsSaveSize: 0
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x10, $x13, $x14, $x15, $x16, $x17, $x1, $x8, $x9, $x18, $x19
|
|
|
|
$x2 = frame-setup ADDI $x2, -32
|
|
frame-setup SW killed $x1, $x2, 28 :: (store (s32) into %stack.2)
|
|
frame-setup SW killed $x8, $x2, 24 :: (store (s32) into %stack.3)
|
|
frame-setup SW killed $x9, $x2, 20 :: (store (s32) into %stack.4)
|
|
frame-setup SW killed $x18, $x2, 16 :: (store (s32) into %stack.5)
|
|
frame-setup SW killed $x19, $x2, 12 :: (store (s32) into %stack.6)
|
|
$x8 = ADDI $x17, 0
|
|
$x5 = ADDI $x16, 0
|
|
$x6 = ADDI $x15, 0
|
|
$x9 = ADDI $x14, 0
|
|
$x11 = ADDI $x13, 0
|
|
renamable $x18 = LW $x2, 48 :: (load (s32) from %fixed-stack.0, align 16)
|
|
renamable $x19 = LW $x2, 40 :: (load (s32) from %fixed-stack.2, align 8)
|
|
renamable $x15 = LW $x2, 32 :: (load (s32) from %fixed-stack.4, align 16)
|
|
$x16 = ADDI $x0, 1
|
|
$x17 = ADDI $x0, 1
|
|
$x28 = ADDI $x0, 0
|
|
$x12 = ADDI renamable $x10, 0
|
|
$x13 = ADDI killed renamable $x6, 0
|
|
$x14 = ADDI killed renamable $x5, 0
|
|
PseudoCALLIndirect killed renamable $x28, csr_ilp32_lp64, implicit-def dead $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit $x14, implicit $x15, implicit $x16, implicit $x17, implicit-def $x2, implicit-def dead $x10
|
|
SW killed renamable $x19, killed renamable $x9, 0 :: (store (s32) into %ir.var3)
|
|
$x10 = ADDI $x0, 1
|
|
SW killed renamable $x18, killed renamable $x8, 0 :: (store (s32) into %ir.var7)
|
|
$x1 = frame-destroy LW $x2, 28 :: (load (s32) from %stack.2)
|
|
$x8 = frame-destroy LW $x2, 24 :: (load (s32) from %stack.3)
|
|
$x9 = frame-destroy LW $x2, 20 :: (load (s32) from %stack.4)
|
|
$x18 = frame-destroy LW $x2, 16 :: (load (s32) from %stack.5)
|
|
$x19 = frame-destroy LW $x2, 12 :: (load (s32) from %stack.6)
|
|
$x2 = frame-destroy ADDI $x2, 32
|
|
PseudoRET implicit $x10
|
|
...
|
|
---
|
|
name: test2
|
|
alignment: 4
|
|
exposesReturnsTwice: false
|
|
legalized: false
|
|
regBankSelected: false
|
|
selected: false
|
|
failedISel: false
|
|
tracksRegLiveness: true
|
|
hasWinCFI: false
|
|
noPhis: true
|
|
isSSA: false
|
|
noVRegs: true
|
|
hasFakeUses: false
|
|
callsEHReturn: false
|
|
callsUnwindInit: false
|
|
hasEHContTarget: false
|
|
hasEHScopes: false
|
|
hasEHFunclets: false
|
|
isOutlined: false
|
|
debugInstrRef: false
|
|
failsVerification: false
|
|
tracksDebugUserValues: true
|
|
registers: []
|
|
liveins:
|
|
- { reg: '$x10', virtual-reg: '' }
|
|
- { reg: '$x13', virtual-reg: '' }
|
|
- { reg: '$x14', virtual-reg: '' }
|
|
- { reg: '$x15', virtual-reg: '' }
|
|
- { reg: '$x16', virtual-reg: '' }
|
|
- { reg: '$x17', virtual-reg: '' }
|
|
frameInfo:
|
|
isFrameAddressTaken: false
|
|
isReturnAddressTaken: false
|
|
hasStackMap: false
|
|
hasPatchPoint: false
|
|
stackSize: 32
|
|
offsetAdjustment: 0
|
|
maxAlignment: 4
|
|
adjustsStack: true
|
|
hasCalls: true
|
|
stackProtector: ''
|
|
functionContext: ''
|
|
maxCallFrameSize: 0
|
|
cvBytesOfCalleeSavedRegisters: 0
|
|
hasOpaqueSPAdjustment: false
|
|
hasVAStart: false
|
|
hasMustTailInVarArgFunc: false
|
|
hasTailCall: false
|
|
isCalleeSavedInfoValid: true
|
|
localFrameSize: 8
|
|
fixedStack:
|
|
- { id: 0, type: default, offset: 16, size: 4, alignment: 16, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 1, type: default, offset: 12, size: 4, alignment: 4, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 2, type: default, offset: 8, size: 4, alignment: 8, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 3, type: default, offset: 4, size: 4, alignment: 4, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 4, type: default, offset: 0, size: 4, alignment: 16, stack-id: default,
|
|
isImmutable: true, isAliased: false, callee-saved-register: '', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
stack:
|
|
- { id: 0, name: var4, type: default, offset: -24, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '', callee-saved-restored: true,
|
|
local-offset: -4, debug-info-variable: '', debug-info-expression: '',
|
|
debug-info-location: '' }
|
|
- { id: 1, name: var5, type: default, offset: -28, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '', callee-saved-restored: true,
|
|
local-offset: -8, debug-info-variable: '', debug-info-expression: '',
|
|
debug-info-location: '' }
|
|
- { id: 2, name: '', type: spill-slot, offset: -4, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x1', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 3, name: '', type: spill-slot, offset: -8, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x8', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 4, name: '', type: spill-slot, offset: -12, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x9', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 5, name: '', type: spill-slot, offset: -16, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x18', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
- { id: 6, name: '', type: spill-slot, offset: -20, size: 4, alignment: 4,
|
|
stack-id: default, callee-saved-register: '$x19', callee-saved-restored: true,
|
|
debug-info-variable: '', debug-info-expression: '', debug-info-location: '' }
|
|
entry_values: []
|
|
callSites: []
|
|
debugValueSubstitutions: []
|
|
constants: []
|
|
machineFunctionInfo:
|
|
varArgsFrameIndex: 0
|
|
varArgsSaveSize: 0
|
|
body: |
|
|
bb.0.entry:
|
|
liveins: $x10, $x13, $x14, $x15, $x16, $x17, $x1, $x8, $x9, $x18, $x19
|
|
|
|
$x2 = frame-setup ADDI $x2, -32
|
|
frame-setup SW killed $x1, $x2, 28 :: (store (s32) into %stack.2)
|
|
frame-setup SW killed $x8, $x2, 24 :: (store (s32) into %stack.3)
|
|
frame-setup SW killed $x9, $x2, 20 :: (store (s32) into %stack.4)
|
|
frame-setup SW killed $x18, $x2, 16 :: (store (s32) into %stack.5)
|
|
frame-setup SW killed $x19, $x2, 12 :: (store (s32) into %stack.6)
|
|
$x8 = ADDI $x17, 0
|
|
$x5 = ADDI $x16, 0
|
|
$x6 = ADDI $x15, 0
|
|
$x9 = ADDI $x14, 0
|
|
$x12 = ADDI $x13, 0
|
|
renamable $x18 = LW $x2, 48 :: (load (s32) from %fixed-stack.0, align 16)
|
|
renamable $x19 = LW $x2, 40 :: (load (s32) from %fixed-stack.2, align 8)
|
|
renamable $x15 = LW $x2, 32 :: (load (s32) from %fixed-stack.4, align 16)
|
|
$x16 = ADDI $x0, 1
|
|
$x17 = ADDI $x0, 1
|
|
$x28 = ADDI $x0, 0
|
|
$x11 = ADDI renamable $x10, 0
|
|
$x13 = ADDI killed renamable $x6, 0
|
|
$x14 = ADDI killed renamable $x5, 0
|
|
PseudoCALLIndirect killed renamable $x28, csr_ilp32_lp64, implicit-def dead $x1, implicit $x10, implicit $x11, implicit $x12, implicit $x13, implicit $x14, implicit $x15, implicit $x16, implicit $x17, implicit-def $x2, implicit-def dead $x10
|
|
SW killed renamable $x19, killed renamable $x9, 0 :: (store (s32) into %ir.var3)
|
|
$x10 = ADDI $x0, 1
|
|
SW killed renamable $x18, killed renamable $x8, 0 :: (store (s32) into %ir.var7)
|
|
$x1 = frame-destroy LW $x2, 28 :: (load (s32) from %stack.2)
|
|
$x8 = frame-destroy LW $x2, 24 :: (load (s32) from %stack.3)
|
|
$x9 = frame-destroy LW $x2, 20 :: (load (s32) from %stack.4)
|
|
$x18 = frame-destroy LW $x2, 16 :: (load (s32) from %stack.5)
|
|
$x19 = frame-destroy LW $x2, 12 :: (load (s32) from %stack.6)
|
|
$x2 = frame-destroy ADDI $x2, 32
|
|
PseudoRET implicit $x10
|
|
...
|