Text file src/simd/_gen/simdgen/ops/MLOps/categories.yaml

     1  !sum
     2  - go: DotProductPairs
     3    commutative: false
     4    documentation: !string |-
     5      // NAME multiplies the elements and add the pairs together,
     6      // yielding a vector of half as many elements with twice the input element size.
     7  # TODO: maybe simplify this name within the receiver-type + method-naming scheme we use.
     8  - go: DotProductPairsSaturated
     9    commutative: false
    10    documentation: !string |-
    11      // NAME multiplies the elements and add the pairs together with saturation,
    12      // yielding a vector of half as many elements with twice the input element size.
    13  # QuadDotProduct, i.e. VPDPBUSD(S) are operations with src/dst on the same register, we are not supporting this as of now.
    14  # - go: DotProductBroadcast
    15  #   commutative: true
    16  # #   documentation: !string |-
    17  #     // NAME multiplies all elements and broadcasts the sum.
    18  - go: DotProductQuadruple
    19    commutative: false
    20    documentation: !string |-
    21      // NAME performs dot products on groups of 4 elements of x and y.
    22      // NAME(x, y).Add(z) will be optimized to the full form of the underlying instruction.
    23  - go: DotProductQuadrupleSaturated
    24    commutative: false
    25    documentation: !string |-
    26      // NAME multiplies performs dot products on groups of 4 elements of x and y.
    27      // NAME(x, y).Add(z) will be optimized to the full form of the underlying instruction.
    28  - go: AddDotProductPairs
    29    commutative: false
    30    noTypes: "true"
    31    noGenericOps: "true"
    32    documentation: !string |-
    33      // NAME performs dot products on pairs of elements of y and z and then adds x.
    34  - go: MulAdd
    35    commutative: false
    36    documentation: !string |-
    37      // NAME performs a fused (x * y) + z.
    38  - go: MulAddSub
    39    commutative: false
    40    documentation: !string |-
    41      // NAME performs a fused (x * y) - z for odd-indexed elements, and (x * y) + z for even-indexed elements.
    42  - go: MulSubAdd
    43    commutative: false
    44    documentation: !string |-
    45      // NAME performs a fused (x * y) + z for odd-indexed elements, and (x * y) - z for even-indexed elements.
    46  - go: SumAbsDiff
    47    commutative: false
    48    documentation: !string |-
    49      // NAME sums the absolute distance of the two input vectors, each adjacent 8 bytes as a group. The output sum will
    50      // be a vector of word-sized elements whose each 4*n-th element contains the sum of the n-th input group. The other elements in the result vector are zeroed.
    51      // This method could be seen as the norm of the L1 distance of each adjacent 8-byte vector group of the two input vectors.
    52  

View as plain text