[X86] combineTargetShuffle - commute VPERMV3 shuffles so any load is on the RHS
[llvm-project.git] / llvm / test / CodeGen / SystemZ / ret-addr-01.ll
blobe3644feb0b49b7c170779fe50761de3d522cd82f
1 ; Test support for the llvm.returnaddress intrinsic.
2
3 ; RUN: llc < %s -mtriple=s390x-linux-gnu | FileCheck %s
5 ; The current function's return address is in the link register.
6 define ptr @rt0() norecurse nounwind readnone {
7 entry:
8 ; CHECK-LABEL: rt0:
9 ; CHECK: lgr  %r2, %r14
10 ; CHECK: br   %r14
11   %0 = tail call ptr @llvm.returnaddress(i32 0)
12   ret ptr %0
15 ; Check the caller's return address.
16 define ptr @rtcaller() nounwind "backchain" {
17 entry:
18 ; CHECK-LABEL: rtcaller:
19 ; CHECK: lg   %r1, 0(%r15)
20 ; CHECK  lg   %r2, 112(%r1)
21 ; CHECK: br   %r14
22   %0 = tail call ptr @llvm.returnaddress(i32 1)
23   ret ptr %0
26 ; Check the caller's caller's return address.
27 define ptr @rtcallercaller() nounwind "backchain" {
28 entry:
29 ; CHECK-LABEL: rtcallercaller:
30 ; CHECK: lg   %r1, 0(%r15)
31 ; CHECK: lg   %r1, 0(%r1)
32 ; CHECK  lg   %r2, 112(%r1)
33 ; CHECK: br   %r14
34   %0 = tail call ptr @llvm.returnaddress(i32 2)
35   ret ptr %0
38 declare ptr @llvm.returnaddress(i32) nounwind readnone