[#24956] Aarch64 reduce primop calls
#24956 - Adds several new instructions to avoid making calls to primops.
Implements:
- floating point sqrt via the
fsqrt
instruction - bswap/byteSwap{,32,16}# using the REV (32 and 64 bit) and REV16 instrutions
The BREV32
instruction is currently commented out as it is only defined on 64 bit inputs, and reverser the order of the bytes in each 32 bit section of the input. It might be nice to expose these as primops so algorithms which need to reverse the byte order of 16/32 bit values have a more efficient implementation.
Please take a few moments to address the following points:
-
if your MR may break existing programs (e.g. touches base
or causes the compiler to reject programs), please describe the expected breakage and add the user-facing label. This will run ghc/head.hackage> to characterise the effect of your change on Hackage. -
ensure that your commits are either individually buildable or squashed -
ensure that your commit messages describe what they do (referring to tickets using #NNNN
syntax when appropriate) -
have added source comments describing your change. For larger changes you likely should add a Note and cross-reference it from the relevant places. -
add a testcase to the testsuite. -
updates the users guide if applicable -
mentions new features in the release notes for the next release
If you have any questions don't hesitate to open your merge request and inquire
in a comment. If your patch isn't quite done yet please do add prefix your MR
title with WIP:
.
By default a minimal validation pipeline is run on each merge request, the full-ci label can be applied to perform additional validation checks if your MR affects a more unusual configuration.
Once your change is ready please remove the WIP:
tag and wait for review. If
no one has offered a review in a few days then please leave a comment mentioning
@triagers and apply the Blocked on Review label.