bytecodealliance / bytecodealliance/wasmtime

Cranelift: Use `Uimm64` for `UnaryImm::imm` instead of `Imm64`

Open
#6,958 1 comment 0 reactions 0 assignees View on GitHub
Dominant language
Rust
Stars
18.6k
Forks
1.8k
Avg merge
1d 18h
Merged PRs (30d)
126

Description

#### Feature

Use `Uimm64` for `UnaryImm::imm` instead of `Imm64`, since `UnaryImm::imm` is now always encoding an unsigned integer; following #6850 & #3059.

#### Benefit

Make it clear that `UnaryImm::imm` must be interpreted as an unsigned integer; or that it should be reinterpreted as a signed integer with respect to the actual bit-length of the encoded value. For example, since #6850, the immediate of `iconst.i32 -2` is encoded in `UnaryImm::imm` as `0xffff_fffe`, and not `-2`, despite being stored in a signed 64-bit integer.

#### Implementation

Change the type, listen to the complaints of the type checker, and address tests breakage.

I would like to try to address this issue, if it's suitable for a compiler beginner with limited time resource.

#### Alternatives

Keep using `Imm64` since the verifier is already rejecting incorrect encodings.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.