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: fpromote.f32 seems not be implemented on x86_64 #9654

Open
abc767234318 opened this issue Nov 22, 2024 · 3 comments
Open

Cranelift: fpromote.f32 seems not be implemented on x86_64 #9654

abc767234318 opened this issue Nov 22, 2024 · 3 comments

Comments

@abc767234318
Copy link

abc767234318 commented Nov 22, 2024

I constructed a clif file.
multi_func0.zip
I used the following command to run it.

clif-util run -v file_tests/multi_func0.clif

But I got the following error:

thread 'main' panicked at cranelift/codegen/src/machinst/lower.rs:685:21:
should be implemented in ISLE: inst = `v37 = fpromote.f32 v19`, type = `Some(types::F32)`
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
@bjorn3
Copy link
Contributor

bjorn3 commented Nov 22, 2024

fpromote requires a float as input, not an i16. If you run the clif ir verifier on this input file it will likely catch this issue. Also please try to use bugpoint in the future to reduce your test case: https://github.com/bytecodealliance/wasmtime/blob/main/cranelift/src/bugpoint.rs Something like cd cranelift; cargo run -- bugpoint multi_func0.clif x86_64 would have worked in this particular case I think.

@abc767234318
Copy link
Author

fpromote requires a float as input, not an i16. If you run the clif ir verifier on this input file it will likely catch this issue. Also please try to use bugpoint in the future to reduce your test case: https://github.com/bytecodealliance/wasmtime/blob/main/cranelift/src/bugpoint.rs Something like cd cranelift; cargo run -- bugpoint multi_func0.clif x86_64 would have worked in this particular case I think.

Why the type of v19 is i16? The v19 is generated by the following two instructions.

line 678:  v7 = f16const -0x1.774p-9
line 741:  v19 = bnot.f16 v7  ; v7 = -0x1.774p-9

My understanding is that the type of v19 is f16, not sure what is wrong

@bjorn3
Copy link
Contributor

bjorn3 commented Nov 22, 2024

I didn't notice that you had multiple functions in the clif file.

f16 and f128 is currently basically unsupported in Cranelift. Anything beyond passing around f16 and f128 values should be assumed to not yet be implemented.

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

No branches or pull requests

2 participants