Build with SSE4 / AVX, fix build artifact generation #5651
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR does a wee refactor of our Linux build scripts to ensure we're correctly generating and uploading release artifacts. It moves the release generation steps into a reusable action file, which is important for the other half of the PR.
This PR enables SSE4.2 support by default for our Linux x64 build type. SSE4.2 has been available and supported in mainstream x86/64 processors for over a decade now, so it makes sense to formally require SSE >= 4.2 for our builds (and allow the compiler to perform automatic optimization and vectorization to take advantage of these instruction sets).
GCC's documentation doesn't specify whether I need to manually add all of the SSE version flags or if
-msse4.2
implies previous SSE versions. If someone is more familiar with the semantics GCC provides I'd appreciate your feedback / review. 😄This PR also adds an optional x64 build type with AVX2 enabled. AVX2 has 256-bit-wide SIMD instructions compared to SSE's 128-bit-wide SIMD, and has been supported in most mainstream Intel desktop and laptop CPUs since 2013 (2015 for AMD CPUs). The only reason this hasn't been enabled by default is that there are a number of laptops with Intel Pentium and Celeron "mobile" CPUs which do not provide AVX2 hardware.
Generally, laptops with those "mobile" processors do not have the graphical capability to run Pioneer well, as the integrated GPU is very low-power and they're usually not paired with a discrete GPU of any kind. However, I intend to keep AVX2 an "optional" build type until we've established that it's not affecting our userbase and we can provide a good failure-case UX when a user tries to run Pioneer on a non-AVX2 CPU.