Text file src/simd/archsimd/_gen/simdgen/ops/MLOps/go_sve.yaml

     1  !sum
     2  # MulAdd — integer MLA and fused floating-point FMLA: Zda += Zn * Zm. Both are
     3  # predicated-only and accumulating: the destination <Zda> is read as well as
     4  # written but is not named among the assembly inputs, so the loader
     5  # synthesizes the accumulator input (see the emitOne comment in sve/emit.go).
     6  # operandOrder 231Type1 gives the NEON operand convention x.MulAdd(y, z) with
     7  # the accumulator z last, while the machine op keeps it pinned first.
     8  - go: MulAdd
     9    asm: "ZMLA"
    10    operandOrder: "231Type1"
    11    documentation: !string |-
    12      // NAME computes (x * y) + z.
    13    in:
    14    - &int
    15      go: $t
    16      base: int|uint
    17    - *int
    18    - *int
    19    - class: mask # governing predicate
    20    out:
    21    - *int
    22  
    23  - go: MulAdd
    24    asm: "ZFMLA"
    25    operandOrder: "231Type1"
    26    documentation: !string |-
    27      // NAME performs a fused (x * y) + z.
    28    in:
    29    - &fp
    30      go: $t
    31      base: float
    32    - *fp
    33    - *fp
    34    - class: mask # governing predicate
    35    out:
    36    - *fp
    37  

View as plain text