diff options
| author | Trevor Gross <t.gross35@gmail.com> | 2024-10-11 23:57:44 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-10-11 23:57:44 -0400 |
| commit | 3f9aa50b70e8833656d557aa963e339faca0a4c6 (patch) | |
| tree | bb838846810b68bd96127303c82deb61c40fa8ae /compiler/rustc_parse/src/errors.rs | |
| parent | fb20e4d3b96d1de459d086980a8b99d5060ad9fe (diff) | |
| parent | 0d8a978e8a55b08778ec6ee861c2c5ed6703eb6c (diff) | |
| download | rust-3f9aa50b70e8833656d557aa963e339faca0a4c6.tar.gz rust-3f9aa50b70e8833656d557aa963e339faca0a4c6.zip | |
Rollup merge of #124874 - jedbrown:float-mul-add-fast, r=saethlin
intrinsics fmuladdf{32,64}: expose llvm.fmuladd.* semantics
Add intrinsics `fmuladd{f32,f64}`. This computes `(a * b) + c`, to be fused if the code generator determines that (i) the target instruction set has support for a fused operation, and (ii) that the fused operation is more efficient than the equivalent, separate pair of `mul` and `add` instructions.
https://llvm.org/docs/LangRef.html#llvm-fmuladd-intrinsic
The codegen_cranelift uses the `fma` function from libc, which is a correct implementation, but without the desired performance semantic. I think this requires an update to cranelift to expose a suitable instruction in its IR.
I have not tested with codegen_gcc, but it should behave the same way (using `fma` from libc).
---
This topic has been discussed a few times on Zulip and was suggested, for example, by `@workingjubilee` in [Effect of fma disabled](https://rust-lang.zulipchat.com/#narrow/stream/122651-general/topic/Effect.20of.20fma.20disabled/near/274179331).
Diffstat (limited to 'compiler/rustc_parse/src/errors.rs')
0 files changed, 0 insertions, 0 deletions
