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

cranelift: Bitwise compare fuzzgen results #4855

Merged
merged 1 commit into from
Sep 2, 2022

Conversation

afonso360
Copy link
Contributor

cc: 4849
cc: @jameysharp

Copy link
Contributor

@jameysharp jameysharp left a comment

Choose a reason for hiding this comment

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

Perfect, thank you!

Comment on lines +58 to +61
&& actual
.into_iter()
.zip(expected.into_iter())
.all(|(a, b)| a.bitwise_eq(b));
Copy link
Contributor

Choose a reason for hiding this comment

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

For future reference, it's possible to write this more tersely. Iterator::zip will implicitly call into_iter() on whatever you pass to it, so you can just use .zip(expected). And the implementation of into_iter() on &Vec is the same as calling iter() (they both return references to the elements of the vector) so you can use the shorter name. When I was playing with this locally I found that those two changes meant this part of the expression would fit on one line with cargo fmts defaults. 😁

This is not remotely important, so I'm merging without that change and please don't bother writing another PR for it. This version is just fine as-is. But I thought I'd note the alternative.

@jameysharp jameysharp enabled auto-merge (squash) September 2, 2022 19:01
@jameysharp jameysharp merged commit 7e45cff into bytecodealliance:main Sep 2, 2022
jameysharp added a commit to jameysharp/wasmtime that referenced this pull request Sep 2, 2022
This fixes bytecodealliance#4857 by partially reverting bytecodealliance#4849.

It turns out that Ieee32 and Ieee64 need bitwise equality semantics so
they can be used as hash-table keys.

Moving the IEEE754 semantics up a layer to DataValue makes sense in
conjunction with bytecodealliance#4855, where we introduced a DataValue::bitwise_eq
alternative implementation of equality for those cases where users of
DataValue still want the bitwise equality semantics.
jameysharp added a commit that referenced this pull request Sep 3, 2022
* cranelift-codegen: Remove all uses of DataValue

This type is only used by the interpreter, cranelift-fuzzgen, and
filetests. I haven't found another convenient crate for those to all
depend on where this type can live instead, but this small refactor at
least makes it obvious that code generation does not in any way depend
on the implementation of this type.

* Make DataValue, not Ieee32/64, respect IEEE754

This fixes #4857 by partially reverting #4849.

It turns out that Ieee32 and Ieee64 need bitwise equality semantics so
they can be used as hash-table keys.

Moving the IEEE754 semantics up a layer to DataValue makes sense in
conjunction with #4855, where we introduced a DataValue::bitwise_eq
alternative implementation of equality for those cases where users of
DataValue still want the bitwise equality semantics.

* cranelift-interpreter: Use eq/ord from DataValue

This fixes #4828, again, now that the comparison operators on DataValue
have the right IEEE754 semantics.

* Add regression test from issue #4857
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.

2 participants