On Sunday, 26 September 2021 at 18:08:46 UTC, james.p.leblanc
wrote:
or even moving the array declarations to before
the dot product function, and the avx instructions will
disappear!
That's because the `@fastmath` UDA applies to the next
declaration only, which is the `x` array in your 2nd example
(where it obviously has no effect). Either use `@fastmath:` with
the colon to apply it to the entire scope, or use `-ffast-math`
in the LDC cmdline.
Similarly, when moving the function to another module and you
don't include that module in the cmdline, it's only imported and
not compiled and won't show up in the resulting assembly.
Wrt. stack alignment, there aren't any issues with LDC AFAIK (not
limited to 16 or whatever like DMD).