]> git.proxmox.com Git - qemu.git/blobdiff - host-utils.h
Merge branch 'stable-0.15' of git://git.qemu.org/qemu
[qemu.git] / host-utils.h
index 2a46c9baff0e36eb2eb3cb072d87e768d02aef1f..0ddc17658295a9f9d4c1a05e45c8489efdfa5a7a 100644 (file)
 
 #if defined(__x86_64__)
 #define __HAVE_FAST_MULU64__
-static always_inline void mulu64 (uint64_t *plow, uint64_t *phigh,
-                                  uint64_t a, uint64_t b)
+static inline void mulu64(uint64_t *plow, uint64_t *phigh,
+                          uint64_t a, uint64_t b)
 {
     __asm__ ("mul %0\n\t"
              : "=d" (*phigh), "=a" (*plow)
              : "a" (a), "0" (b));
 }
 #define __HAVE_FAST_MULS64__
-static always_inline void muls64 (uint64_t *plow, uint64_t *phigh,
-                                  int64_t a, int64_t b)
+static inline void muls64(uint64_t *plow, uint64_t *phigh,
+                          int64_t a, int64_t b)
 {
     __asm__ ("imul %0\n\t"
              : "=d" (*phigh), "=a" (*plow)
@@ -49,9 +49,9 @@ void mulu64(uint64_t *phigh, uint64_t *plow, uint64_t a, uint64_t b);
 
 /* Binary search for leading zeros.  */
 
-static always_inline int clz32(uint32_t val)
+static inline int clz32(uint32_t val)
 {
-#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#if QEMU_GNUC_PREREQ(3, 4)
     if (val)
         return __builtin_clz(val);
     else
@@ -86,14 +86,14 @@ static always_inline int clz32(uint32_t val)
 #endif
 }
 
-static always_inline int clo32(uint32_t val)
+static inline int clo32(uint32_t val)
 {
     return clz32(~val);
 }
 
-static always_inline int clz64(uint64_t val)
+static inline int clz64(uint64_t val)
 {
-#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#if QEMU_GNUC_PREREQ(3, 4)
     if (val)
         return __builtin_clzll(val);
     else
@@ -111,14 +111,14 @@ static always_inline int clz64(uint64_t val)
 #endif
 }
 
-static always_inline int clo64(uint64_t val)
+static inline int clo64(uint64_t val)
 {
     return clz64(~val);
 }
 
-static always_inline int ctz32 (uint32_t val)
+static inline int ctz32(uint32_t val)
 {
-#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#if QEMU_GNUC_PREREQ(3, 4)
     if (val)
         return __builtin_ctz(val);
     else
@@ -128,43 +128,43 @@ static always_inline int ctz32 (uint32_t val)
 
     cnt = 0;
     if (!(val & 0x0000FFFFUL)) {
-         cnt += 16;
+        cnt += 16;
         val >>= 16;
-     }
+    }
     if (!(val & 0x000000FFUL)) {
-         cnt += 8;
+        cnt += 8;
         val >>= 8;
-     }
+    }
     if (!(val & 0x0000000FUL)) {
-         cnt += 4;
+        cnt += 4;
         val >>= 4;
-     }
+    }
     if (!(val & 0x00000003UL)) {
-         cnt += 2;
+        cnt += 2;
         val >>= 2;
-     }
+    }
     if (!(val & 0x00000001UL)) {
-         cnt++;
+        cnt++;
         val >>= 1;
-     }
+    }
     if (!(val & 0x00000001UL)) {
-         cnt++;
-     }
+        cnt++;
+    }
 
-     return cnt;
+    return cnt;
 #endif
- }
-static always_inline int cto32 (uint32_t val)
- {
+}
+
+static inline int cto32(uint32_t val)
+{
     return ctz32(~val);
 }
 
-static always_inline int ctz64 (uint64_t val)
+static inline int ctz64(uint64_t val)
 {
-#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#if QEMU_GNUC_PREREQ(3, 4)
     if (val)
-        return __builtin_ctz(val);
+        return __builtin_ctzll(val);
     else
         return 64;
 #else
@@ -180,12 +180,12 @@ static always_inline int ctz64 (uint64_t val)
 #endif
 }
 
-static always_inline int cto64 (uint64_t val)
+static inline int cto64(uint64_t val)
 {
     return ctz64(~val);
 }
 
-static always_inline int ctpop8 (uint8_t val)
+static inline int ctpop8(uint8_t val)
 {
     val = (val & 0x55) + ((val >> 1) & 0x55);
     val = (val & 0x33) + ((val >> 2) & 0x33);
@@ -194,7 +194,7 @@ static always_inline int ctpop8 (uint8_t val)
     return val;
 }
 
-static always_inline int ctpop16 (uint16_t val)
+static inline int ctpop16(uint16_t val)
 {
     val = (val & 0x5555) + ((val >> 1) & 0x5555);
     val = (val & 0x3333) + ((val >> 2) & 0x3333);
@@ -204,9 +204,9 @@ static always_inline int ctpop16 (uint16_t val)
     return val;
 }
 
-static always_inline int ctpop32 (uint32_t val)
+static inline int ctpop32(uint32_t val)
 {
-#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#if QEMU_GNUC_PREREQ(3, 4)
     return __builtin_popcount(val);
 #else
     val = (val & 0x55555555) + ((val >>  1) & 0x55555555);
@@ -219,9 +219,9 @@ static always_inline int ctpop32 (uint32_t val)
 #endif
 }
 
-static always_inline int ctpop64 (uint64_t val)
+static inline int ctpop64(uint64_t val)
 {
-#if defined(__GNUC__) && ((__GNUC__ > 3) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
+#if QEMU_GNUC_PREREQ(3, 4)
     return __builtin_popcountll(val);
 #else
     val = (val & 0x5555555555555555ULL) + ((val >>  1) & 0x5555555555555555ULL);