xref: /llvm-project/llvm/test/CodeGen/RISCV/naked-fn-with-frame-pointer.ll (revision ad4a582fd938c933e784f0052bd773676b37b690)
1*ad4a582fSAlex Rønne Petersen; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py UTC_ARGS: --version 5
2*ad4a582fSAlex Rønne Petersen; RUN: llc < %s -mtriple riscv32 | FileCheck %s -check-prefixes=CHECK-32
3*ad4a582fSAlex Rønne Petersen; RUN: llc < %s -mtriple riscv64 | FileCheck %s -check-prefixes=CHECK-64
4*ad4a582fSAlex Rønne Petersen
5*ad4a582fSAlex Rønne Petersendeclare dso_local void @main()
6*ad4a582fSAlex Rønne Petersen
7*ad4a582fSAlex Rønne Petersendefine dso_local void @naked() naked "frame-pointer"="all" {
8*ad4a582fSAlex Rønne Petersen; CHECK-32-LABEL: naked:
9*ad4a582fSAlex Rønne Petersen; CHECK-32:       # %bb.0:
10*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    call main
11*ad4a582fSAlex Rønne Petersen;
12*ad4a582fSAlex Rønne Petersen; CHECK-64-LABEL: naked:
13*ad4a582fSAlex Rønne Petersen; CHECK-64:       # %bb.0:
14*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    call main
15*ad4a582fSAlex Rønne Petersen  call void @main()
16*ad4a582fSAlex Rønne Petersen  unreachable
17*ad4a582fSAlex Rønne Petersen}
18*ad4a582fSAlex Rønne Petersen
19*ad4a582fSAlex Rønne Petersendefine dso_local void @normal() "frame-pointer"="all" {
20*ad4a582fSAlex Rønne Petersen; CHECK-32-LABEL: normal:
21*ad4a582fSAlex Rønne Petersen; CHECK-32:       # %bb.0:
22*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    addi sp, sp, -16
23*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    .cfi_def_cfa_offset 16
24*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    sw ra, 12(sp) # 4-byte Folded Spill
25*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    sw s0, 8(sp) # 4-byte Folded Spill
26*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    .cfi_offset ra, -4
27*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    .cfi_offset s0, -8
28*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    addi s0, sp, 16
29*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    .cfi_def_cfa s0, 0
30*ad4a582fSAlex Rønne Petersen; CHECK-32-NEXT:    call main
31*ad4a582fSAlex Rønne Petersen;
32*ad4a582fSAlex Rønne Petersen; CHECK-64-LABEL: normal:
33*ad4a582fSAlex Rønne Petersen; CHECK-64:       # %bb.0:
34*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    addi sp, sp, -16
35*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    .cfi_def_cfa_offset 16
36*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    sd ra, 8(sp) # 8-byte Folded Spill
37*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    sd s0, 0(sp) # 8-byte Folded Spill
38*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    .cfi_offset ra, -8
39*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    .cfi_offset s0, -16
40*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    addi s0, sp, 16
41*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    .cfi_def_cfa s0, 0
42*ad4a582fSAlex Rønne Petersen; CHECK-64-NEXT:    call main
43*ad4a582fSAlex Rønne Petersen  call void @main()
44*ad4a582fSAlex Rønne Petersen  unreachable
45*ad4a582fSAlex Rønne Petersen}
46