xref: /llvm-project/llvm/test/CodeGen/PowerPC/patchable-function-entry.ll (revision 43213002b99e32d618f2afbbaaeb2ff8dfc84e33)
1*43213002SChen Zheng; RUN: llc -mtriple=powerpc %s -o - | FileCheck %s --check-prefixes=CHECK,PPC32
2*43213002SChen Zheng; RUN: llc -mtriple=powerpc64 %s -o - | FileCheck %s --check-prefixes=CHECK,PPC64
3*43213002SChen Zheng
4*43213002SChen Zheng@a = global i32 0, align 4
5*43213002SChen Zheng
6*43213002SChen Zhengdefine void @f0() {
7*43213002SChen Zheng; CHECK-LABEL: f0:
8*43213002SChen Zheng; CHECK-NOT:   nop
9*43213002SChen Zheng; CHECK:       # %bb.0:
10*43213002SChen Zheng; CHECK-NEXT:    blr
11*43213002SChen Zheng; CHECK-NOT:   .section    __patchable_function_entries
12*43213002SChen Zheng  ret void
13*43213002SChen Zheng}
14*43213002SChen Zheng
15*43213002SChen Zhengdefine void @f1() "patchable-function-entry"="0" {
16*43213002SChen Zheng; CHECK-LABEL: f1:
17*43213002SChen Zheng; CHECK-NOT:   nop
18*43213002SChen Zheng; CHECK:       # %bb.0:
19*43213002SChen Zheng; CHECK-NEXT:    blr
20*43213002SChen Zheng; CHECK-NOT:   .section    __patchable_function_entries
21*43213002SChen Zheng  ret void
22*43213002SChen Zheng}
23*43213002SChen Zheng
24*43213002SChen Zhengdefine void @f2() "patchable-function-entry"="1" {
25*43213002SChen Zheng; CHECK-LABEL: f2:
26*43213002SChen Zheng; CHECK-LABEL-NEXT:  .Lfunc_begin2:
27*43213002SChen Zheng; CHECK:       # %bb.0:
28*43213002SChen Zheng; CHECK-NEXT:    nop
29*43213002SChen Zheng; CHECK-NEXT:    blr
30*43213002SChen Zheng; CHECK:       .section    __patchable_function_entries
31*43213002SChen Zheng; PPC32:       .p2align    2, 0x0
32*43213002SChen Zheng; PPC64:       .p2align    3, 0x0
33*43213002SChen Zheng; PPC32-NEXT:  .long   .Lfunc_begin2
34*43213002SChen Zheng; PPC64-NEXT:  .quad   .Lfunc_begin2
35*43213002SChen Zheng  ret void
36*43213002SChen Zheng}
37*43213002SChen Zheng
38*43213002SChen Zhengdefine i32 @f3() "patchable-function-entry"="1" "patchable-function-prefix"="2" {
39*43213002SChen Zheng; CHECK-LABEL: .Ltmp0:
40*43213002SChen Zheng; CHECK-COUNT-2: nop
41*43213002SChen Zheng; CHECK-LABEL: f3:
42*43213002SChen Zheng; CHECK:       # %bb.0:
43*43213002SChen Zheng; CHECK-NEXT:    nop
44*43213002SChen Zheng; PPC32:         lis 3, a@ha
45*43213002SChen Zheng; PPC32-NEXT:    lwz 3, a@l(3)
46*43213002SChen Zheng; PPC64:         addis 3, 2, .LC0@toc@ha
47*43213002SChen Zheng; PPC64-NEXT:    ld 3, .LC0@toc@l(3)
48*43213002SChen Zheng; PPC64-NEXT:    lwz 3, 0(3)
49*43213002SChen Zheng; CHECK:         blr
50*43213002SChen Zheng; CHECK:       .section    __patchable_function_entries
51*43213002SChen Zheng; PPC32:       .p2align    2, 0x0
52*43213002SChen Zheng; PPC64:       .p2align    3, 0x0
53*43213002SChen Zheng; PPC32-NEXT:  .long   .Ltmp0
54*43213002SChen Zheng; PPC64-NEXT:  .quad   .Ltmp0
55*43213002SChen Zhengentry:
56*43213002SChen Zheng  %0 = load i32, ptr @a, align 4
57*43213002SChen Zheng  ret i32 %0
58*43213002SChen Zheng}
59