105 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -verify-machineinstrs < %s \3; RUN: | FileCheck --check-prefixes=CHECK,WMO %s4; RUN: llc -mtriple=riscv32 -mattr=+zalrsc -verify-machineinstrs < %s \5; RUN: | FileCheck --check-prefixes=CHECK,WMO %s6; RUN: llc -mtriple=riscv32 -mattr=+a -verify-machineinstrs < %s \7; RUN: | FileCheck --check-prefixes=CHECK,WMO %s8; RUN: llc -mtriple=riscv32 -mattr=+a,+ztso -verify-machineinstrs < %s \9; RUN: | FileCheck --check-prefixes=CHECK,TSO %s10; RUN: llc -mtriple=riscv64 -verify-machineinstrs < %s \11; RUN: | FileCheck --check-prefixes=CHECK,WMO %s12; RUN: llc -mtriple=riscv64 -mattr=+zalrsc -verify-machineinstrs < %s \13; RUN: | FileCheck --check-prefixes=CHECK,WMO %s14; RUN: llc -mtriple=riscv64 -mattr=+a -verify-machineinstrs < %s \15; RUN: | FileCheck --check-prefixes=CHECK,WMO %s16; RUN: llc -mtriple=riscv64 -mattr=+a,+ztso -verify-machineinstrs < %s \17; RUN: | FileCheck --check-prefixes=CHECK,TSO %s18 19define void @fence_acquire() nounwind {20; WMO-LABEL: fence_acquire:21; WMO: # %bb.0:22; WMO-NEXT: fence r, rw23; WMO-NEXT: ret24;25; TSO-LABEL: fence_acquire:26; TSO: # %bb.0:27; TSO-NEXT: #MEMBARRIER28; TSO-NEXT: ret29 fence acquire30 ret void31}32 33define void @fence_release() nounwind {34; WMO-LABEL: fence_release:35; WMO: # %bb.0:36; WMO-NEXT: fence rw, w37; WMO-NEXT: ret38;39; TSO-LABEL: fence_release:40; TSO: # %bb.0:41; TSO-NEXT: #MEMBARRIER42; TSO-NEXT: ret43 fence release44 ret void45}46 47define void @fence_acq_rel() nounwind {48; WMO-LABEL: fence_acq_rel:49; WMO: # %bb.0:50; WMO-NEXT: fence.tso51; WMO-NEXT: ret52;53; TSO-LABEL: fence_acq_rel:54; TSO: # %bb.0:55; TSO-NEXT: #MEMBARRIER56; TSO-NEXT: ret57 fence acq_rel58 ret void59}60 61define void @fence_seq_cst() nounwind {62; CHECK-LABEL: fence_seq_cst:63; CHECK: # %bb.0:64; CHECK-NEXT: fence rw, rw65; CHECK-NEXT: ret66 fence seq_cst67 ret void68}69 70define void @fence_singlethread_acquire() nounwind {71; CHECK-LABEL: fence_singlethread_acquire:72; CHECK: # %bb.0:73; CHECK-NEXT: #MEMBARRIER74; CHECK-NEXT: ret75 fence syncscope("singlethread") acquire76 ret void77}78 79define void @fence_singlethread_release() nounwind {80; CHECK-LABEL: fence_singlethread_release:81; CHECK: # %bb.0:82; CHECK-NEXT: #MEMBARRIER83; CHECK-NEXT: ret84 fence syncscope("singlethread") release85 ret void86}87 88define void @fence_singlethread_acq_rel() nounwind {89; CHECK-LABEL: fence_singlethread_acq_rel:90; CHECK: # %bb.0:91; CHECK-NEXT: #MEMBARRIER92; CHECK-NEXT: ret93 fence syncscope("singlethread") acq_rel94 ret void95}96 97define void @fence_singlethread_seq_cst() nounwind {98; CHECK-LABEL: fence_singlethread_seq_cst:99; CHECK: # %bb.0:100; CHECK-NEXT: #MEMBARRIER101; CHECK-NEXT: ret102 fence syncscope("singlethread") seq_cst103 ret void104}105