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 :)

Reply via email to