brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.6 KiB · f137daf Raw
55 lines · plain
1; RUN: llc -mtriple=ppc64-- -ppc-always-use-base-pointer < %s | FileCheck %s --check-prefix CHECK --check-prefix PPC642; RUN: llc -ppc-always-use-base-pointer -relocation-model=static < %s | FileCheck %s --check-prefix CHECK --check-prefix PPC323; RUN: llc -ppc-always-use-base-pointer -relocation-model=pic < %s | FileCheck %s --check-prefix CHECK --check-prefix PPC32PIC4 5; CHECK-LABEL: fred:6 7; Check for saving/restoring frame pointer (X31) and base pointer (X30)8; on ppc64:9; PPC64: std 31, -8(1)10; PPC64: std 30, -16(1)11; PPC64: ld 31, -8(1)12; PPC64: ld 30, -16(1)13 14; Check for saving/restoring frame pointer (R31) and base pointer (R30)15; on ppc32:16; PPC32: stwux 1, 1, 017; PPC32; addic 0, 0, -418; PPC32: stwx 31, 0, 019; PPC32: addic 0, 0, -420; PPC32: stwx 30, 0, 021; The restore sequence:22; PPC32: lwz 31, 0(1)23; PPC32: addic 30, 0, 824; PPC32: lwz 0, -4(31)25; PPC32: lwz 30, -8(31)26; PPC32: mr 1, 3127; PPC32: mr 31, 028 29; Check for saving/restoring frame pointer (R31) and base pointer (R29)30; on ppc32/pic. This is mostly the same as without pic, except that base31; pointer is in R29.32; PPC32PIC: stwux 1, 1, 033; PPC32PIC; addic 0, 0, -434; PPC32PIC: stwx 31, 0, 035; PPC32PIC: addic 0, 0, -836; PPC32PIC: stwx 29, 0, 037; The restore sequence:38; PPC32PIC: lwz 31, 0(1)39; PPC32PIC: addic 29, 0, 1240; PPC32PIC: lwz 0, -4(31)41; PPC32PIC: lwz 29, -12(31)42; PPC32PIC: mr 1, 3143; PPC32PIC: mr 31, 044 45 46target datalayout = "E-m:e-p:32:32-i64:64-n32"47target triple = "powerpc-unknown-freebsd"48 49define i64 @fred() local_unnamed_addr #0 {50entry:51  ret i64 052}53 54attributes #0 = { norecurse readnone nounwind sspstrong "frame-pointer"="all" "target-cpu"="ppc" }55