@@ -558,6 +558,7 @@ impl AtomicBool {
558558 /// ```
559559 #[ inline]
560560 #[ stable( feature = "extended_compare_and_swap" , since = "1.10.0" ) ]
561+ #[ cfg( target_has_atomic = "cas" ) ]
561562 pub fn compare_exchange_weak ( & self ,
562563 current : bool ,
563564 new : bool ,
@@ -1041,6 +1042,7 @@ impl<T> AtomicPtr<T> {
10411042 /// ```
10421043 #[ inline]
10431044 #[ stable( feature = "extended_compare_and_swap" , since = "1.10.0" ) ]
1045+ #[ cfg( target_has_atomic = "cas" ) ]
10441046 pub fn compare_exchange_weak ( & self ,
10451047 current : * mut T ,
10461048 new : * mut T ,
@@ -1434,6 +1436,7 @@ loop {
14341436```" ) ,
14351437 #[ inline]
14361438 #[ $stable_cxchg]
1439+ #[ cfg( target_has_atomic = "cas" ) ]
14371440 pub fn compare_exchange_weak( & self ,
14381441 current: $int_type,
14391442 new: $int_type,
@@ -1471,6 +1474,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 10);
14711474```" ) ,
14721475 #[ inline]
14731476 #[ $stable]
1477+ #[ cfg( target_has_atomic = "cas" ) ]
14741478 pub fn fetch_add( & self , val: $int_type, order: Ordering ) -> $int_type {
14751479 unsafe { atomic_add( self . v. get( ) , val, order) }
14761480 }
@@ -1502,6 +1506,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 10);
15021506```" ) ,
15031507 #[ inline]
15041508 #[ $stable]
1509+ #[ cfg( target_has_atomic = "cas" ) ]
15051510 pub fn fetch_sub( & self , val: $int_type, order: Ordering ) -> $int_type {
15061511 unsafe { atomic_sub( self . v. get( ) , val, order) }
15071512 }
@@ -1536,6 +1541,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 0b100001);
15361541```" ) ,
15371542 #[ inline]
15381543 #[ $stable]
1544+ #[ cfg( target_has_atomic = "cas" ) ]
15391545 pub fn fetch_and( & self , val: $int_type, order: Ordering ) -> $int_type {
15401546 unsafe { atomic_and( self . v. get( ) , val, order) }
15411547 }
@@ -1571,6 +1577,7 @@ assert_eq!(foo.load(Ordering::SeqCst), !(0x13 & 0x31));
15711577```" ) ,
15721578 #[ inline]
15731579 #[ $stable_nand]
1580+ #[ cfg( target_has_atomic = "cas" ) ]
15741581 pub fn fetch_nand( & self , val: $int_type, order: Ordering ) -> $int_type {
15751582 unsafe { atomic_nand( self . v. get( ) , val, order) }
15761583 }
@@ -1605,6 +1612,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 0b111111);
16051612```" ) ,
16061613 #[ inline]
16071614 #[ $stable]
1615+ #[ cfg( target_has_atomic = "cas" ) ]
16081616 pub fn fetch_or( & self , val: $int_type, order: Ordering ) -> $int_type {
16091617 unsafe { atomic_or( self . v. get( ) , val, order) }
16101618 }
@@ -1639,6 +1647,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 0b011110);
16391647```" ) ,
16401648 #[ inline]
16411649 #[ $stable]
1650+ #[ cfg( target_has_atomic = "cas" ) ]
16421651 pub fn fetch_xor( & self , val: $int_type, order: Ordering ) -> $int_type {
16431652 unsafe { atomic_xor( self . v. get( ) , val, order) }
16441653 }
@@ -1688,6 +1697,7 @@ assert_eq!(x.load(Ordering::SeqCst), 9);
16881697 #[ unstable( feature = "no_more_cas" ,
16891698 reason = "no more CAS loops in user code" ,
16901699 issue = "48655" ) ]
1700+ #[ cfg( target_has_atomic = "cas" ) ]
16911701 pub fn fetch_update<F >( & self ,
16921702 mut f: F ,
16931703 fetch_order: Ordering ,
@@ -1748,6 +1758,7 @@ assert!(max_foo == 42);
17481758 #[ unstable( feature = "atomic_min_max" ,
17491759 reason = "easier and faster min/max than writing manual CAS loop" ,
17501760 issue = "48655" ) ]
1761+ #[ cfg( target_has_atomic = "cas" ) ]
17511762 pub fn fetch_max( & self , val: $int_type, order: Ordering ) -> $int_type {
17521763 unsafe { $max_fn( self . v. get( ) , val, order) }
17531764 }
@@ -1799,6 +1810,7 @@ assert_eq!(min_foo, 12);
17991810 #[ unstable( feature = "atomic_min_max" ,
18001811 reason = "easier and faster min/max than writing manual CAS loop" ,
18011812 issue = "48655" ) ]
1813+ #[ cfg( target_has_atomic = "cas" ) ]
18021814 pub fn fetch_min( & self , val: $int_type, order: Ordering ) -> $int_type {
18031815 unsafe { $min_fn( self . v. get( ) , val, order) }
18041816 }
@@ -1987,6 +1999,7 @@ unsafe fn atomic_swap<T>(dst: *mut T, val: T, order: Ordering) -> T {
19871999
19882000/// Returns the previous value (like __sync_fetch_and_add).
19892001#[ inline]
2002+ #[ cfg( target_has_atomic = "cas" ) ]
19902003unsafe fn atomic_add < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
19912004 match order {
19922005 Acquire => intrinsics:: atomic_xadd_acq ( dst, val) ,
@@ -1999,6 +2012,7 @@ unsafe fn atomic_add<T>(dst: *mut T, val: T, order: Ordering) -> T {
19992012
20002013/// Returns the previous value (like __sync_fetch_and_sub).
20012014#[ inline]
2015+ #[ cfg( target_has_atomic = "cas" ) ]
20022016unsafe fn atomic_sub < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
20032017 match order {
20042018 Acquire => intrinsics:: atomic_xsub_acq ( dst, val) ,
@@ -2035,6 +2049,7 @@ unsafe fn atomic_compare_exchange<T>(dst: *mut T,
20352049}
20362050
20372051#[ inline]
2052+ #[ cfg( target_has_atomic = "cas" ) ]
20382053unsafe fn atomic_compare_exchange_weak < T > ( dst : * mut T ,
20392054 old : T ,
20402055 new : T ,
@@ -2059,6 +2074,7 @@ unsafe fn atomic_compare_exchange_weak<T>(dst: *mut T,
20592074}
20602075
20612076#[ inline]
2077+ #[ cfg( target_has_atomic = "cas" ) ]
20622078unsafe fn atomic_and < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
20632079 match order {
20642080 Acquire => intrinsics:: atomic_and_acq ( dst, val) ,
@@ -2070,6 +2086,7 @@ unsafe fn atomic_and<T>(dst: *mut T, val: T, order: Ordering) -> T {
20702086}
20712087
20722088#[ inline]
2089+ #[ cfg( target_has_atomic = "cas" ) ]
20732090unsafe fn atomic_nand < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
20742091 match order {
20752092 Acquire => intrinsics:: atomic_nand_acq ( dst, val) ,
@@ -2081,6 +2098,7 @@ unsafe fn atomic_nand<T>(dst: *mut T, val: T, order: Ordering) -> T {
20812098}
20822099
20832100#[ inline]
2101+ #[ cfg( target_has_atomic = "cas" ) ]
20842102unsafe fn atomic_or < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
20852103 match order {
20862104 Acquire => intrinsics:: atomic_or_acq ( dst, val) ,
@@ -2092,6 +2110,7 @@ unsafe fn atomic_or<T>(dst: *mut T, val: T, order: Ordering) -> T {
20922110}
20932111
20942112#[ inline]
2113+ #[ cfg( target_has_atomic = "cas" ) ]
20952114unsafe fn atomic_xor < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
20962115 match order {
20972116 Acquire => intrinsics:: atomic_xor_acq ( dst, val) ,
@@ -2104,6 +2123,7 @@ unsafe fn atomic_xor<T>(dst: *mut T, val: T, order: Ordering) -> T {
21042123
21052124/// returns the max value (signed comparison)
21062125#[ inline]
2126+ #[ cfg( target_has_atomic = "cas" ) ]
21072127unsafe fn atomic_max < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
21082128 match order {
21092129 Acquire => intrinsics:: atomic_max_acq ( dst, val) ,
@@ -2116,6 +2136,7 @@ unsafe fn atomic_max<T>(dst: *mut T, val: T, order: Ordering) -> T {
21162136
21172137/// returns the min value (signed comparison)
21182138#[ inline]
2139+ #[ cfg( target_has_atomic = "cas" ) ]
21192140unsafe fn atomic_min < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
21202141 match order {
21212142 Acquire => intrinsics:: atomic_min_acq ( dst, val) ,
@@ -2128,6 +2149,7 @@ unsafe fn atomic_min<T>(dst: *mut T, val: T, order: Ordering) -> T {
21282149
21292150/// returns the max value (signed comparison)
21302151#[ inline]
2152+ #[ cfg( target_has_atomic = "cas" ) ]
21312153unsafe fn atomic_umax < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
21322154 match order {
21332155 Acquire => intrinsics:: atomic_umax_acq ( dst, val) ,
@@ -2140,6 +2162,7 @@ unsafe fn atomic_umax<T>(dst: *mut T, val: T, order: Ordering) -> T {
21402162
21412163/// returns the min value (signed comparison)
21422164#[ inline]
2165+ #[ cfg( target_has_atomic = "cas" ) ]
21432166unsafe fn atomic_umin < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
21442167 match order {
21452168 Acquire => intrinsics:: atomic_umin_acq ( dst, val) ,
0 commit comments