xref: /llvm-project/llvm/test/CodeGen/RISCV/get-register-noreserve.ll (revision af5e09b7d9646861863807d8d70e4e672505544e)
151b4b17eSLuís Marques; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
251b4b17eSLuís Marques; RUN: llc < %s -mtriple=riscv32 | FileCheck %s
351b4b17eSLuís Marques
451b4b17eSLuís Marquesdefine i32 @get_stack() nounwind {
551b4b17eSLuís Marques; CHECK-LABEL: get_stack:
651b4b17eSLuís Marques; CHECK:       # %bb.0: # %entry
751b4b17eSLuís Marques; CHECK-NEXT:    mv a0, sp
851b4b17eSLuís Marques; CHECK-NEXT:    ret
951b4b17eSLuís Marquesentry:
1051b4b17eSLuís Marques  %sp = call i32 @llvm.read_register.i32(metadata !0)
1151b4b17eSLuís Marques  ret i32 %sp
1251b4b17eSLuís Marques}
1351b4b17eSLuís Marques
1451b4b17eSLuís Marquesdefine void @set_stack(i32 %val) nounwind {
1551b4b17eSLuís Marques; CHECK-LABEL: set_stack:
1651b4b17eSLuís Marques; CHECK:       # %bb.0: # %entry
1751b4b17eSLuís Marques; CHECK-NEXT:    mv sp, a0
1851b4b17eSLuís Marques; CHECK-NEXT:    ret
1951b4b17eSLuís Marquesentry:
2051b4b17eSLuís Marques  call void @llvm.write_register.i32(metadata !0, i32 %val)
2151b4b17eSLuís Marques  ret void
2251b4b17eSLuís Marques}
2351b4b17eSLuís Marques
2451b4b17eSLuís Marquesdefine i32 @get_tp_arch_name() nounwind {
2551b4b17eSLuís Marques; CHECK-LABEL: get_tp_arch_name:
2651b4b17eSLuís Marques; CHECK:       # %bb.0: # %entry
2751b4b17eSLuís Marques; CHECK-NEXT:    mv a0, tp
2851b4b17eSLuís Marques; CHECK-NEXT:    ret
2951b4b17eSLuís Marquesentry:
3051b4b17eSLuís Marques  %sp = call i32 @llvm.read_register.i32(metadata !1)
3151b4b17eSLuís Marques  ret i32 %sp
3251b4b17eSLuís Marques}
3351b4b17eSLuís Marques
34*af5e09b7SPhilip Reamesdefine i32 @get_csr_vlenb() nounwind {
35*af5e09b7SPhilip Reames; CHECK-LABEL: get_csr_vlenb:
36*af5e09b7SPhilip Reames; CHECK:       # %bb.0: # %entry
37*af5e09b7SPhilip Reames; CHECK-NEXT:    csrr a0, vlenb
38*af5e09b7SPhilip Reames; CHECK-NEXT:    ret
39*af5e09b7SPhilip Reamesentry:
40*af5e09b7SPhilip Reames  %sp = call i32 @llvm.read_register.i32(metadata !2)
41*af5e09b7SPhilip Reames  ret i32 %sp
42*af5e09b7SPhilip Reames}
43*af5e09b7SPhilip Reames
44*af5e09b7SPhilip Reames
4551b4b17eSLuís Marquesdeclare i32 @llvm.read_register.i32(metadata) nounwind
4651b4b17eSLuís Marquesdeclare void @llvm.write_register.i32(metadata, i32) nounwind
4751b4b17eSLuís Marques
4851b4b17eSLuís Marques!0 = !{!"sp\00"}
4951b4b17eSLuís Marques!1 = !{!"x4\00"}
50*af5e09b7SPhilip Reames!2 = !{!"vlenb"}
51