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