Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / CodeGen / LoongArch / frameaddr-returnaddr.ll
blob128d6e5a1dac7e771af34af736eb1407fa03e34a
1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32
3 ; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64
5 declare ptr @llvm.frameaddress(i32)
6 declare ptr @llvm.returnaddress(i32)
8 define ptr @test_frameaddress_0() nounwind {
9 ; LA32-LABEL: test_frameaddress_0:
10 ; LA32:       # %bb.0:
11 ; LA32-NEXT:    addi.w $sp, $sp, -16
12 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
13 ; LA32-NEXT:    st.w $fp, $sp, 8 # 4-byte Folded Spill
14 ; LA32-NEXT:    addi.w $fp, $sp, 16
15 ; LA32-NEXT:    move $a0, $fp
16 ; LA32-NEXT:    ld.w $fp, $sp, 8 # 4-byte Folded Reload
17 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
18 ; LA32-NEXT:    addi.w $sp, $sp, 16
19 ; LA32-NEXT:    ret
21 ; LA64-LABEL: test_frameaddress_0:
22 ; LA64:       # %bb.0:
23 ; LA64-NEXT:    addi.d $sp, $sp, -16
24 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
25 ; LA64-NEXT:    st.d $fp, $sp, 0 # 8-byte Folded Spill
26 ; LA64-NEXT:    addi.d $fp, $sp, 16
27 ; LA64-NEXT:    move $a0, $fp
28 ; LA64-NEXT:    ld.d $fp, $sp, 0 # 8-byte Folded Reload
29 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
30 ; LA64-NEXT:    addi.d $sp, $sp, 16
31 ; LA64-NEXT:    ret
32   %1 = call ptr @llvm.frameaddress(i32 0)
33   ret ptr %1
36 define ptr @test_frameaddress_2() nounwind {
37 ; LA32-LABEL: test_frameaddress_2:
38 ; LA32:       # %bb.0:
39 ; LA32-NEXT:    addi.w $sp, $sp, -16
40 ; LA32-NEXT:    st.w $ra, $sp, 12 # 4-byte Folded Spill
41 ; LA32-NEXT:    st.w $fp, $sp, 8 # 4-byte Folded Spill
42 ; LA32-NEXT:    addi.w $fp, $sp, 16
43 ; LA32-NEXT:    ld.w $a0, $fp, -8
44 ; LA32-NEXT:    ld.w $a0, $a0, -8
45 ; LA32-NEXT:    ld.w $fp, $sp, 8 # 4-byte Folded Reload
46 ; LA32-NEXT:    ld.w $ra, $sp, 12 # 4-byte Folded Reload
47 ; LA32-NEXT:    addi.w $sp, $sp, 16
48 ; LA32-NEXT:    ret
50 ; LA64-LABEL: test_frameaddress_2:
51 ; LA64:       # %bb.0:
52 ; LA64-NEXT:    addi.d $sp, $sp, -16
53 ; LA64-NEXT:    st.d $ra, $sp, 8 # 8-byte Folded Spill
54 ; LA64-NEXT:    st.d $fp, $sp, 0 # 8-byte Folded Spill
55 ; LA64-NEXT:    addi.d $fp, $sp, 16
56 ; LA64-NEXT:    ld.d $a0, $fp, -16
57 ; LA64-NEXT:    ld.d $a0, $a0, -16
58 ; LA64-NEXT:    ld.d $fp, $sp, 0 # 8-byte Folded Reload
59 ; LA64-NEXT:    ld.d $ra, $sp, 8 # 8-byte Folded Reload
60 ; LA64-NEXT:    addi.d $sp, $sp, 16
61 ; LA64-NEXT:    ret
62   %1 = call ptr @llvm.frameaddress(i32 2)
63   ret ptr %1
66 define ptr @test_returnaddress_0() nounwind {
67 ; LA32-LABEL: test_returnaddress_0:
68 ; LA32:       # %bb.0:
69 ; LA32-NEXT:    move $a0, $ra
70 ; LA32-NEXT:    ret
72 ; LA64-LABEL: test_returnaddress_0:
73 ; LA64:       # %bb.0:
74 ; LA64-NEXT:    move $a0, $ra
75 ; LA64-NEXT:    ret
76   %1 = call ptr @llvm.returnaddress(i32 0)
77   ret ptr %1