Joined: 12 Feb 14
I would like manual CPU application selection in our BOINC preferences. My CPU, an Intel Xeon E5-2690 v3 that I bought mainly because I wanted ECC memory support to help mitigate rowhammer memory security attacks, would run SSE3/PNI code the fastest out of the choices you offer because SSE3 and PNI are the same thing. However, I sometimes would get SSE2 or x87 variants of the application. First, x87 is deprecated on 64-bit mode and really only should be used if you need 80-bit precision because its stack-based architecture is really slow especially if the stack overflows, causing compilers to generate code whose first priority is to prevent stack overflows at all costs even if it costs speed. Second, SSE2 is much faster than x87, but SSE3 is faster still.
(On a side note, AVX and AVX2 can really speed up your code on Intel processors with those extensions. On AMD Bulldozer family processors, many of them, especially Bulldozer and Piledriver, are slowed down with most AVX or AVX2 code, so you are better off writing SSE3 code with FMA4 support for those processors. Steamroller and later might have solved those problems so AVX2 might be the optimal code for them.)