On Thursday, 27 February 2020 at 19:24:39 UTC, Johan wrote:
LDC will work fine if told what processor you have: https://d.godbolt.org/z/5hrzgm
-m32 -mcpu=pentium3   (-mcpu=native should also work).

When I "cross compile" on an AMD 64 Bit machine for pentium3

   [AMD 64 bit] $ ldc2 -m32 -mcpu=pentium3 --linker=bfd vec.d

and execute the binary on the Pentium-III I get

   [PIII] $ gdb ./vec
   [...]
   This GDB was configured as "i586-suse-linux".
   For bug reporting instructions, please see:
   <http://bugs.opensuse.org/>...
Dwarf Error: wrong version in compilation unit header (is 4, should be 2) [in module /[...]/tmp/vec]
   (gdb) r
   Starting program: /[...]/tmp/vec
   (no debugging symbols found)
   (no debugging symbols found)
   [Thread debugging using libthread_db enabled]

   Program received signal SIGILL, Illegal instruction.
   0x08051baa in ?? ()

Disassembly on the AMD 64 it reveals that ldc also emits the movds instructions:

0x08051ba2 <+434>: call 0x804f680 <_D2rt5minfo11ModuleGroup6__ctorMFNbNcNiAyPS6object10ModuleInfoZSQCkQCkQCh>
   0x08051ba7 <+439>:     sub    $0x8,%esp
   0x08051baa <+442>:     movsd  0x30(%esp),%xmm0
   0x08051bb0 <+448>:     movsd  0x38(%esp),%xmm1

Reply via email to