| ; RUN: llc -O0 -mtriple=powerpc-ibm-aix-xcoff -mcpu=pwr10 -stop-after=prologepilog -verify-machineinstrs < %s | \ |
| ; RUN: FileCheck --check-prefix=CHECK %s |
| ; RUN: llc -O0 -mtriple=powerpc-ibm-aix-xcoff -mcpu=pwr10 -vec-extabi -stop-after=prologepilog -verify-machineinstrs < %s | \ |
| ; RUN: FileCheck --check-prefix=CHECK-VEXT %s |
| |
| ; CHECK-LABEL: name: foo |
| ; CHECK-NOT: spill-slot |
| ; CHECK-NOT: callee-saved-register: '$v31' |
| ; CHECK-NOT: callee-saved-register: '$v30' |
| ; CHECK-NOT: callee-saved-register: '$v29' |
| ; CHECK-NOT: callee-saved-register: '$v28' |
| ; CHECK-NOT: callee-saved-register: '$v27' |
| ; CHECK-NOT: callee-saved-register: '$v26' |
| ; CHECK-NOT: callee-saved-register: '$v25' |
| ; CHECK-NOT: callee-saved-register: '$v24' |
| ; CHECK-NOT: callee-saved-register: '$v23' |
| ; CHECK-NOT: callee-saved-register: '$v22' |
| ; CHECK-NOT: callee-saved-register: '$v21' |
| ; CHECK-NOT: callee-saved-register: '$v20' |
| |
| ; CHECK-VEXT-LABEL: name: foo |
| ; CHECK-VEXT-NOT: spill-slot |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v31' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v30' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v29' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v28' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v27' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v26' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v25' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v24' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v23' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v22' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v21' |
| ; CHECK-VEXT-NOT: callee-saved-register: '$v20' |
| define void @foo() { |
| entry: |
| call void @bar(i32 0) |
| ret void |
| } |
| |
| ; CHECK-LABEL: name: spill |
| ; CHECK-NOT: spill-slot |
| ; CHECK-NOT: callee-saved-register: '$v31' |
| ; CHECK-NOT: callee-saved-register: '$v30' |
| ; CHECK-NOT: callee-saved-register: '$v29' |
| ; CHECK-NOT: callee-saved-register: '$v28' |
| ; CHECK-NOT: callee-saved-register: '$v27' |
| ; CHECK-NOT: callee-saved-register: '$v26' |
| ; CHECK-NOT: callee-saved-register: '$v25' |
| ; CHECK-NOT: callee-saved-register: '$v24' |
| ; CHECK-NOT: callee-saved-register: '$v23' |
| ; CHECK-NOT: callee-saved-register: '$v22' |
| ; CHECK-NOT: callee-saved-register: '$v21' |
| ; CHECK-NOT: callee-saved-register: '$v20' |
| |
| ; CHECK-VEXT-LABEL: name: spill |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v31' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v30' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v29' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v28' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v27' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v26' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v25' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v24' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v23' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v22' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v21' |
| ; CHECK-VEXT: spill-slot |
| ; CHECK-VEXT-NEXT: callee-saved-register: '$v20' |
| define void @spill() { |
| entry: |
| call void asm sideeffect "nop", "~{v20},~{v21},~{v22},~{v23},~{v24},~{v25},~{v26},~{v27},~{v28},~{v29},~{v30},~{v31}"() |
| call void @bar(i32 0) |
| ret void |
| } |
| |
| declare void @bar(i32) |