comparison 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
comparison
equal deleted inserted replaced
183:3cdf4b0c75a1 184:f5ca6bbbf1d7
16 ushort outpw(uint port_address, ushort value); 16 ushort outpw(uint port_address, ushort value);
17 uint outpl(uint port_address, uint value); 17 uint outpl(uint port_address, uint value);
18 } 18 }
19 else 19 else
20 { 20 {
21 version (LLVMDC)
22 {
23 int bsf(uint v);
24 int bsr(uint v);
25 int bt(uint* p, uint bitnum)
26 {
27 return p[bitnum / ((uint).sizeof * 8)] & 1 << (bitnum & (uint).sizeof * 8 - 1) ? -1 : 0;
28 }
29 int btc(uint* p, uint bitnum)
30 {
31 uint* q = p + bitnum / ((uint).sizeof * 8);
32 uint mask = 1 << (bitnum & (uint).sizeof * 8 - 1);
33 int result = *q & mask;
34 *q ^= mask;
35 return result ? -1 : 0;
36 }
37 int btr(uint* p, uint bitnum)
38 {
39 uint* q = p + bitnum / ((uint).sizeof * 8);
40 uint mask = 1 << (bitnum & (uint).sizeof * 8 - 1);
41 int result = *q & mask;
42 *q &= ~mask;
43 return result ? -1 : 0;
44 }
45 int bts(uint* p, uint bitnum)
46 {
47 uint* q = p + bitnum / ((uint).sizeof * 8);
48 uint mask = 1 << (bitnum & (uint).sizeof * 8 - 1);
49 int result = *q & mask;
50 *q |= mask;
51 return result ? -1 : 0;
52 }
53 pragma(LLVM_internal, "intrinsic", "llvm.bswap.i32")
54 {
55 uint bswap(uint val);
56 }
57 ubyte inp(uint p)
58 {
59 return 0;
60 }
61 ushort inpw(uint p)
62 {
63 return 0;
64 }
65 uint inpl(uint p)
66 {
67 return 0;
68 }
69 ubyte outp(uint p, ubyte v)
70 {
71 return v;
72 }
73 ushort outpw(uint p, ushort v)
74 {
75 return v;
76 }
77 uint outpl(uint p, uint v)
78 {
79 return v;
80 }
81 }
82 else
83 {
21 public 84 public
22 { 85 {
23 import std.intrinsic; 86 import std.intrinsic;
87 }
24 } 88 }
25 } 89 }
26 int popcnt(uint x) 90 int popcnt(uint x)
27 { 91 {
28 x = x - (x >> 1 & 1431655765); 92 x = x - (x >> 1 & 1431655765);