forked from OSchip/llvm-project
[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
This commit is contained in:
parent
d99e4a4840
commit
5e273b845b
|
@ -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 {
|
||||
|
|
|
@ -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*)
|
Loading…
Reference in New Issue