157 lines · plain
1; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu | \2; RUN: FileCheck %s -check-prefix=PPC32-LINUX3 4; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu \5; RUN: -frame-pointer=all | FileCheck %s -check-prefix=PPC32-LINUX6 7; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu | \8; RUN: FileCheck %s -check-prefixes=PPC64,PPC64-LINUX9 10; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu \11; RUN: -frame-pointer=all | FileCheck %s -check-prefixes=PPC64,PPC64-LINUX12 13; RUN: llc -verify-machineinstrs < %s -mcpu=pwr4 -mattr=-altivec \14; RUN: -mtriple=powerpc-ibm-aix-xcoff | FileCheck %s \15; RUN: -check-prefix=PPC32-AIX16 17; RUN: llc -verify-machineinstrs < %s -mcpu=pwr4 -mattr=-altivec \18; RUN: -mtriple=powerpc-ibm-aix-xcoff -frame-pointer=all | FileCheck %s \19; RUN: -check-prefix=PPC32-AIX20 21; RUN: llc -verify-machineinstrs < %s -mcpu=pwr4 -mattr=-altivec \22; RUN: -mtriple=powerpc64-ibm-aix-xcoff | FileCheck %s \23; RUN: -check-prefixes=PPC64,PPC64-AIX24 25; RUN: llc -verify-machineinstrs < %s -mcpu=pwr4 -mattr=-altivec \26; RUN: -mtriple=powerpc64-ibm-aix-xcoff -frame-pointer=all | FileCheck %s \27; RUN: -check-prefixes=PPC64,PPC64-AIX28 29define dso_local signext i32 @foo(i32 %n) {30entry:31 %ptr0 = alloca ptr32 %0 = alloca i32, i32 %n33 store ptr %0, ptr %ptr034 %1 = alloca i32, i32 %n35 %2 = alloca i32, i32 %n36 %3 = alloca i32, i32 %n37 %4 = alloca i32, i32 %n38 %5 = alloca i32, i32 %n39 %6 = alloca i32, i32 %n40 %7 = alloca i32, i32 %n41 %8 = alloca i32, i32 %n42 %9 = load ptr, ptr %ptr043 44 %call = call i32 @bar(ptr %1, ptr %2, ptr %3, ptr %4, ptr %5, ptr %6, ptr %7, ptr %8, ptr %9)45 ret i32 %call46}47 48declare i32 @bar(ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr)49 50; PPC32-LINUX-LABEL: foo51; PPC32-LINUX: mflr 052; PPC32-LINUX: stwu 1, -32(1)53; PPC32-LINUX: stw 31, 28(1)54; PPC32-LINUX: stw 0, 36(1)55; PPC32-LINUX: mr 31, 156; PPC32-LINUX: addi 3, 31, 3257; PPC32-LINUX: stwux 3, 1, 1058 59; Allocated area is referred by stack pointer.60; PPC32-LINUX: addi 11, 1, 1661 62; Local variable area is referred by frame pointer.63; PPC32-LINUX: stw 11, 24(31)64 65; PPC32-LINUX: stwux66; PPC32-LINUX: stwux67; PPC32-LINUX: stwux68; PPC32-LINUX: stwux69; PPC32-LINUX: stwux70; PPC32-LINUX: stwux71; PPC32-LINUX: stwux72; PPC32-LINUX: stwux73; PPC32-LINUX-NOT: stuwux74 75; Parameter save area is referred by stack pointer.76; PPC32-LINUX: stw 11, 8(1)77 78; PPC32-LINUX: bl bar79; PPC32-LINUX: lwz 31, 0(1)80; PPC32-LINUX: lwz 0, -4(31)81; PPC32-LINUX: mr 1, 3182; PPC32-LINUX: mr 31, 083; PPC32-LINUX: lwz 0, 4(1)84; PPC32-LINUX: mtlr 085; PPC32-LINUX: blr86 87; PPC64-LABEL: foo88; PPC64: mflr 089; PPC64: std 31, -8(1)90; PPC64: stdu 1, -160(1)91; PPC64-DAG: mr 31, 192; PPC64-DAG: std 0, 176(1)93; PPC64: addi 3, 31, 16094; PPC64: stdux 3, 1, 1095 96; Allocated area is referred by stack pointer.97; PPC64: addi 11, 1, 12898 99; Local variable area is referred by frame pointer.100; PPC64: std 11, 144(31)101 102; PPC64: stdux103; PPC64: stdux104; PPC64: stdux105; PPC64: stdux106; PPC64: stdux107; PPC64: stdux108; PPC64: stdux109; PPC64: stdux110; PPC64-NOT: stdux111 112; Parameter save area is referred by stack pointer.113; PPC64: std 11, 112(1)114 115; PPC64-LINUX: bl bar116; PPC64-AIX: bl .bar117; PPC64: ld 1, 0(1)118; PPC64: ld 0, 16(1)119; PPC64-DAG: ld 31, -8(1)120; PPC64-DAG: mtlr 0121; PPC64: blr122 123; PPC32-AIX: mflr 0124; PPC32-AIX: stw 31, -4(1)125; PPC32-AIX: stwu 1, -80(1)126; PPC32-AIX: mr 31, 1127; PPC32-AIX: stw 0, 88(1)128; PPC32-AIX: addi 3, 31, 80129; PPC32-AIX: stwux 3, 1, 10130 131; Allocated area is referred by stack pointer.132; PPC32-AIX: addi 11, 1, 64133 134; Local variable area is referred by frame pointer.135; PPC32-AIX: stw 11, 72(31)136 137; PPC32-AIX: stwux138; PPC32-AIX: stwux139; PPC32-AIX: stwux140; PPC32-AIX: stwux141; PPC32-AIX: stwux142; PPC32-AIX: stwux143; PPC32-AIX: stwux144; PPC32-AIX: stwux145; PPC32-AIX-NOT: stwux146 147; Parameter save area is referred by stack pointer.148; PPC32-AIX: stw 11, 56(1)149 150; PPC32-AIX: bl .bar151; PPC32-AIX: nop152; PPC32-AIX: lwz 1, 0(1)153; PPC32-AIX: lwz 0, 8(1)154; PPC32-AIX-DAG: mtlr 0155; PPC32-AIX-DAG: lwz 31, -4(1)156; PPC32-AIX: blr157