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

Use little-endian byte ordering for internal conversions. #343

Merged
merged 1 commit into from
Apr 17, 2024

Conversation

sunfishcode
Copy link
Member

When implementing reinterpret-cast functions, use python.struct's < (little-endian) instead of ! (network byte order).

This has no effective semantic change, because the conversions are just converting between i32/f32 and i64/f64 and are always done in pairs, so it's only required that the decoding match the encoding. However, using little-endian more clearly describes the behavior as corresponding to a Wasm store followed by a Wasm load, which would both be little-endian.

In theory this could become significant in the future if we add SIMD values where endianness conversions are partitioned by SIMD lanes, or other complex types.

When implementing reinterpret-cast functions, use `python.struct`'s
`<` (little-endian) instead of `!` (network byte order).

This has no effective semantic change, because the conversions are
just converting between i32/f32 and i64/f64 and are always done in
pairs, so it's only required that the decoding match the encoding.
However, using little-endian more clearly describes the behavior as
corresponding to a Wasm store followed by a Wasm load, which would
both be little-endian.

In theory this could become significant in the future if we add SIMD
values where endianness conversions are partitioned by SIMD lanes,
or other complex types.
Copy link
Member

@lukewagner lukewagner left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@lukewagner lukewagner merged commit c8f2aae into WebAssembly:main Apr 17, 2024
1 check passed
@sunfishcode sunfishcode deleted the sunfishcode/endian branch April 17, 2024 17:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants