On Wednesday, 16 May 2018 at 13:54:05 UTC, Andrei Alexandrescu
wrote:
Is it workable to have a runtime-initialized flag that controls
using SSE vs. conservative?
Sure, it's workable with these kind of speed gains. Although the
conservative code path ends up being slightly worse off - an
extra fetch, compare and branch get introduced.
My preferred method though is to just build multiple sets of
binaries as DLLs/SOs/DYNLIBs, then load in the correct libraries
dependant on the CPUID test at program initialisation. Current
Xbox/Playstation hardware is pretty terrible when it comes to
branching, so compiling with minimal branching and deploying the
exact binaries for the hardware capabilities is the way I
generally approach things.
We never got around to setting something like that up for the PC
release of Quantum Break, although we definitely talked about it.