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