@@ -98,20 +98,20 @@ template <typename Ty, typename V = utils::remove_addrspace_t<Ty>>
9898utils::enable_if_t <utils::is_same_v<V, float >, V>
9999max (Ty *Address, V Val, atomic::OrderingTy Ordering) {
100100 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));
105105}
106106
107107template <typename Ty, typename V = utils::remove_addrspace_t <Ty>>
108108utils::enable_if_t <utils::is_same_v<V, double >, V>
109109max (Ty *Address, V Val, atomic::OrderingTy Ordering) {
110110 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));
115115}
116116
117117template <typename Ty, typename V = utils::remove_addrspace_t <Ty>>
@@ -126,10 +126,10 @@ template <typename Ty, typename V = utils::remove_addrspace_t<Ty>>
126126utils::enable_if_t <utils::is_same_v<V, float >, V>
127127min (Ty *Address, V Val, atomic::OrderingTy Ordering) {
128128 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));
133133}
134134
135135// 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>
138138min (Ty *Address, utils::remove_addrspace_t <Ty> Val,
139139 atomic::OrderingTy Ordering) {
140140 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));
145145}
146146
147147template <typename Ty, typename V = utils::remove_addrspace_t <Ty>>
0 commit comments