blob: c5cbc72314adc96ed3608cf646547eab77b7d852 [file]
!sum
# MulAdd — integer MLA and fused floating-point FMLA: Zda += Zn * Zm. Both are
# predicated-only and accumulating: the destination <Zda> is read as well as
# written but is not named among the assembly inputs, so the loader
# synthesizes the accumulator input (see the emitOne comment in sve/emit.go).
# operandOrder 231Type1 gives the NEON operand convention x.MulAdd(y, z) with
# the accumulator z last, while the machine op keeps it pinned first.
- go: MulAdd
asm: "ZMLA"
operandOrder: "231Type1"
documentation: !string |-
// NAME computes (x * y) + z.
in:
- &int
go: $t
base: int|uint
- *int
- *int
- class: mask # governing predicate
out:
- *int
- go: MulAdd
asm: "ZFMLA"
operandOrder: "231Type1"
documentation: !string |-
// NAME performs a fused (x * y) + z.
in:
- &fp
go: $t
base: float
- *fp
- *fp
- class: mask # governing predicate
out:
- *fp