Fixes for SSE detection and propagation #24
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.
On a machine without SSE4.1 the HAVE_SSE flag would still be set.
Because CFLAGS is set to include -msse4.2, the compiler happily
generates SSE 4.2 instructions. Running any resulting SSE-enabled
binary would then result in an illegal instruction error.
The HAVE_SSE check now checks for the presence of one of the SSE 4.1
instructions that is used in the SSE enabled convolutional decoder.
The check must run with -march=native to ensure it checks against the
host machine capabilities.
The HAVE_SSE definition is now propagated to downstream targets that
depend on libcorrect. This means they can now ifdef on HAVE_SSE to
decide whether or not to include libcorrect's SSE specific header.
Confirmed that the HAVE_SSE check now fails on an old machine without
SSE 4.1 (but with SSE 3 and SSSE 3).