We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
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
We want to enable floats, but NaNs in wasm are nondeterministic and can cause consensus failure. We need to comprehensively patch all of the cases in which nondeterminism is visible.
According to LLVM, NaNs can be canonicalized by multiplying by 1. In Rust, it's possible to do this while avoiding constant folding using test::black_box(1f64 * arg).
test::black_box(1f64 * arg)
@Yawning seems to be the resident expert on this topic and should likely be the judge of whether the implementation is satisfactory.
The text was updated successfully, but these errors were encountered:
Most interesting changes would have to happen in runner.rs. Perhaps run_store, run_reinterpret, run_trunc, run_extend, run_const.
runner.rs
run_store
run_reinterpret
run_trunc
run_extend
run_const
I maybe wouldn't worry about run_call to externs since we control those functions. We do have an expf extern, but that can only return Inf if not already given a NaN.
run_call
expf
Inf
Sorry, something went wrong.
As a side-note, we don't really need nan-preserving-float since we don't actually use x87 (ref).
nan-preserving-float
No branches or pull requests
We want to enable floats, but NaNs in wasm are nondeterministic and can cause consensus failure. We need to comprehensively patch all of the cases in which nondeterminism is visible.
According to LLVM, NaNs can be canonicalized by multiplying by 1. In Rust, it's possible to do this while avoiding constant folding using
test::black_box(1f64 * arg)
.@Yawning seems to be the resident expert on this topic and should likely be the judge of whether the implementation is satisfactory.
The text was updated successfully, but these errors were encountered: