From cc611e1756a8601fc377ebf854d419de9db7d783 Mon Sep 17 00:00:00 2001 From: Hubert Tong Date: Tue, 13 Aug 2019 13:38:24 +0000 Subject: [PATCH] [AIX] Implement LR prolog/epilog save/restore Summary: This patch fixes the offsets of fields in the stack frame linkage save area for AIX. Reviewers: sfertile, hubert.reinterpretcast, jasonliu, Xiangling_L, xingxue, ZarkoCA, daltenty Reviewed By: hubert.reinterpretcast Subscribers: wuzish, nemanjai, hiraditya, kbarton, MaskRay, jsji, llvm-commits Tags: #llvm Differential Revision: https://reviews.llvm.org/D64424 Patch by Chris Bowler! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@368691 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/PowerPC/aix-lr.ll | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 test/CodeGen/PowerPC/aix-lr.ll diff --git a/test/CodeGen/PowerPC/aix-lr.ll b/test/CodeGen/PowerPC/aix-lr.ll new file mode 100644 index 00000000000..ea92daf04f0 --- /dev/null +++ b/test/CodeGen/PowerPC/aix-lr.ll @@ -0,0 +1,32 @@ +; RUN: llc -verify-machineinstrs -mtriple powerpc-ibm-aix-xcoff < %s | \ +; RUN: FileCheck --check-prefix=32BIT %s + +; RUN: llc -verify-machineinstrs -mtriple powerpc64-ibm-aix-xcoff < %s | \ +; RUN: FileCheck --check-prefix=64BIT %s + +define void @bar() { +entry: + +; 32BIT: mflr 0 +; 32BIT: stw 0, 8(1) +; 32BIT: stwu 1, -64(1) +; 32BIT: bl .foo +; 32BIT: nop +; 32BIT: addi 1, 1, 64 +; 32BIT: lwz 0, 8(1) +; 32BIT: mtlr 0 + +; 64BIT: mflr 0 +; 64BIT: std 0, 16(1) +; 64BIT: stdu 1, -112(1) +; 64BIT: bl .foo +; 64BIT: nop +; 64BIT: addi 1, 1, 112 +; 64BIT: ld 0, 16(1) +; 64BIT: mtlr 0 + + call void bitcast (void (...)* @foo to void ()*)() + ret void +} + +declare void @foo(...) -- 2.40.0