I am proposing fuurther canges to the Windows binaries suite to be better aligned with the
CPU features actually used by cpuminer-opt. Comments are welcome.
The problem:
1. AVX is meaningless to cpuminer-opt. AVX adds no useful 128 bit SIMD instructions, full 128 bit
support only requires SSE4.2. As a result some CPUs are prevented from using optimzations they
support. This also occurs when compiling from source.
2. cpuminer-sse is actually built with SSSE3. Some AMD CPUs with SSE2 do not have SSSE3 and
can't run cpuminer.
The proposal:
1. Eliminate cpuminer-aes-avx binary and eliminate AVX as a reportable feature and replace it with SSE4.2
cpuminer-aes-sse42 will include all optimizations from the deleted AVX build.
2. Remove SSSE3 from cpuminer-sse2 build.
Pro/con:
The only theoretical con is that Intel core2 CPUs will not make use of SSSE3 when using cpuminer-sse2
windows bnary. There are no significant differences with SSSE3 so no performance impact is expected.
Some previously unsupported AMD CPUs will become supported.
Some optimizations currently tagged as requiring AVX will become available on Intel Westmere CPUs
and possibly some AMD CPUs with similar features.
Fewer binary builds, should be less confusing for users.
Current suite:
cpuminer-sse2.exe "-march=core2" Core2, Nehalem
cpuminer-aes-sse42.exe "-maes -msse4.2" Westmere
cpuminer-aes-avx.exe "-march=corei7-avx" Sandybridge, Ivybridge
cpuminer-avx2.exe "-march=core-avx2" Haswell...
cpuminer-avx2-sha.exe "-march=core-avx2 -msha" Ryzen
Proposed:
cpuminer-sse2.exe "-msse2" Core2, Nehalem
cpuminer-aes-sse42.exe "-maes -msse4.2" Westmere, Sandybridge, Ivybridge
cpuminer-avx2.exe "-march=core-avx2" Haswell...
cpuminer-avx2-sha.exe "-march=core-avx2 -msha" Ryzen