]> mj.ucw.cz Git - libucw.git/blobdiff - images/math.h
Merge branch 'dev-uint'
[libucw.git] / images / math.h
index 1824c95bb42a7a05361defc282487e32aa7574a3..b322949ddbaa5e4529021da583f647c49b8726b3 100644 (file)
@@ -1,35 +1,27 @@
 #ifndef _IMAGES_MATH_H
 #define _IMAGES_MATH_H
 
+#ifdef CONFIG_UCW_CLEAN_ABI
+#define fast_div_tab ucw_fast_div_tab
+#define fast_sqrt_tab ucw_fast_sqrt_tab
+#endif
+
 extern const u32 fast_div_tab[];
 extern const byte fast_sqrt_tab[];
 
-static inline uns
-isqr(int x)
+static inline uint isqr(int x)
 {
   return x * x;
 }
 
-static inline uns
-fast_div_u32_u8(uns x, uns y)
+static inline uint fast_div_u32_u8(uint x, uint y)
 {
-#ifdef CPU_I386
-  int ret, dmy;
-  asm volatile (
-    "mull %3"
-    :"=d"(ret),"=a"(dmy)
-    :"1"(x),"g"(fast_div_tab[y])
-  );
-  return ret;
-#else
   return ((u64)(x) * fast_div_tab[y]) >> 32;
-#endif
 }
 
-static inline uns
-fast_sqrt_u16(uns x)
+static inline uint fast_sqrt_u16(uint x)
 {
-  uns y;
+  uint y;
   if (x < (1 << 10) - 3)
     y = fast_sqrt_tab[(x + 3) >> 2] >> 3;
   else if (x < (1 << 14) - 28)
@@ -39,10 +31,9 @@ fast_sqrt_u16(uns x)
   return (x < y * y) ? y - 1 : y;
 }
 
-static inline uns
-fast_sqrt_u32(uns x)
+static inline uint fast_sqrt_u32(uint x)
 {
-  uns y;
+  uint y;
   if (x < (1 << 16))
     {
       if (x < (1 << 10) - 3)