The features in question are:
1) OpenMP with the GCC-port. It is disabled by default. Is there a
reason for this? Are there any known "blockers"? Should I be able to
make it work, would patches be accepted?
There was a diff about half a year ago which added this. Some ports
need adjustments because they pick up libgomp. I can dig up the old
patches tomorrow ...
That would be great, thank you! (Although I am not in hurry, won't work
on this before the end of the week)
2) CPU-features like POPCNT, AVX are apparently not supported right now
(or at least not with gcc). Also if you build software with the
gcc-4.9-port and specify -march=native gcc wil produce code that
actually uses instructions that are not supported, and then fail with
messages like this:
AVX should work (we also have the kernel support), popcnt does not. I
don't know what it would take to add this to our copy of gas.
Ah, thats interesting. I had thought that POPCNT being a part of SSE4
would be implemented before and hadn't checked for AVX. I will have a
look...
Also, I think it's generally a better idea to explicitly turn on the
instruction sets you want/need rather than using -march=native.
Yes and no. We ship binaries with
-msse -msse2 -msse3 -mssse3 -msse4 -mpopcnt
But I do recommend -march=native for people building themselves, because
on Linux and FreeBSD it "just works" and produces measurably faster code
even for our applications that are not manually tuned. I agree that it
is not super-important, but on the other hand, POPCNT seems to be one of
the few things missing to make -march=native work for a lot of older
platforms so I think it's worth investigating.
Thanks for the feedback,
Hannes