diff options
author | Robert Lytton <robert@xmos.com> | 2014-01-06 14:20:53 +0000 |
---|---|---|
committer | Robert Lytton <robert@xmos.com> | 2014-01-06 14:20:53 +0000 |
commit | 12ad7cd730cb0575a6d03cccd6073af8e9486f3f (patch) | |
tree | 369f16eb7b197880c3ec702efb6be325f416395a /test/CodeGen | |
parent | c2508e505aa70a3764199ca97cf4d417a8de91cd (diff) | |
download | llvm-12ad7cd730cb0575a6d03cccd6073af8e9486f3f.tar.gz llvm-12ad7cd730cb0575a6d03cccd6073af8e9486f3f.tar.bz2 llvm-12ad7cd730cb0575a6d03cccd6073af8e9486f3f.tar.xz |
XCore target: Lower RETURNADDR
Only handles a depth of zero (the same as FRAMEADDR)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198613 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/XCore/llvm-intrinsics.ll | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/test/CodeGen/XCore/llvm-intrinsics.ll b/test/CodeGen/XCore/llvm-intrinsics.ll new file mode 100644 index 0000000000..14b299d46e --- /dev/null +++ b/test/CodeGen/XCore/llvm-intrinsics.ll @@ -0,0 +1,46 @@ +; RUN: llc < %s -march=xcore | FileCheck %s + +declare i8* @llvm.frameaddress(i32) nounwind readnone +define i8* @FA0() nounwind { +entry: +; CHECK-LABEL: FA0 +; CHECK: ldaw r0, sp[0] +; CHECK-NEXT: retsp 0 + %0 = call i8* @llvm.frameaddress(i32 0) + ret i8* %0 +} + +define i8* @FA1() nounwind { +entry: +; CHECK-LABEL: FA1 +; CHECK: entsp 100 +; CHECK-NEXT: ldaw r0, sp[0] +; CHECK-NEXT: retsp 100 + %0 = alloca [100 x i32] + %1 = call i8* @llvm.frameaddress(i32 0) + ret i8* %1 +} + + +declare i8* @llvm.returnaddress(i32) nounwind readnone +define i8* @RA0() nounwind { +entry: +; CHECK-LABEL: RA0 +; CHECK: stw lr, sp[0] +; CHECK-NEXT: ldw r0, sp[0] +; CHECK-NEXT: ldw lr, sp[0] +; CHECK-NEXT: retsp 0 + %0 = call i8* @llvm.returnaddress(i32 0) + ret i8* %0 +} + +define i8* @RA1() nounwind { +entry: +; CHECK-LABEL: RA1 +; CHECK: entsp 100 +; CHECK-NEXT: ldw r0, sp[100] +; CHECK-NEXT: retsp 100 + %0 = alloca [100 x i32] + %1 = call i8* @llvm.returnaddress(i32 0) + ret i8* %1 +} |