xref: /llvm-project/llvm/test/CodeGen/PowerPC/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 powerpc | FileCheck %s -check-prefixes=CHECK-32-BE
3*ad4a582fSAlex Rønne Petersen; RUN: llc < %s -mtriple powerpcle | FileCheck %s -check-prefixes=CHECK-32-LE
4*ad4a582fSAlex Rønne Petersen; RUN: llc < %s -mtriple powerpc64 | FileCheck %s -check-prefixes=CHECK-64-BE
5*ad4a582fSAlex Rønne Petersen; RUN: llc < %s -mtriple powerpc64le | FileCheck %s -check-prefixes=CHECK-64-LE
6*ad4a582fSAlex Rønne Petersen
7*ad4a582fSAlex Rønne Petersendeclare dso_local void @main()
8*ad4a582fSAlex Rønne Petersen
9*ad4a582fSAlex Rønne Petersendefine dso_local void @naked() naked "frame-pointer"="all" {
10*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-LABEL: naked:
11*ad4a582fSAlex Rønne Petersen; CHECK-32-BE:       # %bb.0:
12*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    bl main
13*ad4a582fSAlex Rønne Petersen;
14*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-LABEL: naked:
15*ad4a582fSAlex Rønne Petersen; CHECK-32-LE:       # %bb.0:
16*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    bl main
17*ad4a582fSAlex Rønne Petersen;
18*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-LABEL: naked:
19*ad4a582fSAlex Rønne Petersen; CHECK-64-BE:       # %bb.0:
20*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    bl main
21*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    nop
22*ad4a582fSAlex Rønne Petersen;
23*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-LABEL: naked:
24*ad4a582fSAlex Rønne Petersen; CHECK-64-LE:       # %bb.0:
25*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    bl main
26*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    nop
27*ad4a582fSAlex Rønne Petersen  call void @main()
28*ad4a582fSAlex Rønne Petersen  unreachable
29*ad4a582fSAlex Rønne Petersen}
30*ad4a582fSAlex Rønne Petersen
31*ad4a582fSAlex Rønne Petersendefine dso_local void @normal() "frame-pointer"="all" {
32*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-LABEL: normal:
33*ad4a582fSAlex Rønne Petersen; CHECK-32-BE:       # %bb.0:
34*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    mflr 0
35*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    stwu 1, -16(1)
36*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    stw 31, 12(1)
37*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    stw 0, 20(1)
38*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    .cfi_def_cfa_offset 16
39*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    .cfi_offset r31, -4
40*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    .cfi_offset lr, 4
41*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    mr 31, 1
42*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    .cfi_def_cfa_register r31
43*ad4a582fSAlex Rønne Petersen; CHECK-32-BE-NEXT:    bl main
44*ad4a582fSAlex Rønne Petersen;
45*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-LABEL: normal:
46*ad4a582fSAlex Rønne Petersen; CHECK-32-LE:       # %bb.0:
47*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    mflr 0
48*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    stwu 1, -16(1)
49*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    stw 31, 12(1)
50*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    stw 0, 20(1)
51*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    .cfi_def_cfa_offset 16
52*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    .cfi_offset r31, -4
53*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    .cfi_offset lr, 4
54*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    mr 31, 1
55*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    .cfi_def_cfa_register r31
56*ad4a582fSAlex Rønne Petersen; CHECK-32-LE-NEXT:    bl main
57*ad4a582fSAlex Rønne Petersen;
58*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-LABEL: normal:
59*ad4a582fSAlex Rønne Petersen; CHECK-64-BE:       # %bb.0:
60*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    mflr 0
61*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    std 31, -8(1)
62*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    stdu 1, -128(1)
63*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    std 0, 144(1)
64*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    .cfi_def_cfa_offset 128
65*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    .cfi_offset r31, -8
66*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    .cfi_offset lr, 16
67*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    mr 31, 1
68*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    .cfi_def_cfa_register r31
69*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    bl main
70*ad4a582fSAlex Rønne Petersen; CHECK-64-BE-NEXT:    nop
71*ad4a582fSAlex Rønne Petersen;
72*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-LABEL: normal:
73*ad4a582fSAlex Rønne Petersen; CHECK-64-LE:       # %bb.0:
74*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    mflr 0
75*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    std 31, -8(1)
76*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    stdu 1, -48(1)
77*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    std 0, 64(1)
78*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    .cfi_def_cfa_offset 48
79*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    .cfi_offset r31, -8
80*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    .cfi_offset lr, 16
81*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    mr 31, 1
82*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    .cfi_def_cfa_register r31
83*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    bl main
84*ad4a582fSAlex Rønne Petersen; CHECK-64-LE-NEXT:    nop
85*ad4a582fSAlex Rønne Petersen  call void @main()
86*ad4a582fSAlex Rønne Petersen  unreachable
87*ad4a582fSAlex Rønne Petersen}
88