xref: /llvm-project/llvm/test/CodeGen/PowerPC/aix64-vector-pair-cc-spills.ll (revision bc5e969ca1e1567ae5ad259f7f2d55a96e30b07f)
1; RUN: llc -O0 -mtriple=powerpc64-ibm-aix-xcoff -mcpu=pwr10 -stop-after=prologepilog -verify-machineinstrs < %s | \
2; RUN: FileCheck --check-prefix=CHECK %s
3; RUN: llc -O0 -mtriple=powerpc64-ibm-aix-xcoff -mcpu=pwr10 -vec-extabi -stop-after=prologepilog -verify-machineinstrs < %s | \
4; RUN: FileCheck --check-prefix=CHECK-VEXT %s
5
6; CHECK-LABEL: name: foo
7; CHECK-NOT: spill-slot
8; CHECK-NOT: callee-saved-register: '$v31'
9; CHECK-NOT: callee-saved-register: '$v30'
10; CHECK-NOT: callee-saved-register: '$v29'
11; CHECK-NOT: callee-saved-register: '$v28'
12; CHECK-NOT: callee-saved-register: '$v27'
13; CHECK-NOT: callee-saved-register: '$v26'
14; CHECK-NOT: callee-saved-register: '$v25'
15; CHECK-NOT: callee-saved-register: '$v24'
16; CHECK-NOT: callee-saved-register: '$v23'
17; CHECK-NOT: callee-saved-register: '$v22'
18; CHECK-NOT: callee-saved-register: '$v21'
19; CHECK-NOT: callee-saved-register: '$v20'
20
21; CHECK-VEXT-LABEL: name: foo
22; CHECK-VEXT-NOT: spill-slot
23; CHECK-VEXT-NOT: callee-saved-register: '$v31'
24; CHECK-VEXT-NOT: callee-saved-register: '$v30'
25; CHECK-VEXT-NOT: callee-saved-register: '$v29'
26; CHECK-VEXT-NOT: callee-saved-register: '$v28'
27; CHECK-VEXT-NOT: callee-saved-register: '$v27'
28; CHECK-VEXT-NOT: callee-saved-register: '$v26'
29; CHECK-VEXT-NOT: callee-saved-register: '$v25'
30; CHECK-VEXT-NOT: callee-saved-register: '$v24'
31; CHECK-VEXT-NOT: callee-saved-register: '$v23'
32; CHECK-VEXT-NOT: callee-saved-register: '$v22'
33; CHECK-VEXT-NOT: callee-saved-register: '$v21'
34; CHECK-VEXT-NOT: callee-saved-register: '$v20'
35define void @foo() {
36entry:
37  call void @bar(i32 0)
38  ret void
39}
40
41; CHECK-LABEL: name: spill
42; CHECK-NOT: spill-slot
43; CHECK-NOT: callee-saved-register: '$v31'
44; CHECK-NOT: callee-saved-register: '$v30'
45; CHECK-NOT: callee-saved-register: '$v29'
46; CHECK-NOT: callee-saved-register: '$v28'
47; CHECK-NOT: callee-saved-register: '$v27'
48; CHECK-NOT: callee-saved-register: '$v26'
49; CHECK-NOT: callee-saved-register: '$v25'
50; CHECK-NOT: callee-saved-register: '$v24'
51; CHECK-NOT: callee-saved-register: '$v23'
52; CHECK-NOT: callee-saved-register: '$v22'
53; CHECK-NOT: callee-saved-register: '$v21'
54; CHECK-NOT: callee-saved-register: '$v20'
55
56; CHECK-VEXT-LABEL: name: spill
57; CHECK-VEXT: spill-slot
58; CHECK-VEXT-NEXT: callee-saved-register: '$v31'
59; CHECK-VEXT: spill-slot
60; CHECK-VEXT-NEXT: callee-saved-register: '$v30'
61; CHECK-VEXT: spill-slot
62; CHECK-VEXT-NEXT: callee-saved-register: '$v29'
63; CHECK-VEXT: spill-slot
64; CHECK-VEXT-NEXT: callee-saved-register: '$v28'
65; CHECK-VEXT: spill-slot
66; CHECK-VEXT-NEXT: callee-saved-register: '$v27'
67; CHECK-VEXT: spill-slot
68; CHECK-VEXT-NEXT: callee-saved-register: '$v26'
69; CHECK-VEXT: spill-slot
70; CHECK-VEXT-NEXT: callee-saved-register: '$v25'
71; CHECK-VEXT: spill-slot
72; CHECK-VEXT-NEXT: callee-saved-register: '$v24'
73; CHECK-VEXT: spill-slot
74; CHECK-VEXT-NEXT: callee-saved-register: '$v23'
75; CHECK-VEXT: spill-slot
76; CHECK-VEXT-NEXT: callee-saved-register: '$v22'
77; CHECK-VEXT: spill-slot
78; CHECK-VEXT-NEXT: callee-saved-register: '$v21'
79; CHECK-VEXT: spill-slot
80; CHECK-VEXT-NEXT: callee-saved-register: '$v20'
81define void @spill() {
82entry:
83  call void asm sideeffect "nop", "~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"()
84  call void @bar(i32 0)
85  ret void
86}
87
88declare void @bar(i32)
89