1; RUN: llc < %s -mtriple=ve | FileCheck %s
2
3;;; Test atomic fence for all memory order
4
5; Function Attrs: norecurse nounwind readnone
6define void @_Z20atomic_fence_relaxedv() {
7; CHECK-LABEL: _Z20atomic_fence_relaxedv:
8; CHECK:       # %bb.0:
9; CHECK-NEXT:    b.l.t (, %s10)
10  ret void
11}
12
13; Function Attrs: nofree norecurse nounwind
14define void @_Z20atomic_fence_consumev() {
15; CHECK-LABEL: _Z20atomic_fence_consumev:
16; CHECK:       # %bb.0:
17; CHECK-NEXT:    fencem 2
18; CHECK-NEXT:    b.l.t (, %s10)
19  fence acquire
20  ret void
21}
22
23; Function Attrs: nofree norecurse nounwind
24define void @_Z20atomic_fence_acquirev() {
25; CHECK-LABEL: _Z20atomic_fence_acquirev:
26; CHECK:       # %bb.0:
27; CHECK-NEXT:    fencem 2
28; CHECK-NEXT:    b.l.t (, %s10)
29  fence acquire
30  ret void
31}
32
33; Function Attrs: nofree norecurse nounwind
34define void @_Z20atomic_fence_releasev() {
35; CHECK-LABEL: _Z20atomic_fence_releasev:
36; CHECK:       # %bb.0:
37; CHECK-NEXT:    fencem 1
38; CHECK-NEXT:    b.l.t (, %s10)
39  fence release
40  ret void
41}
42
43; Function Attrs: nofree norecurse nounwind
44define void @_Z20atomic_fence_acq_relv() {
45; CHECK-LABEL: _Z20atomic_fence_acq_relv:
46; CHECK:       # %bb.0:
47; CHECK-NEXT:    fencem 3
48; CHECK-NEXT:    b.l.t (, %s10)
49  fence acq_rel
50  ret void
51}
52
53; Function Attrs: nofree norecurse nounwind
54define void @_Z20atomic_fence_seq_cstv() {
55; CHECK-LABEL: _Z20atomic_fence_seq_cstv:
56; CHECK:       # %bb.0:
57; CHECK-NEXT:    fencem 3
58; CHECK-NEXT:    b.l.t (, %s10)
59  fence seq_cst
60  ret void
61}
62