arm_mve: Use inline asm for lsll and asrl MVE primitives #62
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.
The C shift operators do not precisely match the associated ARM instructions: shifts of negative values or by negative amounts are undefined behavior in C, and GCC may substitute alternate instruction sequences when it can determine that the application is using UB.
Replace C shift operators with inline asm to ensure the lsll and asrl primitives always emit the indicated instruction.
This issue caused mis-compilation of the ARM cmsis-dsp code for arm_biquad_cascade_df1_32x64_q31:
This has been submitted upstream to GCC: