1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py 2; RUN: llc < %s -mtriple=riscv32 | FileCheck %s 3 4define i32 @get_stack() nounwind { 5; CHECK-LABEL: get_stack: 6; CHECK: # %bb.0: # %entry 7; CHECK-NEXT: mv a0, sp 8; CHECK-NEXT: ret 9entry: 10 %sp = call i32 @llvm.read_register.i32(metadata !0) 11 ret i32 %sp 12} 13 14define void @set_stack(i32 %val) nounwind { 15; CHECK-LABEL: set_stack: 16; CHECK: # %bb.0: # %entry 17; CHECK-NEXT: mv sp, a0 18; CHECK-NEXT: ret 19entry: 20 call void @llvm.write_register.i32(metadata !0, i32 %val) 21 ret void 22} 23 24define i32 @get_tp_arch_name() nounwind { 25; CHECK-LABEL: get_tp_arch_name: 26; CHECK: # %bb.0: # %entry 27; CHECK-NEXT: mv a0, tp 28; CHECK-NEXT: ret 29entry: 30 %sp = call i32 @llvm.read_register.i32(metadata !1) 31 ret i32 %sp 32} 33 34declare i32 @llvm.read_register.i32(metadata) nounwind 35declare void @llvm.write_register.i32(metadata, i32) nounwind 36 37!0 = !{!"sp\00"} 38!1 = !{!"x4\00"} 39