xref: /llvm-project/llvm/test/CodeGen/CSKY/atomic-fence.ll (revision ec2de7490813a7593dad59f210c7ec41f1a29002)
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2; RUN: llc -mtriple=csky -verify-machineinstrs -csky-no-aliases -mattr=+2e3 < %s \
3; RUN:   | FileCheck -check-prefix=CSKY %s
4
5define void @fence_acquire() nounwind {
6; CSKY-LABEL: fence_acquire:
7; CSKY:       # %bb.0:
8; CSKY-NEXT:    subi16 sp, sp, 4
9; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill
10; CSKY-NEXT:    jsri32 [.LCPI0_0]
11; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload
12; CSKY-NEXT:    addi16 sp, sp, 4
13; CSKY-NEXT:    rts16
14; CSKY-NEXT:    .p2align 1
15; CSKY-NEXT:  # %bb.1:
16; CSKY-NEXT:    .p2align 2
17; CSKY-NEXT:  .LCPI0_0:
18; CSKY-NEXT:    .long __sync_synchronize
19;
20  fence acquire
21  ret void
22}
23
24define void @fence_release() nounwind {
25; CSKY-LABEL: fence_release:
26; CSKY:       # %bb.0:
27; CSKY-NEXT:    subi16 sp, sp, 4
28; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill
29; CSKY-NEXT:    jsri32 [.LCPI1_0]
30; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload
31; CSKY-NEXT:    addi16 sp, sp, 4
32; CSKY-NEXT:    rts16
33; CSKY-NEXT:    .p2align 1
34; CSKY-NEXT:  # %bb.1:
35; CSKY-NEXT:    .p2align 2
36; CSKY-NEXT:  .LCPI1_0:
37; CSKY-NEXT:    .long __sync_synchronize
38;
39  fence release
40  ret void
41}
42
43define void @fence_acq_rel() nounwind {
44; CSKY-LABEL: fence_acq_rel:
45; CSKY:       # %bb.0:
46; CSKY-NEXT:    subi16 sp, sp, 4
47; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill
48; CSKY-NEXT:    jsri32 [.LCPI2_0]
49; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload
50; CSKY-NEXT:    addi16 sp, sp, 4
51; CSKY-NEXT:    rts16
52; CSKY-NEXT:    .p2align 1
53; CSKY-NEXT:  # %bb.1:
54; CSKY-NEXT:    .p2align 2
55; CSKY-NEXT:  .LCPI2_0:
56; CSKY-NEXT:    .long __sync_synchronize
57;
58  fence acq_rel
59  ret void
60}
61
62define void @fence_seq_cst() nounwind {
63; CSKY-LABEL: fence_seq_cst:
64; CSKY:       # %bb.0:
65; CSKY-NEXT:    subi16 sp, sp, 4
66; CSKY-NEXT:    st32.w lr, (sp, 0) # 4-byte Folded Spill
67; CSKY-NEXT:    jsri32 [.LCPI3_0]
68; CSKY-NEXT:    ld32.w lr, (sp, 0) # 4-byte Folded Reload
69; CSKY-NEXT:    addi16 sp, sp, 4
70; CSKY-NEXT:    rts16
71; CSKY-NEXT:    .p2align 1
72; CSKY-NEXT:  # %bb.1:
73; CSKY-NEXT:    .p2align 2
74; CSKY-NEXT:  .LCPI3_0:
75; CSKY-NEXT:    .long __sync_synchronize
76;
77  fence seq_cst
78  ret void
79}
80