@@ -558,6 +558,7 @@ impl AtomicBool {
558
558
/// ```
559
559
#[ inline]
560
560
#[ stable( feature = "extended_compare_and_swap" , since = "1.10.0" ) ]
561
+ #[ cfg( target_has_atomic = "cas" ) ]
561
562
pub fn compare_exchange_weak ( & self ,
562
563
current : bool ,
563
564
new : bool ,
@@ -1041,6 +1042,7 @@ impl<T> AtomicPtr<T> {
1041
1042
/// ```
1042
1043
#[ inline]
1043
1044
#[ stable( feature = "extended_compare_and_swap" , since = "1.10.0" ) ]
1045
+ #[ cfg( target_has_atomic = "cas" ) ]
1044
1046
pub fn compare_exchange_weak ( & self ,
1045
1047
current : * mut T ,
1046
1048
new : * mut T ,
@@ -1434,6 +1436,7 @@ loop {
1434
1436
```" ) ,
1435
1437
#[ inline]
1436
1438
#[ $stable_cxchg]
1439
+ #[ cfg( target_has_atomic = "cas" ) ]
1437
1440
pub fn compare_exchange_weak( & self ,
1438
1441
current: $int_type,
1439
1442
new: $int_type,
@@ -1471,6 +1474,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 10);
1471
1474
```" ) ,
1472
1475
#[ inline]
1473
1476
#[ $stable]
1477
+ #[ cfg( target_has_atomic = "cas" ) ]
1474
1478
pub fn fetch_add( & self , val: $int_type, order: Ordering ) -> $int_type {
1475
1479
unsafe { atomic_add( self . v. get( ) , val, order) }
1476
1480
}
@@ -1502,6 +1506,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 10);
1502
1506
```" ) ,
1503
1507
#[ inline]
1504
1508
#[ $stable]
1509
+ #[ cfg( target_has_atomic = "cas" ) ]
1505
1510
pub fn fetch_sub( & self , val: $int_type, order: Ordering ) -> $int_type {
1506
1511
unsafe { atomic_sub( self . v. get( ) , val, order) }
1507
1512
}
@@ -1536,6 +1541,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 0b100001);
1536
1541
```" ) ,
1537
1542
#[ inline]
1538
1543
#[ $stable]
1544
+ #[ cfg( target_has_atomic = "cas" ) ]
1539
1545
pub fn fetch_and( & self , val: $int_type, order: Ordering ) -> $int_type {
1540
1546
unsafe { atomic_and( self . v. get( ) , val, order) }
1541
1547
}
@@ -1571,6 +1577,7 @@ assert_eq!(foo.load(Ordering::SeqCst), !(0x13 & 0x31));
1571
1577
```" ) ,
1572
1578
#[ inline]
1573
1579
#[ $stable_nand]
1580
+ #[ cfg( target_has_atomic = "cas" ) ]
1574
1581
pub fn fetch_nand( & self , val: $int_type, order: Ordering ) -> $int_type {
1575
1582
unsafe { atomic_nand( self . v. get( ) , val, order) }
1576
1583
}
@@ -1605,6 +1612,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 0b111111);
1605
1612
```" ) ,
1606
1613
#[ inline]
1607
1614
#[ $stable]
1615
+ #[ cfg( target_has_atomic = "cas" ) ]
1608
1616
pub fn fetch_or( & self , val: $int_type, order: Ordering ) -> $int_type {
1609
1617
unsafe { atomic_or( self . v. get( ) , val, order) }
1610
1618
}
@@ -1639,6 +1647,7 @@ assert_eq!(foo.load(Ordering::SeqCst), 0b011110);
1639
1647
```" ) ,
1640
1648
#[ inline]
1641
1649
#[ $stable]
1650
+ #[ cfg( target_has_atomic = "cas" ) ]
1642
1651
pub fn fetch_xor( & self , val: $int_type, order: Ordering ) -> $int_type {
1643
1652
unsafe { atomic_xor( self . v. get( ) , val, order) }
1644
1653
}
@@ -1688,6 +1697,7 @@ assert_eq!(x.load(Ordering::SeqCst), 9);
1688
1697
#[ unstable( feature = "no_more_cas" ,
1689
1698
reason = "no more CAS loops in user code" ,
1690
1699
issue = "48655" ) ]
1700
+ #[ cfg( target_has_atomic = "cas" ) ]
1691
1701
pub fn fetch_update<F >( & self ,
1692
1702
mut f: F ,
1693
1703
fetch_order: Ordering ,
@@ -1748,6 +1758,7 @@ assert!(max_foo == 42);
1748
1758
#[ unstable( feature = "atomic_min_max" ,
1749
1759
reason = "easier and faster min/max than writing manual CAS loop" ,
1750
1760
issue = "48655" ) ]
1761
+ #[ cfg( target_has_atomic = "cas" ) ]
1751
1762
pub fn fetch_max( & self , val: $int_type, order: Ordering ) -> $int_type {
1752
1763
unsafe { $max_fn( self . v. get( ) , val, order) }
1753
1764
}
@@ -1799,6 +1810,7 @@ assert_eq!(min_foo, 12);
1799
1810
#[ unstable( feature = "atomic_min_max" ,
1800
1811
reason = "easier and faster min/max than writing manual CAS loop" ,
1801
1812
issue = "48655" ) ]
1813
+ #[ cfg( target_has_atomic = "cas" ) ]
1802
1814
pub fn fetch_min( & self , val: $int_type, order: Ordering ) -> $int_type {
1803
1815
unsafe { $min_fn( self . v. get( ) , val, order) }
1804
1816
}
@@ -1987,6 +1999,7 @@ unsafe fn atomic_swap<T>(dst: *mut T, val: T, order: Ordering) -> T {
1987
1999
1988
2000
/// Returns the previous value (like __sync_fetch_and_add).
1989
2001
#[ inline]
2002
+ #[ cfg( target_has_atomic = "cas" ) ]
1990
2003
unsafe fn atomic_add < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
1991
2004
match order {
1992
2005
Acquire => intrinsics:: atomic_xadd_acq ( dst, val) ,
@@ -1999,6 +2012,7 @@ unsafe fn atomic_add<T>(dst: *mut T, val: T, order: Ordering) -> T {
1999
2012
2000
2013
/// Returns the previous value (like __sync_fetch_and_sub).
2001
2014
#[ inline]
2015
+ #[ cfg( target_has_atomic = "cas" ) ]
2002
2016
unsafe fn atomic_sub < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2003
2017
match order {
2004
2018
Acquire => intrinsics:: atomic_xsub_acq ( dst, val) ,
@@ -2035,6 +2049,7 @@ unsafe fn atomic_compare_exchange<T>(dst: *mut T,
2035
2049
}
2036
2050
2037
2051
#[ inline]
2052
+ #[ cfg( target_has_atomic = "cas" ) ]
2038
2053
unsafe fn atomic_compare_exchange_weak < T > ( dst : * mut T ,
2039
2054
old : T ,
2040
2055
new : T ,
@@ -2059,6 +2074,7 @@ unsafe fn atomic_compare_exchange_weak<T>(dst: *mut T,
2059
2074
}
2060
2075
2061
2076
#[ inline]
2077
+ #[ cfg( target_has_atomic = "cas" ) ]
2062
2078
unsafe fn atomic_and < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2063
2079
match order {
2064
2080
Acquire => intrinsics:: atomic_and_acq ( dst, val) ,
@@ -2070,6 +2086,7 @@ unsafe fn atomic_and<T>(dst: *mut T, val: T, order: Ordering) -> T {
2070
2086
}
2071
2087
2072
2088
#[ inline]
2089
+ #[ cfg( target_has_atomic = "cas" ) ]
2073
2090
unsafe fn atomic_nand < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2074
2091
match order {
2075
2092
Acquire => intrinsics:: atomic_nand_acq ( dst, val) ,
@@ -2081,6 +2098,7 @@ unsafe fn atomic_nand<T>(dst: *mut T, val: T, order: Ordering) -> T {
2081
2098
}
2082
2099
2083
2100
#[ inline]
2101
+ #[ cfg( target_has_atomic = "cas" ) ]
2084
2102
unsafe fn atomic_or < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2085
2103
match order {
2086
2104
Acquire => intrinsics:: atomic_or_acq ( dst, val) ,
@@ -2092,6 +2110,7 @@ unsafe fn atomic_or<T>(dst: *mut T, val: T, order: Ordering) -> T {
2092
2110
}
2093
2111
2094
2112
#[ inline]
2113
+ #[ cfg( target_has_atomic = "cas" ) ]
2095
2114
unsafe fn atomic_xor < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2096
2115
match order {
2097
2116
Acquire => intrinsics:: atomic_xor_acq ( dst, val) ,
@@ -2104,6 +2123,7 @@ unsafe fn atomic_xor<T>(dst: *mut T, val: T, order: Ordering) -> T {
2104
2123
2105
2124
/// returns the max value (signed comparison)
2106
2125
#[ inline]
2126
+ #[ cfg( target_has_atomic = "cas" ) ]
2107
2127
unsafe fn atomic_max < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2108
2128
match order {
2109
2129
Acquire => intrinsics:: atomic_max_acq ( dst, val) ,
@@ -2116,6 +2136,7 @@ unsafe fn atomic_max<T>(dst: *mut T, val: T, order: Ordering) -> T {
2116
2136
2117
2137
/// returns the min value (signed comparison)
2118
2138
#[ inline]
2139
+ #[ cfg( target_has_atomic = "cas" ) ]
2119
2140
unsafe fn atomic_min < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2120
2141
match order {
2121
2142
Acquire => intrinsics:: atomic_min_acq ( dst, val) ,
@@ -2128,6 +2149,7 @@ unsafe fn atomic_min<T>(dst: *mut T, val: T, order: Ordering) -> T {
2128
2149
2129
2150
/// returns the max value (signed comparison)
2130
2151
#[ inline]
2152
+ #[ cfg( target_has_atomic = "cas" ) ]
2131
2153
unsafe fn atomic_umax < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2132
2154
match order {
2133
2155
Acquire => intrinsics:: atomic_umax_acq ( dst, val) ,
@@ -2140,6 +2162,7 @@ unsafe fn atomic_umax<T>(dst: *mut T, val: T, order: Ordering) -> T {
2140
2162
2141
2163
/// returns the min value (signed comparison)
2142
2164
#[ inline]
2165
+ #[ cfg( target_has_atomic = "cas" ) ]
2143
2166
unsafe fn atomic_umin < T > ( dst : * mut T , val : T , order : Ordering ) -> T {
2144
2167
match order {
2145
2168
Acquire => intrinsics:: atomic_umin_acq ( dst, val) ,
0 commit comments