Skip to content

Commit 4e3fc64

Browse files
committed
Move clzi2 into the int module
1 parent a74490a commit 4e3fc64

File tree

2 files changed

+62
-62
lines changed

2 files changed

+62
-62
lines changed

src/arm.rs

Lines changed: 0 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -233,65 +233,3 @@ pub unsafe extern "aapcs" fn __aeabi_memclr4(dest: *mut u8, n: usize) {
233233
pub unsafe extern "aapcs" fn __aeabi_memclr8(dest: *mut u8, n: usize) {
234234
__aeabi_memset4(dest, n, 0);
235235
}
236-
237-
#[no_mangle]
238-
#[cfg(any(
239-
target_pointer_width = "16",
240-
target_pointer_width = "32",
241-
target_pointer_width = "64"
242-
))]
243-
pub extern "C" fn __clzsi2(mut x: usize) -> usize {
244-
// TODO: const this? Requires const if
245-
let mut y: usize;
246-
let mut n: usize = {
247-
#[cfg(target_pointer_width = "64")]
248-
{
249-
64
250-
}
251-
#[cfg(target_pointer_width = "32")]
252-
{
253-
32
254-
}
255-
#[cfg(target_pointer_width = "16")]
256-
{
257-
16
258-
}
259-
};
260-
#[cfg(target_pointer_width = "64")]
261-
{
262-
y = x >> 32;
263-
if y != 0 {
264-
n -= 32;
265-
x = y;
266-
}
267-
}
268-
#[cfg(any(target_pointer_width = "32", target_pointer_width = "64"))]
269-
{
270-
y = x >> 16;
271-
if y != 0 {
272-
n -= 16;
273-
x = y;
274-
}
275-
}
276-
y = x >> 8;
277-
if y != 0 {
278-
n -= 8;
279-
x = y;
280-
}
281-
y = x >> 4;
282-
if y != 0 {
283-
n -= 4;
284-
x = y;
285-
}
286-
y = x >> 2;
287-
if y != 0 {
288-
n -= 2;
289-
x = y;
290-
}
291-
y = x >> 1;
292-
if y != 0 {
293-
n - 2
294-
} else {
295-
n - x
296-
}
297-
}

src/int/mod.rs

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,3 +300,65 @@ macro_rules! impl_wide_int {
300300

301301
impl_wide_int!(u32, u64, 32);
302302
impl_wide_int!(u64, u128, 64);
303+
304+
#[no_mangle]
305+
#[cfg(any(
306+
target_pointer_width = "16",
307+
target_pointer_width = "32",
308+
target_pointer_width = "64"
309+
))]
310+
pub extern "C" fn __clzsi2(mut x: usize) -> usize {
311+
// TODO: const this? Would require const-if
312+
let mut y: usize;
313+
let mut n: usize = {
314+
#[cfg(target_pointer_width = "64")]
315+
{
316+
64
317+
}
318+
#[cfg(target_pointer_width = "32")]
319+
{
320+
32
321+
}
322+
#[cfg(target_pointer_width = "16")]
323+
{
324+
16
325+
}
326+
};
327+
#[cfg(target_pointer_width = "64")]
328+
{
329+
y = x >> 32;
330+
if y != 0 {
331+
n -= 32;
332+
x = y;
333+
}
334+
}
335+
#[cfg(any(target_pointer_width = "32", target_pointer_width = "64"))]
336+
{
337+
y = x >> 16;
338+
if y != 0 {
339+
n -= 16;
340+
x = y;
341+
}
342+
}
343+
y = x >> 8;
344+
if y != 0 {
345+
n -= 8;
346+
x = y;
347+
}
348+
y = x >> 4;
349+
if y != 0 {
350+
n -= 4;
351+
x = y;
352+
}
353+
y = x >> 2;
354+
if y != 0 {
355+
n -= 2;
356+
x = y;
357+
}
358+
y = x >> 1;
359+
if y != 0 {
360+
n - 2
361+
} else {
362+
n - x
363+
}
364+
}

0 commit comments

Comments
 (0)