; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 2 ; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \ ; RUN: | FileCheck -check-prefix=NOT-X60 %s ; RUN: llc -mtriple=riscv64 -mcpu=spacemit-x60 -verify-machineinstrs < %s \ ; RUN: | FileCheck -check-prefix=X60 %s declare void @callee(ptr) define void @test_stack_sort() { ; NOT-X60-LABEL: test_stack_sort: ; NOT-X60: # %bb.0: ; NOT-X60-NEXT: addi sp, sp, -32 ; NOT-X60-NEXT: .cfi_def_cfa_offset 32 ; NOT-X60-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; NOT-X60-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; NOT-X60-NEXT: .cfi_offset ra, -8 ; NOT-X60-NEXT: .cfi_offset s0, -16 ; NOT-X60-NEXT: addi s0, sp, 32 ; NOT-X60-NEXT: .cfi_def_cfa s0, 0 ; NOT-X60-NEXT: andi sp, sp, -32 ; NOT-X60-NEXT: mv a0, sp ; NOT-X60-NEXT: call callee ; NOT-X60-NEXT: addi sp, s0, -32 ; NOT-X60-NEXT: .cfi_def_cfa sp, 32 ; NOT-X60-NEXT: ld ra, 24(sp) # 8-byte Folded Reload ; NOT-X60-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; NOT-X60-NEXT: .cfi_restore ra ; NOT-X60-NEXT: .cfi_restore s0 ; NOT-X60-NEXT: addi sp, sp, 32 ; NOT-X60-NEXT: .cfi_def_cfa_offset 0 ; NOT-X60-NEXT: ret ; ; X60-LABEL: test_stack_sort: ; X60: # %bb.0: ; X60-NEXT: addi sp, sp, -32 ; X60-NEXT: .cfi_def_cfa_offset 32 ; X60-NEXT: sd s0, 16(sp) # 8-byte Folded Spill ; X60-NEXT: sd ra, 24(sp) # 8-byte Folded Spill ; X60-NEXT: .cfi_offset s0, -16 ; X60-NEXT: .cfi_offset ra, -8 ; X60-NEXT: addi s0, sp, 32 ; X60-NEXT: .cfi_def_cfa s0, 0 ; X60-NEXT: andi sp, sp, -32 ; X60-NEXT: mv a0, sp ; X60-NEXT: call callee ; X60-NEXT: addi sp, s0, -32 ; X60-NEXT: .cfi_def_cfa sp, 32 ; X60-NEXT: ld s0, 16(sp) # 8-byte Folded Reload ; X60-NEXT: ld ra, 24(sp) # 8-byte Folded Reload ; X60-NEXT: .cfi_restore s0 ; X60-NEXT: .cfi_restore ra ; X60-NEXT: addi sp, sp, 32 ; X60-NEXT: .cfi_def_cfa_offset 0 ; X60-NEXT: ret %1 = alloca i8, align 32 call void @callee(ptr %1) ret void }