1; RUN: llc --mtriple=loongarch32 < %s | FileCheck %s --check-prefix=LA32
2; RUN: llc --mtriple=loongarch64 < %s | FileCheck %s --check-prefix=LA64
3
4define void @fence_acquire() nounwind {
5; LA32-LABEL: fence_acquire:
6; LA32:       # %bb.0:
7; LA32-NEXT:    dbar 0
8; LA32-NEXT:    jirl $zero, $ra, 0
9;
10; LA64-LABEL: fence_acquire:
11; LA64:       # %bb.0:
12; LA64-NEXT:    dbar 0
13; LA64-NEXT:    jirl $zero, $ra, 0
14  fence acquire
15  ret void
16}
17
18define void @fence_release() nounwind {
19; LA32-LABEL: fence_release:
20; LA32:       # %bb.0:
21; LA32-NEXT:    dbar 0
22; LA32-NEXT:    jirl $zero, $ra, 0
23;
24; LA64-LABEL: fence_release:
25; LA64:       # %bb.0:
26; LA64-NEXT:    dbar 0
27; LA64-NEXT:    jirl $zero, $ra, 0
28  fence release
29  ret void
30}
31
32define void @fence_acq_rel() nounwind {
33; LA32-LABEL: fence_acq_rel:
34; LA32:       # %bb.0:
35; LA32-NEXT:    dbar 0
36; LA32-NEXT:    jirl $zero, $ra, 0
37;
38; LA64-LABEL: fence_acq_rel:
39; LA64:       # %bb.0:
40; LA64-NEXT:    dbar 0
41; LA64-NEXT:    jirl $zero, $ra, 0
42  fence acq_rel
43  ret void
44}
45
46define void @fence_seq_cst() nounwind {
47; LA32-LABEL: fence_seq_cst:
48; LA32:       # %bb.0:
49; LA32-NEXT:    dbar 0
50; LA32-NEXT:    jirl $zero, $ra, 0
51;
52; LA64-LABEL: fence_seq_cst:
53; LA64:       # %bb.0:
54; LA64-NEXT:    dbar 0
55; LA64-NEXT:    jirl $zero, $ra, 0
56  fence seq_cst
57  ret void
58}
59