Add checks for memory ordering on fences

This commit is contained in:
gingerBill
2022-03-31 01:01:51 +01:00
parent 6636376a81
commit 1eac3482a6
2 changed files with 26 additions and 12 deletions
+6 -6
View File
@@ -47,9 +47,9 @@ kill_dependency :: #force_inline proc(value: $T) -> T {
// 7.17.4 Fences
atomic_thread_fence :: #force_inline proc(order: memory_order) {
switch order {
case .relaxed: intrinsics.atomic_thread_fence(.relaxed)
case .consume: intrinsics.atomic_thread_fence(.consume)
assert(order != .relaxed)
assert(order != .consume)
#partial switch order {
case .acquire: intrinsics.atomic_thread_fence(.acquire)
case .release: intrinsics.atomic_thread_fence(.release)
case .acq_rel: intrinsics.atomic_thread_fence(.acq_rel)
@@ -58,9 +58,9 @@ atomic_thread_fence :: #force_inline proc(order: memory_order) {
}
atomic_signal_fence :: #force_inline proc(order: memory_order) {
switch order {
case .relaxed: intrinsics.atomic_signal_fence(.relaxed)
case .consume: intrinsics.atomic_signal_fence(.consume)
assert(order != .relaxed)
assert(order != .consume)
#partial switch order {
case .acquire: intrinsics.atomic_signal_fence(.acquire)
case .release: intrinsics.atomic_signal_fence(.release)
case .acq_rel: intrinsics.atomic_signal_fence(.acq_rel)