Rollup merge of #124874 - jedbrown:float-mul-add-fast, r=saethlin · qinheping/verify-rust-std@76ce3a9 (original) (raw)

`@@ -1795,6 +1795,59 @@ extern "rust-intrinsic" {

`

1795

1795

`#[rustc_nounwind]

`

1796

1796

`pub fn fmaf128(a: f128, b: f128, c: f128) -> f128;

`

1797

1797

``

``

1798

`` +

/// Returns a * b + c for f16 values, non-deterministically executing

``

``

1799

`+

/// either a fused multiply-add or two operations with rounding of the

`

``

1800

`+

/// intermediate result.

`

``

1801

`+

///

`

``

1802

`+

/// The operation is fused if the code generator determines that target

`

``

1803

`+

/// instruction set has support for a fused operation, and that the fused

`

``

1804

`+

/// operation is more efficient than the equivalent, separate pair of mul

`

``

1805

`+

/// and add instructions. It is unspecified whether or not a fused operation

`

``

1806

`+

/// is selected, and that may depend on optimization level and context, for

`

``

1807

`+

/// example.

`

``

1808

`+

#[rustc_nounwind]

`

``

1809

`+

#[cfg(not(bootstrap))]

`

``

1810

`+

pub fn fmuladdf16(a: f16, b: f16, c: f16) -> f16;

`

``

1811

`` +

/// Returns a * b + c for f32 values, non-deterministically executing

``

``

1812

`+

/// either a fused multiply-add or two operations with rounding of the

`

``

1813

`+

/// intermediate result.

`

``

1814

`+

///

`

``

1815

`+

/// The operation is fused if the code generator determines that target

`

``

1816

`+

/// instruction set has support for a fused operation, and that the fused

`

``

1817

`+

/// operation is more efficient than the equivalent, separate pair of mul

`

``

1818

`+

/// and add instructions. It is unspecified whether or not a fused operation

`

``

1819

`+

/// is selected, and that may depend on optimization level and context, for

`

``

1820

`+

/// example.

`

``

1821

`+

#[rustc_nounwind]

`

``

1822

`+

#[cfg(not(bootstrap))]

`

``

1823

`+

pub fn fmuladdf32(a: f32, b: f32, c: f32) -> f32;

`

``

1824

`` +

/// Returns a * b + c for f64 values, non-deterministically executing

``

``

1825

`+

/// either a fused multiply-add or two operations with rounding of the

`

``

1826

`+

/// intermediate result.

`

``

1827

`+

///

`

``

1828

`+

/// The operation is fused if the code generator determines that target

`

``

1829

`+

/// instruction set has support for a fused operation, and that the fused

`

``

1830

`+

/// operation is more efficient than the equivalent, separate pair of mul

`

``

1831

`+

/// and add instructions. It is unspecified whether or not a fused operation

`

``

1832

`+

/// is selected, and that may depend on optimization level and context, for

`

``

1833

`+

/// example.

`

``

1834

`+

#[rustc_nounwind]

`

``

1835

`+

#[cfg(not(bootstrap))]

`

``

1836

`+

pub fn fmuladdf64(a: f64, b: f64, c: f64) -> f64;

`

``

1837

`` +

/// Returns a * b + c for f128 values, non-deterministically executing

``

``

1838

`+

/// either a fused multiply-add or two operations with rounding of the

`

``

1839

`+

/// intermediate result.

`

``

1840

`+

///

`

``

1841

`+

/// The operation is fused if the code generator determines that target

`

``

1842

`+

/// instruction set has support for a fused operation, and that the fused

`

``

1843

`+

/// operation is more efficient than the equivalent, separate pair of mul

`

``

1844

`+

/// and add instructions. It is unspecified whether or not a fused operation

`

``

1845

`+

/// is selected, and that may depend on optimization level and context, for

`

``

1846

`+

/// example.

`

``

1847

`+

#[rustc_nounwind]

`

``

1848

`+

#[cfg(not(bootstrap))]

`

``

1849

`+

pub fn fmuladdf128(a: f128, b: f128, c: f128) -> f128;

`

``

1850

+

1798

1851

`` /// Returns the absolute value of an f16.

``

1799

1852

`///

`

1800

1853

`/// The stabilized version of this intrinsic is

`