@@ -115,7 +115,7 @@ pub extern "C" fn __umoddi3(a: u64, b: u64) -> u64 {
115
115
}
116
116
117
117
macro_rules! udivmod_inner {
118
- ( $n: expr, $d: expr, $rem: expr, $ty: ty, $tys : ty , $tyh : ty ) => { {
118
+ ( $n: expr, $d: expr, $rem: expr, $ty: ty) => { {
119
119
let ( n, d, rem) = ( $n, $d, $rem) ;
120
120
// NOTE X is unknown, K != 0
121
121
if n. high( ) == 0 {
@@ -179,7 +179,7 @@ macro_rules! udivmod_inner {
179
179
sr = d. high( ) . leading_zeros( ) . wrapping_sub( n. high( ) . leading_zeros( ) ) ;
180
180
181
181
// D > N
182
- if sr > <$tyh >:: bits( ) - 2 {
182
+ if sr > <hty! ( $ty ) >:: bits( ) - 2 {
183
183
if let Some ( rem) = rem {
184
184
* rem = n;
185
185
}
@@ -188,7 +188,7 @@ macro_rules! udivmod_inner {
188
188
189
189
sr += 1 ;
190
190
191
- // 1 <= sr <= <$tyh >::bits() - 1
191
+ // 1 <= sr <= <hty!($ty) >::bits() - 1
192
192
q = n << ( <$ty>:: bits( ) - sr) ;
193
193
r = n >> sr;
194
194
} else if d. high( ) == 0 {
@@ -208,7 +208,7 @@ macro_rules! udivmod_inner {
208
208
} ;
209
209
}
210
210
211
- sr = 1 + <$tyh >:: bits( ) + d. low( ) . leading_zeros( ) - n. high( ) . leading_zeros( ) ;
211
+ sr = 1 + <hty! ( $ty ) >:: bits( ) + d. low( ) . leading_zeros( ) - n. high( ) . leading_zeros( ) ;
212
212
213
213
// 2 <= sr <= u64::bits() - 1
214
214
q = n << ( <$ty>:: bits( ) - sr) ;
@@ -220,7 +220,7 @@ macro_rules! udivmod_inner {
220
220
sr = d. high( ) . leading_zeros( ) . wrapping_sub( n. high( ) . leading_zeros( ) ) ;
221
221
222
222
// D > N
223
- if sr > <$tyh >:: bits( ) - 1 {
223
+ if sr > <hty! ( $ty ) >:: bits( ) - 1 {
224
224
if let Some ( rem) = rem {
225
225
* rem = n;
226
226
}
@@ -229,7 +229,7 @@ macro_rules! udivmod_inner {
229
229
230
230
sr += 1 ;
231
231
232
- // 1 <= sr <= <$tyh >::bits()
232
+ // 1 <= sr <= <hty!($ty) >::bits()
233
233
q = n << ( <$ty>:: bits( ) - sr) ;
234
234
r = n >> sr;
235
235
}
@@ -251,8 +251,8 @@ macro_rules! udivmod_inner {
251
251
// r -= d;
252
252
// carry = 1;
253
253
// }
254
- let s = ( d. wrapping_sub( r) . wrapping_sub( 1 ) ) as $tys >> ( <$ty>:: bits( ) - 1 ) ;
255
- carry = ( s & 1 ) as $tyh ;
254
+ let s = ( d. wrapping_sub( r) . wrapping_sub( 1 ) ) as os_ty! ( $ty ) >> ( <$ty>:: bits( ) - 1 ) ;
255
+ carry = ( s & 1 ) as hty! ( $ty ) ;
256
256
r -= d & s as $ty;
257
257
}
258
258
@@ -266,7 +266,7 @@ macro_rules! udivmod_inner {
266
266
/// Returns `n / d` and sets `*rem = n % d`
267
267
#[ cfg_attr( not( test) , no_mangle) ]
268
268
pub extern "C" fn __udivmoddi4 ( n : u64 , d : u64 , rem : Option < & mut u64 > ) -> u64 {
269
- udivmod_inner ! ( n, d, rem, u64 , i64 , u32 )
269
+ udivmod_inner ! ( n, d, rem, u64 )
270
270
}
271
271
272
272
#[ cfg( test) ]
0 commit comments