@@ -68,8 +68,10 @@ pub struct AtomicOption<T> {
6868}
6969
7070pub enum Ordering {
71+ Relaxed ,
7172 Release ,
7273 Acquire ,
74+ AcqRel ,
7375 SeqCst
7476}
7577
@@ -318,6 +320,7 @@ pub unsafe fn atomic_store<T>(dst: &mut T, val: T, order:Ordering) {
318320
319321 match order {
320322 Release => intrinsics:: atomic_store_rel ( dst, val) ,
323+ Relaxed => intrinsics:: atomic_store_relaxed ( dst, val) ,
321324 _ => intrinsics:: atomic_store ( dst, val)
322325 }
323326}
@@ -328,6 +331,7 @@ pub unsafe fn atomic_load<T>(dst: &T, order:Ordering) -> T {
328331
329332 cast:: transmute ( match order {
330333 Acquire => intrinsics:: atomic_load_acq ( dst) ,
334+ Relaxed => intrinsics:: atomic_load_relaxed ( dst) ,
331335 _ => intrinsics:: atomic_load ( dst)
332336 } )
333337}
@@ -340,6 +344,8 @@ pub unsafe fn atomic_swap<T>(dst: &mut T, val: T, order: Ordering) -> T {
340344 cast:: transmute ( match order {
341345 Acquire => intrinsics:: atomic_xchg_acq ( dst, val) ,
342346 Release => intrinsics:: atomic_xchg_rel ( dst, val) ,
347+ AcqRel => intrinsics:: atomic_xchg_acqrel ( dst, val) ,
348+ Relaxed => intrinsics:: atomic_xchg_relaxed ( dst, val) ,
343349 _ => intrinsics:: atomic_xchg ( dst, val)
344350 } )
345351}
@@ -353,6 +359,8 @@ pub unsafe fn atomic_add<T>(dst: &mut T, val: T, order: Ordering) -> T {
353359 cast:: transmute ( match order {
354360 Acquire => intrinsics:: atomic_xadd_acq ( dst, val) ,
355361 Release => intrinsics:: atomic_xadd_rel ( dst, val) ,
362+ AcqRel => intrinsics:: atomic_xadd_acqrel ( dst, val) ,
363+ Relaxed => intrinsics:: atomic_xadd_relaxed ( dst, val) ,
356364 _ => intrinsics:: atomic_xadd ( dst, val)
357365 } )
358366}
@@ -366,6 +374,8 @@ pub unsafe fn atomic_sub<T>(dst: &mut T, val: T, order: Ordering) -> T {
366374 cast:: transmute ( match order {
367375 Acquire => intrinsics:: atomic_xsub_acq ( dst, val) ,
368376 Release => intrinsics:: atomic_xsub_rel ( dst, val) ,
377+ AcqRel => intrinsics:: atomic_xsub_acqrel ( dst, val) ,
378+ Relaxed => intrinsics:: atomic_xsub_relaxed ( dst, val) ,
369379 _ => intrinsics:: atomic_xsub ( dst, val)
370380 } )
371381}
@@ -379,6 +389,8 @@ pub unsafe fn atomic_compare_and_swap<T>(dst:&mut T, old:T, new:T, order: Orderi
379389 cast:: transmute ( match order {
380390 Acquire => intrinsics:: atomic_cxchg_acq ( dst, old, new) ,
381391 Release => intrinsics:: atomic_cxchg_rel ( dst, old, new) ,
392+ AcqRel => intrinsics:: atomic_cxchg_acqrel ( dst, old, new) ,
393+ Relaxed => intrinsics:: atomic_cxchg_relaxed ( dst, old, new) ,
382394 _ => intrinsics:: atomic_cxchg ( dst, old, new) ,
383395 } )
384396}
0 commit comments