Skip to content
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

aarch64: Fix lowering amounts for shifts #3074

Merged
merged 1 commit into from
Jul 16, 2021

Conversation

afonso360
Copy link
Contributor

This PR addresses two issues:

In these types when shifting for amounts larger than the size of the
type, we would not get the wrapping behaviour that we see on i32 and i64.
This is because in these larger types, the wrapping behaviour is automatically
implemented by using the appropriate instruction, however we do not
have i8 and i16 specific instructions, so we have to manually wrap
the shift amount with an AND instruction.

This issue is also found on x86_64 and s390x, and a separate issue will
be filed for those.

Closes #3064

@github-actions github-actions bot added cranelift Issues related to the Cranelift code generator cranelift:area:aarch64 Issues related to AArch64 backend. labels Jul 10, 2021
@afonso360 afonso360 force-pushed the aarch-ishl-i8 branch 2 times, most recently from ada4414 to c2ca3cf Compare July 10, 2021 12:35
This commit addresses two issues:
* A panic when shifting any non i128 type by i128 amounts (bytecodealliance#3064)
* Wrong results when lowering shifts with small types (i8, i16)

In these types when shifting for amounts larger than the size of the
type, we would not get the wrapping behaviour that we see on i32 and i64.
This is because in these larger types, the wrapping behaviour is automatically
implemented by using the appropriate instruction, however we do not
have i8 and i16 specific instructions, so we have to manually wrap
the shift amount with an AND instruction.

This issue is also found on x86_64 and s390x, and a separate issue will
be filed for those.

Closes bytecodealliance#3064
@afonso360
Copy link
Contributor Author

Thanks for reviewing @akirilov-arm!

@akirilov-arm
Copy link
Contributor

No problem; once the pull request passes the tests, it should be ready for merging.

@afonso360
Copy link
Contributor Author

These look like spurious failures to me. It looks like crates.io is not having a great time right now. My other PR is also failing due to the same reason.

Retrying CI later may work out better

@akirilov-arm
Copy link
Contributor

Yes, that's true - all active PRs are failing right now with the same cause, including one of mine and another one.

@akirilov-arm akirilov-arm merged commit db5566d into bytecodealliance:main Jul 16, 2021
@afonso360 afonso360 deleted the aarch-ishl-i8 branch September 2, 2021 13:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cranelift:area:aarch64 Issues related to AArch64 backend. cranelift Issues related to the Cranelift code generator
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Cranelift: ishl with i128 shift amount panics on AArch64
2 participants