view tango/tango/core/BitManip.di @ 184:f5ca6bbbf1d7 trunk

[svn r200] Fixed: removed use of std.intrinsic. Fixed: module info could potentially be masked by a previous reference, resulting in linking failure.
author lindquist
date Wed, 07 May 2008 22:01:59 +0200
parents 1700239cab2e
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)
{
    }