Skip to content

Commit 6c6304d

Browse files
committed
regularize the location and documentation of division functions
1 parent e7594a4 commit 6c6304d

File tree

2 files changed

+33
-25
lines changed

2 files changed

+33
-25
lines changed

src/int/sdiv.rs

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -61,42 +61,52 @@ impl Divmod for i64 {}
6161
intrinsics! {
6262
#[maybe_use_optimized_c_shim]
6363
#[arm_aeabi_alias = __aeabi_idiv]
64+
/// Returns `n / d`
6465
pub extern "C" fn __divsi3(a: i32, b: i32) -> i32 {
6566
a.div(b)
6667
}
6768

6869
#[maybe_use_optimized_c_shim]
69-
pub extern "C" fn __divdi3(a: i64, b: i64) -> i64 {
70-
a.div(b)
70+
/// Returns `n % d`
71+
pub extern "C" fn __modsi3(a: i32, b: i32) -> i32 {
72+
a.mod_(b)
7173
}
72-
73-
#[win64_128bit_abi_hack]
74-
pub extern "C" fn __divti3(a: i128, b: i128) -> i128 {
75-
a.div(b)
74+
75+
#[maybe_use_optimized_c_shim]
76+
/// Returns `n / d` and sets `*rem = n % d`
77+
pub extern "C" fn __divmodsi4(a: i32, b: i32, rem: &mut i32) -> i32 {
78+
a.divmod(b, rem, |a, b| __divsi3(a, b))
7679
}
7780

7881
#[maybe_use_optimized_c_shim]
79-
pub extern "C" fn __modsi3(a: i32, b: i32) -> i32 {
80-
a.mod_(b)
82+
/// Returns `n / d`
83+
pub extern "C" fn __divdi3(a: i64, b: i64) -> i64 {
84+
a.div(b)
8185
}
8286

8387
#[maybe_use_optimized_c_shim]
88+
/// Returns `n % d`
8489
pub extern "C" fn __moddi3(a: i64, b: i64) -> i64 {
8590
a.mod_(b)
8691
}
8792

88-
#[win64_128bit_abi_hack]
89-
pub extern "C" fn __modti3(a: i128, b: i128) -> i128 {
90-
a.mod_(b)
93+
#[aapcs_on_arm]
94+
/// Returns `n / d` and sets `*rem = n % d`
95+
pub extern "C" fn __divmoddi4(a: i64, b: i64, rem: &mut i64) -> i64 {
96+
a.divmod(b, rem, |a, b| __divdi3(a, b))
9197
}
9298

93-
#[maybe_use_optimized_c_shim]
94-
pub extern "C" fn __divmodsi4(a: i32, b: i32, rem: &mut i32) -> i32 {
95-
a.divmod(b, rem, |a, b| __divsi3(a, b))
99+
#[win64_128bit_abi_hack]
100+
/// Returns `n / d`
101+
pub extern "C" fn __divti3(a: i128, b: i128) -> i128 {
102+
a.div(b)
96103
}
97104

98-
#[aapcs_on_arm]
99-
pub extern "C" fn __divmoddi4(a: i64, b: i64, rem: &mut i64) -> i64 {
100-
a.divmod(b, rem, |a, b| __divdi3(a, b))
105+
#[win64_128bit_abi_hack]
106+
/// Returns `n % d`
107+
pub extern "C" fn __modti3(a: i128, b: i128) -> i128 {
108+
a.mod_(b)
101109
}
110+
111+
// there is no `__divmodti4`
102112
}

src/int/udiv.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,11 @@ intrinsics! {
242242
rem
243243
}
244244

245+
/// Returns `n / d` and sets `*rem = n % d`
246+
pub extern "C" fn __udivmoddi4(n: u64, d: u64, rem: Option<&mut u64>) -> u64 {
247+
udivmod_inner!(n, d, rem, u64)
248+
}
249+
245250
#[win64_128bit_abi_hack]
246251
/// Returns `n / d`
247252
pub extern "C" fn __udivti3(n: u128, d: u128) -> u128 {
@@ -256,16 +261,9 @@ intrinsics! {
256261
rem
257262
}
258263

259-
/// Returns `n / d` and sets `*rem = n % d`
260-
pub extern "C" fn __udivmoddi4(n: u64, d: u64, rem: Option<&mut u64>) -> u64 {
261-
udivmod_inner!(n, d, rem, u64)
262-
}
263-
264264
#[win64_128bit_abi_hack]
265265
/// Returns `n / d` and sets `*rem = n % d`
266-
pub extern "C" fn __udivmodti4(n: u128,
267-
d: u128,
268-
rem: Option<&mut u128>) -> u128 {
266+
pub extern "C" fn __udivmodti4(n: u128, d: u128, rem: Option<&mut u128>) -> u128 {
269267
udivmod_inner!(n, d, rem, u128)
270268
}
271269
}

0 commit comments

Comments
 (0)