On Wednesday, 29 January 2014 at 16:54:54 UTC, bearophile wrote:
Stanislav Blinov:
I meant how to make it compile with ldc2? I've translated the
code, it compiles and works with dmd (although segfaults in
-release mode for some reason, probably a bug somewhere).
But with ldc2:
nbody.d(68): Error: undefined identifier __simd
nbody.d(68): Error: undefined identifier XMM
those are needed for that sqrt reciprocal call.
Usually for me ldc2 works with simd. Perhaps you have to show
us the code, ask for help in the ldc newsgoup, or ask for help
in the #ldc IRC channel.
It's a direct translation of that C++ code:
http://dpaste.dzfl.pl/89517fd0bf8fa
This line:
distance = __simd(XMM.CVTPS2PD, __simd(XMM.RSQRTPS,
__simd(XMM.CVTPD2PS, dsquared)));
The XMM enum and __simd functions are defined only when D_SIMD
version is set. ldc2 doesn't seem to set this, unless I'm missing
some sort of compiler switch.
Regarding dmd with -release, I suggest you to minimize the code
and put the problem in Bugzilla. Benchmarks are also useful to
find and fix compiler bugs.
I'm already onto it :)