pub struct FmaAdd;Expand description
Fused-multiply-add elementwise operation: out[i] = a[i] * b[i] + a[i] (binary form).
As an ElementOp, this interprets the two operand vectors as a and b, and computes
fmadd(a, b, zero) — i.e. a * b with hardware FMA precision, accumulating into zero.
To use as a ternary a*b + c accumulation, call Arch::fmadd directly.
§Zero-Cost Guarantee
size_of::<FmaAdd>() == 0. Monomorphization over Arch eliminates the ZST entirely;
the call site reduces to a direct Arch::fmadd instruction.
Trait Implementations§
impl Copy for FmaAdd
Source§impl<T: Scalar> ElementOp<T> for FmaAdd
impl<T: Scalar> ElementOp<T> for FmaAdd
Source§unsafe fn apply<Arch: SimdKernel<T>>(
self,
a: Arch::Vector,
b: Arch::Vector,
) -> Arch::Vector
unsafe fn apply<Arch: SimdKernel<T>>( self, a: Arch::Vector, b: Arch::Vector, ) -> Arch::Vector
fmadd(a, b, zero) — uses hardware FMA where available.
§Safety
Processor must support the target feature of Arch.
Source§fn apply_scalar(self, a: T, b: T) -> T
fn apply_scalar(self, a: T, b: T) -> T
Scalar tail: a * b (scalar mul; the addend is the implicit zero).
impl Eq for FmaAdd
impl StructuralPartialEq for FmaAdd
Auto Trait Implementations§
impl Freeze for FmaAdd
impl RefUnwindSafe for FmaAdd
impl Send for FmaAdd
impl Sync for FmaAdd
impl Unpin for FmaAdd
impl UnsafeUnpin for FmaAdd
impl UnwindSafe for FmaAdd
Blanket Implementations§
Source§impl<T> ArchivePointee for T
impl<T> ArchivePointee for T
Source§type ArchivedMetadata = ()
type ArchivedMetadata = ()
The archived version of the pointer metadata for this type.
Source§fn pointer_metadata(
_: &<T as ArchivePointee>::ArchivedMetadata,
) -> <T as Pointee>::Metadata
fn pointer_metadata( _: &<T as ArchivePointee>::ArchivedMetadata, ) -> <T as Pointee>::Metadata
Converts some archived metadata to the pointer metadata for itself.
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more