Comment #0 by manlio.perillo — 2008-08-20T13:08:56Z
The ABI documentation for registry convention says that:
long and ulong are returned in EDX,EAX, where EDX gets the most significant half.
However this is only true for IA-32 architecture.
For IA-64 architecture long and ulong are returned in RAX.
NOTE: I have not checked if this is true, but tango.Atomic.atomicIncrement assume this is true
Comment #1 by bugzilla — 2008-08-26T02:08:36Z
The assembler part of the ABI document is for the 32 bit x86 architecture, it does not address other architectures.
Comment #2 by hoganmeier — 2011-08-10T19:05:50Z
Now that x64 is supported by dmd, could the ABI document be updated to accommodate that?
btw currently structs of size 16 bytes are passed via a hidden parameter rather than in 2 registers. Maybe even more registers could be used since there are more available.