From: Kazushi (Jam) Marukawa Date: Fri, 18 Dec 2020 14:21:10 +0000 (+0900) Subject: [VE] Support STACKSAVE and STACKRESTORE X-Git-Tag: llvmorg-13-init~2828 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=5e273b845bc4411c23f5da0ebbf5d4dfd6b91f13;p=platform%2Fupstream%2Fllvm.git [VE] Support STACKSAVE and STACKRESTORE Change to use default expanded code. Add regression tests also. Reviewed By: simoll Differential Revision: https://reviews.llvm.org/D93539 --- diff --git a/llvm/lib/Target/VE/VEISelLowering.cpp b/llvm/lib/Target/VE/VEISelLowering.cpp index da5b642..ea9281a 100644 --- a/llvm/lib/Target/VE/VEISelLowering.cpp +++ b/llvm/lib/Target/VE/VEISelLowering.cpp @@ -135,6 +135,10 @@ void VETargetLowering::initSPUActions() { /// Stack { setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i32, Custom); setOperationAction(ISD::DYNAMIC_STACKALLOC, MVT::i64, Custom); + + // Use the default implementation. + setOperationAction(ISD::STACKSAVE, MVT::Other, Expand); + setOperationAction(ISD::STACKRESTORE, MVT::Other, Expand); /// } Stack /// Branch { diff --git a/llvm/test/CodeGen/VE/Scalar/stacksave.ll b/llvm/test/CodeGen/VE/Scalar/stacksave.ll new file mode 100644 index 0000000..336f9b8 --- /dev/null +++ b/llvm/test/CodeGen/VE/Scalar/stacksave.ll @@ -0,0 +1,26 @@ +; RUN: llc < %s -mtriple=ve | FileCheck %s + +; Function Attrs: noinline nounwind optnone +define i8* @stacksave() { +; CHECK-LABEL: stacksave: +; CHECK: .LBB{{[0-9]+}}_2: +; CHECK-NEXT: or %s0, 0, %s11 +; CHECK-NEXT: or %s11, 0, %s9 + %ret = call i8* @llvm.stacksave() + ret i8* %ret +} + +; Function Attrs: noinline nounwind optnone +define void @stackrestore(i8* %ptr) { +; CHECK-LABEL: stackrestore: +; CHECK: .LBB{{[0-9]+}}_2: +; CHECK-NEXT: or %s11, 0, %s0 +; CHECK-NEXT: or %s11, 0, %s9 + call void @llvm.stackrestore(i8* %ptr) + ret void +} + +; Function Attrs: nounwind +declare i8* @llvm.stacksave() +; Function Attrs: nounwind +declare void @llvm.stackrestore(i8*)