winch: Properly zero extend the CAS result#12994
Open
saulecabrera wants to merge 1 commit intobytecodealliance:mainfrom
Open
winch: Properly zero extend the CAS result#12994saulecabrera wants to merge 1 commit intobytecodealliance:mainfrom
saulecabrera wants to merge 1 commit intobytecodealliance:mainfrom
Conversation
Accoding to the spec, the result of a compare-and-swap operation must be zero extended according to the result type. Prior to this commit the implementation was skipping the 32 -> 64 bit case. When the swap happens, the value in `rax` remains untouched, however, it's possible that the higher bits are undefined, in which case the zero extension is needed to ensure that the right value is returned. This bug is only reproducible for values in which the lower bits match the expected value, like in the example included in this commit.
Subscribe to Label ActionDetailsThis issue or pull request has been labeled: "winch"Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Accoding to the spec, the result of a compare-and-swap operation must be zero extended according to the result type. Prior to this commit the implementation was skipping the 32 -> 64 bit case.
When the swap happens, the value in
raxremains untouched, however, it's possible that the higher bits are undefined, in which case the zero extension is needed to ensure that the right value is returned.This bug is only reproducible for values in which the lower bits match the expected value, like in the example included in this commit.