-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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
pulley: superinstructions for pushing/popping list of registers #9099
pulley: superinstructions for pushing/popping list of registers #9099
Conversation
5d70d66
to
29376e2
Compare
Subscribe to Label Actioncc @fitzgen
This issue or pull request has been labeled: "cranelift", "pulley"
Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
e9c380f
to
783bf08
Compare
This needs a rebase after #9088 |
e510bbc
to
4b27717
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great! Just a couple things to address below before we merge this.
8e2c733
to
6f5c482
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks great, thanks!
I hope to get the runtime integration soon, and then we can start enabling Wasm spec tests and such one by one until we have everything running under Pulley!
* pulley: add `push` and `pop` instructions Add `xpush{32, 64}` and `xpop{32, 64}` for pushing/popping XRegs from the stack, and `push_frame`/`pop_frame` for saving/restoring LR and FP in function prologue/epilogue. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]> * cranelift-bitset: more impls for `ScalarBitset` Implement `Arbitrary` for `ScalarBitset`. Also implement `DoubleEndedIterator` and `ExactSizeIterator` for `Iter`. The `pop_min` method was added to help implement `DoubleEndedIterator`, and `pop` was renamed to `pop_max` for consistency. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]> * pulley: add instructions for pushing/popping list of registers Add `xpush{32,64}_many` and `xpop{32,64}_many` for pushing/popping any combination of all 32 XRegs. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]> --------- Signed-off-by: Karl Meakin <[email protected]>
I believe the error in CI is that in the |
6f5c482
to
65d8278
Compare
Add `xpush{32, 64}` and `xpop{32, 64}` for pushing/popping XRegs from the stack, and `push_frame`/`pop_frame` for saving/restoring LR and FP in function prologue/epilogue. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]>
Implement `Arbitrary` for `ScalarBitset`. Also implement `DoubleEndedIterator` and `ExactSizeIterator` for `Iter`. The `pop_min` method was added to help implement `DoubleEndedIterator`, and `pop` was renamed to `pop_max` for consistency. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]>
65d8278
to
b6d3d14
Compare
b6d3d14
to
91ef528
Compare
* pulley: add `push` and `pop` instructions Add `xpush{32, 64}` and `xpop{32, 64}` for pushing/popping XRegs from the stack, and `push_frame`/`pop_frame` for saving/restoring LR and FP in function prologue/epilogue. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]> * cranelift-bitset: more impls for `ScalarBitset` Implement `Arbitrary` for `ScalarBitset`. Also implement `DoubleEndedIterator` and `ExactSizeIterator` for `Iter`. The `pop_min` method was added to help implement `DoubleEndedIterator`, and `pop` was renamed to `pop_max` for consistency. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]> * pulley: add instructions for pushing/popping list of registers Add `xpush{32,64}_many` and `xpop{32,64}_many` for pushing/popping any combination of all 32 XRegs. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]> --------- Signed-off-by: Karl Meakin <[email protected]>
Side note, it will be a little faster to iterate here to add an empty commit with the message |
I'm not totally sure what is going on here, new-ish dependencies for new-ish crates are always a little annoying to get set up correctly so that when we publish we don't run into any issues. I guess we are effectively front-loading the issues, rather than dealing with them at publish time, which is probably the right choice. Anyways, I think you should be able to repro locally with
Note that if you have a |
Add `xpush{32,64}_many` and `xpop{32,64}_many` for pushing/popping any combination of all 32 XRegs. Copyright (c) 2024, Arm Limited. Signed-off-by: Karl Meakin <[email protected]>
^ Did the fix for this perhaps get lost in a rebase? |
Yes, thanks |
91ef528
to
d492f07
Compare
Adds superinstructions for pushing/popping any subset of XRegs in one go