• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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