VirtualBox

Ignore:
Timestamp:
Jun 29, 2011 7:07:14 AM (13 years ago)
Author:
vboxsync
Message:

rem: Synced with v0.12.5.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/recompiler/host-utils.h

    r36125 r37675  
    2828#if defined(__x86_64__)
    2929#define __HAVE_FAST_MULU64__
    30 static always_inline void mulu64 (uint64_t *plow, uint64_t *phigh,
    31                                   uint64_t a, uint64_t b)
     30static inline void mulu64(uint64_t *plow, uint64_t *phigh,
     31                          uint64_t a, uint64_t b)
    3232{
    3333    __asm__ ("mul %0\n\t"
     
    3636}
    3737#define __HAVE_FAST_MULS64__
    38 static always_inline void muls64 (uint64_t *plow, uint64_t *phigh,
    39                                   int64_t a, int64_t b)
     38static inline void muls64(uint64_t *plow, uint64_t *phigh,
     39                          int64_t a, int64_t b)
    4040{
    4141    __asm__ ("imul %0\n\t"
     
    5050/* Binary search for leading zeros.  */
    5151
    52 static always_inline int clz32(uint32_t val)
     52static inline int clz32(uint32_t val)
    5353{
    5454#if QEMU_GNUC_PREREQ(3, 4)
     
    8787}
    8888
    89 static always_inline int clo32(uint32_t val)
     89static inline int clo32(uint32_t val)
    9090{
    9191    return clz32(~val);
    9292}
    9393
    94 static always_inline int clz64(uint64_t val)
     94static inline int clz64(uint64_t val)
    9595{
    9696#if QEMU_GNUC_PREREQ(3, 4)
     
    112112}
    113113
    114 static always_inline int clo64(uint64_t val)
     114static inline int clo64(uint64_t val)
    115115{
    116116    return clz64(~val);
    117117}
    118118
    119 static always_inline int ctz32 (uint32_t val)
     119static inline int ctz32(uint32_t val)
    120120{
    121121#if QEMU_GNUC_PREREQ(3, 4)
     
    129129    cnt = 0;
    130130    if (!(val & 0x0000FFFFUL)) {
    131          cnt += 16;
     131        cnt += 16;
    132132        val >>= 16;
    133      }
     133    }
    134134    if (!(val & 0x000000FFUL)) {
    135          cnt += 8;
     135        cnt += 8;
    136136        val >>= 8;
    137      }
     137    }
    138138    if (!(val & 0x0000000FUL)) {
    139          cnt += 4;
     139        cnt += 4;
    140140        val >>= 4;
    141      }
     141    }
    142142    if (!(val & 0x00000003UL)) {
    143          cnt += 2;
     143        cnt += 2;
    144144        val >>= 2;
    145      }
     145    }
    146146    if (!(val & 0x00000001UL)) {
    147          cnt++;
     147        cnt++;
    148148        val >>= 1;
    149      }
     149    }
    150150    if (!(val & 0x00000001UL)) {
    151          cnt++;
    152      }
    153 
    154      return cnt;
    155 #endif
    156  }
    157 
    158 static always_inline int cto32 (uint32_t val)
     151        cnt++;
     152    }
     153
     154    return cnt;
     155#endif
     156}
     157
     158static inline int cto32(uint32_t val)
    159159{
    160160    return ctz32(~val);
    161161}
    162162
    163 static always_inline int ctz64 (uint64_t val)
    164 {
    165 #if QEMU_GNUC_PREREQ(3, 4)
    166     if (val)
    167         return __builtin_ctz(val);
     163static inline int ctz64(uint64_t val)
     164{
     165#if QEMU_GNUC_PREREQ(3, 4)
     166    if (val)
     167        return __builtin_ctzll(val);
    168168    else
    169169        return 64;
     
    181181}
    182182
    183 static always_inline int cto64 (uint64_t val)
     183static inline int cto64(uint64_t val)
    184184{
    185185    return ctz64(~val);
    186186}
    187187
    188 static always_inline int ctpop8 (uint8_t val)
     188static inline int ctpop8(uint8_t val)
    189189{
    190190    val = (val & 0x55) + ((val >> 1) & 0x55);
     
    195195}
    196196
    197 static always_inline int ctpop16 (uint16_t val)
     197static inline int ctpop16(uint16_t val)
    198198{
    199199    val = (val & 0x5555) + ((val >> 1) & 0x5555);
     
    205205}
    206206
    207 static always_inline int ctpop32 (uint32_t val)
     207static inline int ctpop32(uint32_t val)
    208208{
    209209#if QEMU_GNUC_PREREQ(3, 4)
     
    220220}
    221221
    222 static always_inline int ctpop64 (uint64_t val)
     222static inline int ctpop64(uint64_t val)
    223223{
    224224#if QEMU_GNUC_PREREQ(3, 4)
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette