xref: /llvm-project/llvm/test/CodeGen/PowerPC/test_call_aix.ll (revision 5403c59c608c08c8ecd4303763f08eb046eb5e4d)
1; RUN: llc -mtriple powerpc-ibm-aix-xcoff -stop-after=machine-cp < %s | \
2; RUN: FileCheck --check-prefix=32BIT %s
3
4; RUN: llc -mtriple powerpc64-ibm-aix-xcoff -stop-after=machine-cp < %s | \
5; RUN: FileCheck --check-prefix=64BIT %s
6
7; RUN: llc -mtriple powerpc-ibm-aix-xcoff < %s | FileCheck %s
8; RUN: llc -mtriple powerpc64-ibm-aix-xcoff < %s | FileCheck %s
9
10declare void @foo(...)
11
12define void @test_call() {
13entry:
14; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
15; 32BIT: BL_NOP <mcsymbol .foo[PR]>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r2, implicit-def $r1
16; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
17
18; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
19; 64BIT: BL8_NOP <mcsymbol .foo[PR]>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x2, implicit-def $r1
20; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
21
22; CHECK-LABEL: test_call
23; CHECK: bl .foo
24; CHECK-NEXT: nop
25
26  call void @foo()
27  ret void
28}
29
30define hidden void @foo_local() {
31entry:
32  ret void
33}
34
35define void @test_local_call() {
36entry:
37; 32BIT: ADJCALLSTACKDOWN 56, 0, implicit-def dead $r1, implicit $r1
38; 32BIT: BL <mcsymbol .foo_local>, csr_aix32, implicit-def dead $lr, implicit $rm, implicit $r2, implicit-def $r1
39; 32BIT: ADJCALLSTACKUP 56, 0, implicit-def dead $r1, implicit $r1
40
41; 64BIT: ADJCALLSTACKDOWN 112, 0, implicit-def dead $r1, implicit $r1
42; 64BIT: BL8 <mcsymbol .foo_local>, csr_ppc64, implicit-def dead $lr8, implicit $rm, implicit $x2, implicit-def $r1
43; 64BIT: ADJCALLSTACKUP 112, 0, implicit-def dead $r1, implicit $r1
44
45; CHECK-LABEL: test_local_call
46; CHECK: bl .foo_local
47; CHECK-NOT: nop
48
49  call void @foo_local()
50  ret void
51}
52