Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Cranelift: fix load width on select-of-load.f64 by disallowing load f…
…usion. (#8113) We have an instruction lowering rule on x86-64 that allows a `select` operation to perform load fusion: when presented with any xmm-register-typed values (`f32`, `f64`, or `v128`), an argument to the select can become a load. Unfortunately, this lowering behavior is incorrect in the case of narrower-than-128-bit values: the cmove is converted into an if-else diamond with two 128-bit moves and so the load becomes a full 128-bit-width load. The fix is to disallow load fusion of selects of XMM-typed values. We could make the rules more fine-grained and keep `v128`-typed load fusion, but we're opting for the simpler and more conservative fix first here. Fixes #8112.
- Loading branch information