Skip to content

aarch64: Fix lowering amounts for shifts#3074

Merged
akirilov-arm merged 1 commit intobytecodealliance:mainfrom
afonso360:aarch-ishl-i8
Jul 16, 2021
Merged

aarch64: Fix lowering amounts for shifts#3074
akirilov-arm merged 1 commit intobytecodealliance:mainfrom
afonso360:aarch-ishl-i8

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