view tango/tango/core/BitManip.di @ 270:d9d5d59873d8 trunk

[svn r291] Fixed a bunch of the old Phobos tests to work with Tango. Branch statements now emit a new block after it. Fixed the _adSort runtime function had a bad signature. Added a missing dot prefix on compiler generated string tables for string switch. Fixed, PTRSIZE seems like it was wrong on 64bit, now it definitely gets set properly.
author lindquist
date Mon, 16 Jun 2008 16:01:19 +0200
parents f5ca6bbbf1d7
children
line wrap: on
line source

// D import file generated from 'core/BitManip.d'
module tango.core.BitManip;
version (DDoc)
{
    int bsf(uint v);
    int bsr(uint v);
    int bt(uint* p, uint bitnum);
    int btc(uint* p, uint bitnum);
    int btr(uint* p, uint bitnum);
    int bts(uint* p, uint bitnum);
    uint bswap(uint v);
    ubyte inp(uint port_address);
    ushort inpw(uint port_address);
    uint inpl(uint port_address);
    ubyte outp(uint port_address, ubyte value);
    ushort outpw(uint port_address, ushort value);
    uint outpl(uint port_address, uint value);
}
else
{
    version (LLVMDC)
{
    int bsf(uint v);
    int bsr(uint v);
    int bt(uint* p, uint bitnum)
{
return p[bitnum / ((uint).sizeof * 8)] & 1 << (bitnum & (uint).sizeof * 8 - 1) ? -1 : 0;
}
    int btc(uint* p, uint bitnum)
{
uint* q = p + bitnum / ((uint).sizeof * 8);
uint mask = 1 << (bitnum & (uint).sizeof * 8 - 1);
int result = *q & mask;
*q ^= mask;
return result ? -1 : 0;
}
    int btr(uint* p, uint bitnum)
{
uint* q = p + bitnum / ((uint).sizeof * 8);
uint mask = 1 << (bitnum & (uint).sizeof * 8 - 1);
int result = *q & mask;
*q &= ~mask;
return result ? -1 : 0;
}
    int bts(uint* p, uint bitnum)
{
uint* q = p + bitnum / ((uint).sizeof * 8);
uint mask = 1 << (bitnum & (uint).sizeof * 8 - 1);
int result = *q & mask;
*q |= mask;
return result ? -1 : 0;
}
    pragma(LLVM_internal, "intrinsic", "llvm.bswap.i32")
{
    uint bswap(uint val);
}
    ubyte inp(uint p)
{
return 0;
}
    ushort inpw(uint p)
{
return 0;
}
    uint inpl(uint p)
{
return 0;
}
    ubyte outp(uint p, ubyte v)
{
return v;
}
    ushort outpw(uint p, ushort v)
{
return v;
}
    uint outpl(uint p, uint v)
{
return v;
}
}
else
{
    public
{
    import std.intrinsic;
}
}
}
int popcnt(uint x)
{
x = x - (x >> 1 & 1431655765);
x = ((x & -858993460u) >> 2) + (x & 858993459);
x += x >> 4;
x &= 252645135;
x += x >> 8;
x &= 16711935;
x += x >> 16;
x &= 65535;
return x;
}
debug (UnitTest)
{
    }
uint bitswap(uint x);
debug (UnitTest)
{
    }