@@ -98,20 +98,20 @@ template <typename Ty, typename V = utils::remove_addrspace_t<Ty>>
98
98
utils::enable_if_t <utils::is_same_v<V, float >, V>
99
99
max (Ty *Address, V Val, atomic::OrderingTy Ordering) {
100
100
if (Val >= 0 )
101
- return utils::convertViaPun <float >(
102
- max ((int32_t *)Address, utils::convertViaPun <int32_t >(Val), Ordering));
103
- return utils::convertViaPun <float >(
104
- min ((uint32_t *)Address, utils::convertViaPun <uint32_t >(Val), Ordering));
101
+ return utils::bitCast <float >(
102
+ max ((int32_t *)Address, utils::bitCast <int32_t >(Val), Ordering));
103
+ return utils::bitCast <float >(
104
+ min ((uint32_t *)Address, utils::bitCast <uint32_t >(Val), Ordering));
105
105
}
106
106
107
107
template <typename Ty, typename V = utils::remove_addrspace_t <Ty>>
108
108
utils::enable_if_t <utils::is_same_v<V, double >, V>
109
109
max (Ty *Address, V Val, atomic::OrderingTy Ordering) {
110
110
if (Val >= 0 )
111
- return utils::convertViaPun <double >(
112
- max ((int64_t *)Address, utils::convertViaPun <int64_t >(Val), Ordering));
113
- return utils::convertViaPun <double >(
114
- min ((uint64_t *)Address, utils::convertViaPun <uint64_t >(Val), Ordering));
111
+ return utils::bitCast <double >(
112
+ max ((int64_t *)Address, utils::bitCast <int64_t >(Val), Ordering));
113
+ return utils::bitCast <double >(
114
+ min ((uint64_t *)Address, utils::bitCast <uint64_t >(Val), Ordering));
115
115
}
116
116
117
117
template <typename Ty, typename V = utils::remove_addrspace_t <Ty>>
@@ -126,10 +126,10 @@ template <typename Ty, typename V = utils::remove_addrspace_t<Ty>>
126
126
utils::enable_if_t <utils::is_same_v<V, float >, V>
127
127
min (Ty *Address, V Val, atomic::OrderingTy Ordering) {
128
128
if (Val >= 0 )
129
- return utils::convertViaPun <float >(
130
- min ((int32_t *)Address, utils::convertViaPun <int32_t >(Val), Ordering));
131
- return utils::convertViaPun <float >(
132
- max ((uint32_t *)Address, utils::convertViaPun <uint32_t >(Val), Ordering));
129
+ return utils::bitCast <float >(
130
+ min ((int32_t *)Address, utils::bitCast <int32_t >(Val), Ordering));
131
+ return utils::bitCast <float >(
132
+ max ((uint32_t *)Address, utils::bitCast <uint32_t >(Val), Ordering));
133
133
}
134
134
135
135
// TODO: Implement this with __atomic_fetch_max and remove the duplication.
@@ -138,10 +138,10 @@ utils::enable_if_t<utils::is_same_v<V, double>, V>
138
138
min (Ty *Address, utils::remove_addrspace_t <Ty> Val,
139
139
atomic::OrderingTy Ordering) {
140
140
if (Val >= 0 )
141
- return utils::convertViaPun <double >(
142
- min ((int64_t *)Address, utils::convertViaPun <int64_t >(Val), Ordering));
143
- return utils::convertViaPun <double >(
144
- max ((uint64_t *)Address, utils::convertViaPun <uint64_t >(Val), Ordering));
141
+ return utils::bitCast <double >(
142
+ min ((int64_t *)Address, utils::bitCast <int64_t >(Val), Ordering));
143
+ return utils::bitCast <double >(
144
+ max ((uint64_t *)Address, utils::bitCast <uint64_t >(Val), Ordering));
145
145
}
146
146
147
147
template <typename Ty, typename V = utils::remove_addrspace_t <Ty>>
0 commit comments