13be05937Sgonglingqin; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2*9d4f7f44Swanglei; RUN: llc --mtriple=loongarch32 -mattr=+d < %s | FileCheck %s --check-prefix=LA32 3*9d4f7f44Swanglei; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s --check-prefix=LA64 43be05937Sgonglingqin 53be05937Sgonglingqindeclare ptr @llvm.frameaddress(i32) 63be05937Sgonglingqindeclare ptr @llvm.returnaddress(i32) 73be05937Sgonglingqin 83be05937Sgonglingqindefine ptr @test_frameaddress_0() nounwind { 93be05937Sgonglingqin; LA32-LABEL: test_frameaddress_0: 103be05937Sgonglingqin; LA32: # %bb.0: 113be05937Sgonglingqin; LA32-NEXT: addi.w $sp, $sp, -16 123be05937Sgonglingqin; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 133be05937Sgonglingqin; LA32-NEXT: st.w $fp, $sp, 8 # 4-byte Folded Spill 143be05937Sgonglingqin; LA32-NEXT: addi.w $fp, $sp, 16 153be05937Sgonglingqin; LA32-NEXT: move $a0, $fp 163be05937Sgonglingqin; LA32-NEXT: ld.w $fp, $sp, 8 # 4-byte Folded Reload 173be05937Sgonglingqin; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 183be05937Sgonglingqin; LA32-NEXT: addi.w $sp, $sp, 16 193be05937Sgonglingqin; LA32-NEXT: ret 203be05937Sgonglingqin; 213be05937Sgonglingqin; LA64-LABEL: test_frameaddress_0: 223be05937Sgonglingqin; LA64: # %bb.0: 233be05937Sgonglingqin; LA64-NEXT: addi.d $sp, $sp, -16 243be05937Sgonglingqin; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 253be05937Sgonglingqin; LA64-NEXT: st.d $fp, $sp, 0 # 8-byte Folded Spill 263be05937Sgonglingqin; LA64-NEXT: addi.d $fp, $sp, 16 273be05937Sgonglingqin; LA64-NEXT: move $a0, $fp 283be05937Sgonglingqin; LA64-NEXT: ld.d $fp, $sp, 0 # 8-byte Folded Reload 293be05937Sgonglingqin; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 303be05937Sgonglingqin; LA64-NEXT: addi.d $sp, $sp, 16 313be05937Sgonglingqin; LA64-NEXT: ret 323be05937Sgonglingqin %1 = call ptr @llvm.frameaddress(i32 0) 333be05937Sgonglingqin ret ptr %1 343be05937Sgonglingqin} 353be05937Sgonglingqin 36801c77bbSgonglingqindefine ptr @test_frameaddress_2() nounwind { 37801c77bbSgonglingqin; LA32-LABEL: test_frameaddress_2: 38801c77bbSgonglingqin; LA32: # %bb.0: 39801c77bbSgonglingqin; LA32-NEXT: addi.w $sp, $sp, -16 40801c77bbSgonglingqin; LA32-NEXT: st.w $ra, $sp, 12 # 4-byte Folded Spill 41801c77bbSgonglingqin; LA32-NEXT: st.w $fp, $sp, 8 # 4-byte Folded Spill 42801c77bbSgonglingqin; LA32-NEXT: addi.w $fp, $sp, 16 43801c77bbSgonglingqin; LA32-NEXT: ld.w $a0, $fp, -8 44801c77bbSgonglingqin; LA32-NEXT: ld.w $a0, $a0, -8 45801c77bbSgonglingqin; LA32-NEXT: ld.w $fp, $sp, 8 # 4-byte Folded Reload 46801c77bbSgonglingqin; LA32-NEXT: ld.w $ra, $sp, 12 # 4-byte Folded Reload 47801c77bbSgonglingqin; LA32-NEXT: addi.w $sp, $sp, 16 48801c77bbSgonglingqin; LA32-NEXT: ret 49801c77bbSgonglingqin; 50801c77bbSgonglingqin; LA64-LABEL: test_frameaddress_2: 51801c77bbSgonglingqin; LA64: # %bb.0: 52801c77bbSgonglingqin; LA64-NEXT: addi.d $sp, $sp, -16 53801c77bbSgonglingqin; LA64-NEXT: st.d $ra, $sp, 8 # 8-byte Folded Spill 54801c77bbSgonglingqin; LA64-NEXT: st.d $fp, $sp, 0 # 8-byte Folded Spill 55801c77bbSgonglingqin; LA64-NEXT: addi.d $fp, $sp, 16 56801c77bbSgonglingqin; LA64-NEXT: ld.d $a0, $fp, -16 57801c77bbSgonglingqin; LA64-NEXT: ld.d $a0, $a0, -16 58801c77bbSgonglingqin; LA64-NEXT: ld.d $fp, $sp, 0 # 8-byte Folded Reload 59801c77bbSgonglingqin; LA64-NEXT: ld.d $ra, $sp, 8 # 8-byte Folded Reload 60801c77bbSgonglingqin; LA64-NEXT: addi.d $sp, $sp, 16 61801c77bbSgonglingqin; LA64-NEXT: ret 62801c77bbSgonglingqin %1 = call ptr @llvm.frameaddress(i32 2) 63801c77bbSgonglingqin ret ptr %1 64801c77bbSgonglingqin} 65801c77bbSgonglingqin 663be05937Sgonglingqindefine ptr @test_returnaddress_0() nounwind { 673be05937Sgonglingqin; LA32-LABEL: test_returnaddress_0: 683be05937Sgonglingqin; LA32: # %bb.0: 693be05937Sgonglingqin; LA32-NEXT: move $a0, $ra 703be05937Sgonglingqin; LA32-NEXT: ret 713be05937Sgonglingqin; 723be05937Sgonglingqin; LA64-LABEL: test_returnaddress_0: 733be05937Sgonglingqin; LA64: # %bb.0: 743be05937Sgonglingqin; LA64-NEXT: move $a0, $ra 753be05937Sgonglingqin; LA64-NEXT: ret 763be05937Sgonglingqin %1 = call ptr @llvm.returnaddress(i32 0) 773be05937Sgonglingqin ret ptr %1 783be05937Sgonglingqin} 79