Parcourir la source

Move clzi2 into the int module

Lokathor il y a 6 ans
Parent
commit
4e3fc640df
2 fichiers modifiés avec 62 ajouts et 62 suppressions
  1. 0 62
      src/arm.rs
  2. 62 0
      src/int/mod.rs

+ 0 - 62
src/arm.rs

@@ -233,65 +233,3 @@ pub unsafe extern "aapcs" fn __aeabi_memclr4(dest: *mut u8, n: usize) {
 pub unsafe extern "aapcs" fn __aeabi_memclr8(dest: *mut u8, n: usize) {
     __aeabi_memset4(dest, n, 0);
 }
-
-#[no_mangle]
-#[cfg(any(
-    target_pointer_width = "16",
-    target_pointer_width = "32",
-    target_pointer_width = "64"
-))]
-pub extern "C" fn __clzsi2(mut x: usize) -> usize {
-    // TODO: const this? Requires const if
-    let mut y: usize;
-    let mut n: usize = {
-        #[cfg(target_pointer_width = "64")]
-        {
-            64
-        }
-        #[cfg(target_pointer_width = "32")]
-        {
-            32
-        }
-        #[cfg(target_pointer_width = "16")]
-        {
-            16
-        }
-    };
-    #[cfg(target_pointer_width = "64")]
-    {
-        y = x >> 32;
-        if y != 0 {
-            n -= 32;
-            x = y;
-        }
-    }
-    #[cfg(any(target_pointer_width = "32", target_pointer_width = "64"))]
-    {
-        y = x >> 16;
-        if y != 0 {
-            n -= 16;
-            x = y;
-        }
-    }
-    y = x >> 8;
-    if y != 0 {
-        n -= 8;
-        x = y;
-    }
-    y = x >> 4;
-    if y != 0 {
-        n -= 4;
-        x = y;
-    }
-    y = x >> 2;
-    if y != 0 {
-        n -= 2;
-        x = y;
-    }
-    y = x >> 1;
-    if y != 0 {
-        n - 2
-    } else {
-        n - x
-    }
-}

+ 62 - 0
src/int/mod.rs

@@ -300,3 +300,65 @@ macro_rules! impl_wide_int {
 
 impl_wide_int!(u32, u64, 32);
 impl_wide_int!(u64, u128, 64);
+
+#[no_mangle]
+#[cfg(any(
+    target_pointer_width = "16",
+    target_pointer_width = "32",
+    target_pointer_width = "64"
+))]
+pub extern "C" fn __clzsi2(mut x: usize) -> usize {
+    // TODO: const this? Would require const-if
+    let mut y: usize;
+    let mut n: usize = {
+        #[cfg(target_pointer_width = "64")]
+        {
+            64
+        }
+        #[cfg(target_pointer_width = "32")]
+        {
+            32
+        }
+        #[cfg(target_pointer_width = "16")]
+        {
+            16
+        }
+    };
+    #[cfg(target_pointer_width = "64")]
+    {
+        y = x >> 32;
+        if y != 0 {
+            n -= 32;
+            x = y;
+        }
+    }
+    #[cfg(any(target_pointer_width = "32", target_pointer_width = "64"))]
+    {
+        y = x >> 16;
+        if y != 0 {
+            n -= 16;
+            x = y;
+        }
+    }
+    y = x >> 8;
+    if y != 0 {
+        n -= 8;
+        x = y;
+    }
+    y = x >> 4;
+    if y != 0 {
+        n -= 4;
+        x = y;
+    }
+    y = x >> 2;
+    if y != 0 {
+        n -= 2;
+        x = y;
+    }
+    y = x >> 1;
+    if y != 0 {
+        n - 2
+    } else {
+        n - x
+    }
+}