@@ -53,19 +53,35 @@ extern "rust-intrinsic" {
5353 // NB: These intrinsics take raw pointers because they mutate aliased
5454 // memory, which is not valid for either `&` or `&mut`.
5555
56+ #[ cfg( stage0) ]
5657 pub fn atomic_cxchg < T > ( dst : * mut T , old : T , src : T ) -> T ;
58+ #[ cfg( stage0) ]
5759 pub fn atomic_cxchg_acq < T > ( dst : * mut T , old : T , src : T ) -> T ;
60+ #[ cfg( stage0) ]
5861 pub fn atomic_cxchg_rel < T > ( dst : * mut T , old : T , src : T ) -> T ;
62+ #[ cfg( stage0) ]
5963 pub fn atomic_cxchg_acqrel < T > ( dst : * mut T , old : T , src : T ) -> T ;
64+ #[ cfg( stage0) ]
6065 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 ) ;
6177 #[ 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 ) ;
6379 #[ 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 ) ;
6581 #[ 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 ) ;
6783 #[ 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 ) ;
6985
7086 #[ cfg( not( stage0) ) ]
7187 pub fn atomic_cxchgweak < T > ( dst : * mut T , old : T , src : T ) -> ( T , bool ) ;
0 commit comments