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

Reply via email to