xref: /llvm-project/llvm/test/CodeGen/RISCV/get-register-reserve.ll (revision 4ad76852584480b646d1ce360202e18591ea8938)
151b4b17eSLuís Marques; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2*4ad76852SYuanfang Chen; RUN: not --crash llc < %s -mtriple=riscv32 -mattr +reserve-x8 2>&1 \
351b4b17eSLuís Marques; RUN:   | FileCheck -check-prefix=NO-RESERVE-A1 %s
4*4ad76852SYuanfang Chen; RUN: not --crash llc < %s -mtriple=riscv32 -mattr +reserve-x11 2>&1 \
551b4b17eSLuís Marques; RUN:   | FileCheck -check-prefix=NO-RESERVE-FP %s
651b4b17eSLuís Marques; RUN: llc < %s -mtriple=riscv32 -mattr +reserve-x8 -mattr +reserve-x11 \
751b4b17eSLuís Marques; RUN:   | FileCheck -check-prefix=RESERVE %s
851b4b17eSLuís Marques
951b4b17eSLuís Marquesdefine i32 @get_reg_a1() nounwind {
1051b4b17eSLuís Marques; NO-RESERVE-A1: Trying to obtain non-reserved register "a1".
1151b4b17eSLuís Marques; RESERVE-LABEL: get_reg_a1:
1251b4b17eSLuís Marques; RESERVE:       # %bb.0: # %entry
1351b4b17eSLuís Marques; RESERVE-NEXT:    mv a0, a1
1451b4b17eSLuís Marques; RESERVE-NEXT:    ret
1551b4b17eSLuís Marquesentry:
1651b4b17eSLuís Marques  %a1 = call i32 @llvm.read_register.i32(metadata !0)
1751b4b17eSLuís Marques  ret i32 %a1
1851b4b17eSLuís Marques}
1951b4b17eSLuís Marques
2051b4b17eSLuís Marquesdefine i32 @get_reg_fp() nounwind {
2151b4b17eSLuís Marques; NO-RESERVE-FP: Trying to obtain non-reserved register "fp".
2251b4b17eSLuís Marques; RESERVE-LABEL: get_reg_fp:
2351b4b17eSLuís Marques; RESERVE:       # %bb.0: # %entry
2451b4b17eSLuís Marques; RESERVE-NEXT:    mv a0, s0
2551b4b17eSLuís Marques; RESERVE-NEXT:    ret
2651b4b17eSLuís Marquesentry:
2751b4b17eSLuís Marques  %fp = call i32 @llvm.read_register.i32(metadata !1)
2851b4b17eSLuís Marques  ret i32 %fp
2951b4b17eSLuís Marques}
3051b4b17eSLuís Marques
3151b4b17eSLuís Marquesdeclare i32 @llvm.read_register.i32(metadata) nounwind
3251b4b17eSLuís Marques
3351b4b17eSLuís Marques!0 = !{!"a1\00"}
3451b4b17eSLuís Marques!1 = !{!"fp\00"}
35