digitalmars.D - std.intrinsic
- bearophile (19/19) Aug 13 2008 The functions of the std.intrinsic module (that I presume are often asm ...
- The Anh Tran (11/11) Aug 13 2008 This should be posted on D.learn, but i think it also has some relevant
- The Anh Tran (5/12) Aug 13 2008 Sorry, typo :(
- Walter Bright (1/1) Aug 14 2008 I added it to bugzilla.
The functions of the std.intrinsic module (that I presume are often asm instructions) look nice, but time ago I have seen that normal D code is fasten than some of them: You can see it from this code that use bt and btr: http://shootout.alioth.debian.org/gp4/benchmark.php?test=nsievebits&lang=dlang&id=2 http://shootout.alioth.debian.org/gp4/benchmark.php?test=nsievebits&lang=dlang&id=1 The code that uses IsSet and Clear (functions originally coming from Pascal code) is faster: bool IsSet(uint i) { int offset = i / bpc; uint mask = 1 << (i % bpc); return (flags[offset] & mask) <> 0; } void Clear(uint i) { int offset = i / bpc; uint mask = 1 << (i % bpc); if((flags[offset] & mask) <> 0) flags[offset] = flags[offset] ^ mask; } So I can suggest to replace those functions of Phobos with functions in normal D code (such things are very useful to manage array of bits, that I use). Bye, bearophile
Aug 13 2008
This should be posted on D.learn, but i think it also has some relevant to intrinsic here :| Currently D doesn't provide vector data type __attribute__((vector(xyz)) and intrinsics that operate on those vector types. I'm forced to go back to asm{}. And for asm, there is a bug in dmd.1.030 movmskpd ECX, XMM7; is compiled to: movmskpd EDI, XMM7; Anyone else can confirm the same issue? Thanks.
Aug 13 2008
Sorry, typo :( movmskpd EAX, XMM7; -> movmskpd EDI, XMM7; The Anh Tran wrote:movmskpd ECX, XMM7; is compiled to: movmskpd EDI, XMM7; Anyone else can confirm the same issue? Thanks.
Aug 13 2008