101 lines · plain
1; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py2; RUN: llc -mtriple=riscv32 -global-isel -verify-machineinstrs < %s \3; RUN: | FileCheck --check-prefixes=CHECK,WMO %s4; RUN: llc -mtriple=riscv32 -mattr=+a -global-isel -verify-machineinstrs < %s \5; RUN: | FileCheck --check-prefixes=CHECK,WMO %s6; RUN: llc -mtriple=riscv32 -mattr=+a,+ztso -global-isel -verify-machineinstrs < %s \7; RUN: | FileCheck --check-prefixes=CHECK,TSO %s8; RUN: llc -mtriple=riscv64 -global-isel -verify-machineinstrs < %s \9; RUN: | FileCheck --check-prefixes=CHECK,WMO %s10; RUN: llc -mtriple=riscv64 -mattr=+a -global-isel -verify-machineinstrs < %s \11; RUN: | FileCheck --check-prefixes=CHECK,WMO %s12; RUN: llc -mtriple=riscv64 -mattr=+a,+ztso -global-isel -verify-machineinstrs < %s \13; RUN: | FileCheck --check-prefixes=CHECK,TSO %s14 15define void @fence_acquire() nounwind {16; WMO-LABEL: fence_acquire:17; WMO: # %bb.0:18; WMO-NEXT: fence r, rw19; WMO-NEXT: ret20;21; TSO-LABEL: fence_acquire:22; TSO: # %bb.0:23; TSO-NEXT: #MEMBARRIER24; TSO-NEXT: ret25 fence acquire26 ret void27}28 29define void @fence_release() nounwind {30; WMO-LABEL: fence_release:31; WMO: # %bb.0:32; WMO-NEXT: fence rw, w33; WMO-NEXT: ret34;35; TSO-LABEL: fence_release:36; TSO: # %bb.0:37; TSO-NEXT: #MEMBARRIER38; TSO-NEXT: ret39 fence release40 ret void41}42 43define void @fence_acq_rel() nounwind {44; WMO-LABEL: fence_acq_rel:45; WMO: # %bb.0:46; WMO-NEXT: fence.tso47; WMO-NEXT: ret48;49; TSO-LABEL: fence_acq_rel:50; TSO: # %bb.0:51; TSO-NEXT: #MEMBARRIER52; TSO-NEXT: ret53 fence acq_rel54 ret void55}56 57define void @fence_seq_cst() nounwind {58; CHECK-LABEL: fence_seq_cst:59; CHECK: # %bb.0:60; CHECK-NEXT: fence rw, rw61; CHECK-NEXT: ret62 fence seq_cst63 ret void64}65 66define void @fence_singlethread_acquire() nounwind {67; CHECK-LABEL: fence_singlethread_acquire:68; CHECK: # %bb.0:69; CHECK-NEXT: #MEMBARRIER70; CHECK-NEXT: ret71 fence syncscope("singlethread") acquire72 ret void73}74 75define void @fence_singlethread_release() nounwind {76; CHECK-LABEL: fence_singlethread_release:77; CHECK: # %bb.0:78; CHECK-NEXT: #MEMBARRIER79; CHECK-NEXT: ret80 fence syncscope("singlethread") release81 ret void82}83 84define void @fence_singlethread_acq_rel() nounwind {85; CHECK-LABEL: fence_singlethread_acq_rel:86; CHECK: # %bb.0:87; CHECK-NEXT: #MEMBARRIER88; CHECK-NEXT: ret89 fence syncscope("singlethread") acq_rel90 ret void91}92 93define void @fence_singlethread_seq_cst() nounwind {94; CHECK-LABEL: fence_singlethread_seq_cst:95; CHECK: # %bb.0:96; CHECK-NEXT: #MEMBARRIER97; CHECK-NEXT: ret98 fence syncscope("singlethread") seq_cst99 ret void100}101