!sum # MulAdd — integer MLA and fused floating-point FMLA: Zda += Zn * Zm. Both are # predicated-only and accumulating: the destination 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