1; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu | \ 2; RUN: FileCheck %s -check-prefix=PPC32-LINUX-NOFP 3 4; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc-unknown-linux-gnu \ 5; RUN: -frame-pointer=all | FileCheck %s -check-prefix=PPC32-LINUX-FP 6 7; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu | \ 8; RUN: FileCheck %s -check-prefix=PPC64-LINUX-NOFP 9 10; RUN: llc -verify-machineinstrs < %s -mtriple=powerpc64-unknown-linux-gnu \ 11; RUN: -frame-pointer=all | FileCheck %s -check-prefix=PPC64-LINUX-FP 12 13; RUN: llc -verify-machineinstrs < %s -mcpu=pwr4 -mattr=-altivec \ 14; RUN: -mtriple=powerpc-ibm-aix-xcoff | FileCheck %s \ 15; RUN: -check-prefix=PPC32-AIX-NOFP 16 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-AIX-FP 20 21; RUN: llc -verify-machineinstrs < %s -mcpu=pwr4 -mattr=-altivec \ 22; RUN: -mtriple=powerpc64-ibm-aix-xcoff | FileCheck %s \ 23; RUN: -check-prefix=PPC64-AIX-NOFP 24 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-prefix=PPC64-AIX-FP 28 29define i32* @f1() nounwind { 30 %tmp = alloca i32, i32 8191 ; <i32*> [#uses=1] 31 ret i32* %tmp 32} 33 34; - The stdux is used to update the back-chain link when allocated frame is large 35; that we can not address it by a 16-bit signed integer; 36; - The linkage area, if there is one, is still on the top of the stack after 37; `alloca` space. 38 39; PPC32-LINUX-NOFP-LABEL: f1 40; PPC32-LINUX-NOFP: lis 0, -1 41; PPC32-LINUX-NOFP-NEXT: ori 0, 0, 32752 42; PPC32-LINUX-NOFP-NEXT: stwux 1, 1, 0 43; PPC32-LINUX-NOFP-NOT: stwux 44; PPC32-LINUX-NOFP: mr 0, 31 45; PPC32-LINUX-NOFP-DAG: addi 3, 1, 20 46; PPC32-LINUX-NOFP-DAG: lwz 31, 0(1) 47; PPC32-LINUX-NOFP-NEXT: mr 1, 31 48; PPC32-LINUX-NOFP-NEXT: mr 31, 0 49; PPC32-LINUX-NOFP-NEXT: blr 50 51; PPC32-LINUX-FP-LABEL: f1 52; PPC32-LINUX-FP: lis 0, -1 53; PPC32-LINUX-FP-NEXT: ori 0, 0, 32752 54; PPC32-LINUX-FP-NEXT: stwux 1, 1, 0 55; PPC32-LINUX-FP-NOT: stwux 56; PPC32-LINUX-FP: mr 31, 1 57; PPC32-LINUX-FP-NEXT: addi 3, 31, 16 58; PPC32-LINUX-FP-NEXT: lwz 31, 0(1) 59; PPC32-LINUX-FP-NEXT: lwz 0, -4(31) 60; PPC32-LINUX-FP-NEXT: mr 1, 31 61; PPC32-LINUX-FP-NEXT: mr 31, 0 62; PPC32-LINUX-FP-NEXT: blr 63 64; PPC64-LINUX-NOFP-LABEL: f1: 65; PPC64-LINUX-NOFP: lis 0, -1 66; PPC64-LINUX-NOFP-NEXT: ori 0, 0, 32720 67; PPC64-LINUX-NOFP-NEXT: stdux 1, 1, 0 68; PPC64-LINUX-NOFP-NEXT: addi 3, 1, 52 69; PPC64-LINUX-NOFP-NEXT: ld 1, 0(1) 70; PPC64-LINUX-NOFP-NEXT: blr 71 72; PPC64-LINUX-FP-LABEL: f1: 73; PPC64-LINUX-FP: lis 0, -1 74; PPC64-LINUX-FP-NEXT: ori 0, 0, 32704 75; PPC64-LINUX-FP-NEXT: std 31, -8(1) 76; PPC64-LINUX-FP-NEXT: stdux 1, 1, 0 77; PPC64-LINUX-FP-NEXT: mr 31, 1 78; PPC64-LINUX-FP-NEXT: addi 3, 31, 60 79; PPC64-LINUX-FP-NEXT: ld 1, 0(1) 80; PPC64-LINUX-FP-NEXT: ld 31, -8(1) 81; PPC64-LINUX-FP-NEXT: blr 82 83; PPC32-AIX-NOFP-LABEL: f1 84; PPC32-AIX-NOFP: lis 0, -1 85; PPC32-AIX-NOFP-NEXT: ori 0, 0, 32736 86; PPC32-AIX-NOFP-NEXT: stwux 1, 1, 0 87; PPC32-AIX-NOFP-NEXT: addi 3, 1, 36 88; PPC32-AIX-NOFP-NEXT: lwz 1, 0(1) 89; PPC32-AIX-NOFP-NEXT: blr 90 91; PPC32-AIX-FP-LABEL: f1 92; PPC32-AIX-FP: lis 0, -1 93; PPC32-AIX-FP-NEXT: stw 31, -4(1) 94; PPC32-AIX-FP-NEXT: ori 0, 0, 32736 95; PPC32-AIX-FP-NEXT: stwux 1, 1, 0 96; PPC32-AIX-FP-NEXT: mr 31, 1 97; PPC32-AIX-FP-NEXT: addi 3, 31, 32 98; PPC32-AIX-FP-NEXT: lwz 1, 0(1) 99; PPC32-AIX-FP-NEXT: lwz 31, -4(1) 100; PPC32-AIX-FP-NEXT: blr 101 102; PPC64-AIX-NOFP-LABEL: f1 103; PPC64-AIX-NOFP: lis 0, -1 104; PPC64-AIX-NOFP-NEXT: ori 0, 0, 32720 105; PPC64-AIX-NOFP-NEXT: stdux 1, 1, 0 106; PPC64-AIX-NOFP-NEXT: addi 3, 1, 52 107; PPC64-AIX-NOFP-NEXT: ld 1, 0(1) 108; PPC64-AIX-NOFP-NEXT: blr 109 110; PPC64-AIX-FP-LABEL: f1 111; PPC64-AIX-FP: lis 0, -1 112; PPC64-AIX-FP-NEXT: std 31, -8(1) 113; PPC64-AIX-FP-NEXT: ori 0, 0, 32704 114; PPC64-AIX-FP-NEXT: stdux 1, 1, 0 115; PPC64-AIX-FP-NEXT: mr 31, 1 116; PPC64-AIX-FP-NEXT: addi 3, 31, 60 117; PPC64-AIX-FP-NEXT: ld 1, 0(1) 118; PPC64-AIX-FP-NEXT: ld 31, -8(1) 119; PPC64-AIX-FP-NEXT: blr 120