-
Notifications
You must be signed in to change notification settings - Fork 571
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Remove superfluous non-operands from LDXR, STXR, and related instructions on AArch64 #4532
Comments
CLREX shouldn't have this 0 either:
|
Several AArch64 memory related instructions have various bits designated as "soft bits." This means that the spec suggests a value of 1 for them, but it is allowed for the bits to vary from that. Previously these bits were represented as operands, but that caused stray values to show up in the IR. This change introduces a way to represent soft bits in codec.txt which tells the decoder to ignore them and the encoder to set them to be 1. This change also updates the encoding macros to remove the unnecessary operands and updates the appropriate tests. The decode tests have been modified to allow the re-encoding to differ from the original encoding. This is because the soft bits can be values not strictly dictated by the spec but as we will always re-encode to spec, the re-encoding will be different to the initial encoding. Fixes: #4532 Change-Id: I84ed39178a0b9ee0c98ae0929dcddf9a41f9c314
CLREX still has an immediate int operand:
So I think this should be re-opened. |
Removes a no-longer-needed extra check to identify a load exclusive pair, now that the superfluous immediate integer operands are removed. Tested on the client.ldstex test which should fail if we incorrectly identify a pair. Issue: #4532
CLREX is a different case to the other instructions in that it does actually have an optional imm argument, but that argument is ignored, unlike the other superfluous arguments which were there to handle the potentially variable "sticky bits." It also defaults to a value of 15 for the imm if it is not set This is similar to udf, which also has an ignored, optional operand. Considering this, we should have two variants in order to comply with the spec: |
Removes a no-longer-needed extra check to identify a load exclusive pair, now that the superfluous immediate integer operands are removed. Tested on the client.ldstex test which should fail if we incorrectly identify a pair. Issue: #4532
OK, so an action item then is to remove the |
This patch removes the TODO note for clrex which stated it had a superfluous operand. The spec states that it is a real operand but is ignored and defaults to a value of 15. The instr_create.h macros have been updated to reflect this. Fixes: #4532
On AArch64 we have superfluous operands in the exclusive load and store instructions in DR's IR:
These
0x1f
integers seem to be just part of the encoding and aren't actually operands. I would expect them to not show up in the IR at all.The text was updated successfully, but these errors were encountered: