xref: /llvm-project/llvm/test/CodeGen/LoongArch/ir-instruction/indirectbr.ll (revision 9d4f7f44b64d87d1068859906f43b7ce03a7388b)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc --mtriple=loongarch64 -mattr=+d < %s | FileCheck %s
3
4define i32 @indirectbr(ptr %target) nounwind {
5; CHECK-LABEL: indirectbr:
6; CHECK:       # %bb.0:
7; CHECK-NEXT:    jr $a0
8; CHECK-NEXT:  .LBB0_1: # %test_label
9; CHECK-NEXT:    move $a0, $zero
10; CHECK-NEXT:    ret
11  indirectbr ptr %target, [label %test_label]
12test_label:
13  br label %ret
14ret:
15  ret i32 0
16}
17
18define i32 @indirectbr_with_offset(ptr %a) nounwind {
19; CHECK-LABEL: indirectbr_with_offset:
20; CHECK:       # %bb.0:
21; CHECK-NEXT:    jirl $zero, $a0, 1380
22; CHECK-NEXT:  .LBB1_1: # %test_label
23; CHECK-NEXT:    move $a0, $zero
24; CHECK-NEXT:    ret
25  %target = getelementptr inbounds i8, ptr %a, i32 1380
26  indirectbr ptr %target, [label %test_label]
27test_label:
28  br label %ret
29ret:
30  ret i32 0
31}
32