@@ -53,19 +53,35 @@ extern "rust-intrinsic" {
53
53
// NB: These intrinsics take raw pointers because they mutate aliased
54
54
// memory, which is not valid for either `&` or `&mut`.
55
55
56
+ #[ cfg( stage0) ]
56
57
pub fn atomic_cxchg < T > ( dst : * mut T , old : T , src : T ) -> T ;
58
+ #[ cfg( stage0) ]
57
59
pub fn atomic_cxchg_acq < T > ( dst : * mut T , old : T , src : T ) -> T ;
60
+ #[ cfg( stage0) ]
58
61
pub fn atomic_cxchg_rel < T > ( dst : * mut T , old : T , src : T ) -> T ;
62
+ #[ cfg( stage0) ]
59
63
pub fn atomic_cxchg_acqrel < T > ( dst : * mut T , old : T , src : T ) -> T ;
64
+ #[ cfg( stage0) ]
60
65
pub fn atomic_cxchg_relaxed < T > ( dst : * mut T , old : T , src : T ) -> T ;
66
+
67
+ #[ cfg( not( stage0) ) ]
68
+ pub fn atomic_cxchg < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
69
+ #[ cfg( not( stage0) ) ]
70
+ pub fn atomic_cxchg_acq < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
71
+ #[ cfg( not( stage0) ) ]
72
+ pub fn atomic_cxchg_rel < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
73
+ #[ cfg( not( stage0) ) ]
74
+ pub fn atomic_cxchg_acqrel < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
75
+ #[ cfg( not( stage0) ) ]
76
+ pub fn atomic_cxchg_relaxed < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
61
77
#[ cfg( not( stage0) ) ]
62
- pub fn atomic_cxchg_failrelaxed < T > ( dst : * mut T , old : T , src : T ) -> T ;
78
+ pub fn atomic_cxchg_failrelaxed < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
63
79
#[ cfg( not( stage0) ) ]
64
- pub fn atomic_cxchg_failacq < T > ( dst : * mut T , old : T , src : T ) -> T ;
80
+ pub fn atomic_cxchg_failacq < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
65
81
#[ cfg( not( stage0) ) ]
66
- pub fn atomic_cxchg_acq_failrelaxed < T > ( dst : * mut T , old : T , src : T ) -> T ;
82
+ pub fn atomic_cxchg_acq_failrelaxed < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
67
83
#[ cfg( not( stage0) ) ]
68
- pub fn atomic_cxchg_acqrel_failrelaxed < T > ( dst : * mut T , old : T , src : T ) -> T ;
84
+ pub fn atomic_cxchg_acqrel_failrelaxed < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
69
85
70
86
#[ cfg( not( stage0) ) ]
71
87
pub fn atomic_cxchgweak < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
0 commit comments