bytecodealliance / bytecodealliance/wasmtime
[cranelift] Avoid 64-bit imul_imm if possible on all architectures
Open
cranelift
cranelift:area:machinst
cranelift:goal:optimize-speed
enhancement
performance
- Dominant language
- Rust
- Stars
- 18.6k
- Forks
- 1.8k
- Avg merge
- 1d 18h
- Merged PRs (30d)
- 126
Description
#### Feature
Not all architectures has a fast 64-bit imul + imm. But even on modern like SnB-family and AMD Ryzen it takes `3 cycle` latency, `1c throughput` which not always faster lea + shl / add combination. So I propose use lowering to lea + shl / add for non-power of two constants ~~at least for `imm < 400`~~ with low hamming weight and 64-bit imul only if this possible. Similar to GCC:
https://godbolt.org/z/aG7bPer9v
Contributor guide
Assessment
This issue has not been assessed yet.