Text file src/simd/archsimd/_gen/simdgen/ops/GaloisField/go_amd64.yaml

     1  !sum
     2  - go: GaloisFieldAffineTransform
     3    asm: VGF2P8AFFINEQB
     4    operandOrder: 2I # 2nd operand, then immediate
     5    in: &AffineArgs
     6    - &uint8
     7      go: $t
     8      base: uint
     9    - &uint8x8
    10      go: $t2
    11      base: uint
    12      name: A
    13    - &pureImmVar
    14      class: immediate
    15      immOffset: 0
    16      name: b
    17    out:
    18    - *uint8
    19  
    20  - go: GaloisFieldAffineTransformInverse
    21    asm: VGF2P8AFFINEINVQB
    22    operandOrder: 2I # 2nd operand, then immediate
    23    in: *AffineArgs
    24    out:
    25    - *uint8
    26  
    27  - go: GaloisFieldMul
    28    asm: VGF2P8MULB
    29    in:
    30    - *uint8
    31    - *uint8
    32    out:
    33    - *uint8
    34  
    35  - go: carrylessMultiply
    36    documentation: !string |-
    37      // NAME computes one of four possible Galois polynomial
    38      // products of selected high and low halves of x and y,
    39      // depending on the value of xyHiLo, returning the 128-bit
    40      // product in the concatenated two elements of the result.
    41      // Bit 0 selects the low (0) or high (1) element of x and
    42      // bit 4 selects the low (0x00) or high (0x10) element of y.
    43    asm: V?PCLMULQDQ
    44    in:
    45    - go: Uint64x2
    46    - go: Uint64x2
    47    - class: immediate
    48      immOffset: 0
    49      name: xyHiLo
    50    out:
    51    - go: Uint64x2
    52      overwriteElementBits: 64
    53    hideMaskMethods: true
    54  
    55  - go: carrylessMultiply
    56    documentation: !string |-
    57      // NAME computes one of two possible Galois polynomial
    58      // products of selected high and low halves of each of the two
    59      // 128-bit lanes of x and y, depending on the value of xyHiLo,
    60      // and returns the four 128-bit products in the result's lanes.
    61      // Bit 0 selects the low (0) or high (1) elements of x's lanes and
    62      // bit 4 selects the low (0x00) or high (0x10) elements of y's lanes.
    63    asm: V?PCLMULQDQ
    64    in:
    65    - go: Uint64x4
    66    - go: Uint64x4
    67    - class: immediate
    68      immOffset: 0
    69      name: xyHiLo
    70    out:
    71    - go: Uint64x4
    72      overwriteElementBits: 64
    73    hideMaskMethods: true
    74  
    75  - go: carrylessMultiply
    76    documentation: !string |-
    77      // NAME computes one of four possible Galois polynomial
    78      // products of selected high and low halves of each of the four
    79      // 128-bit lanes of x and y, depending on the value of xyHiLo,
    80      // and returns the four 128-bit products in the result's lanes.
    81      // Bit 0 selects the low (0) or high (1) elements of x's lanes and
    82      // bit 4 selects the low (0x00) or high (0x10) elements of y's lanes.
    83    asm: V?PCLMULQDQ
    84    in:
    85    - go: Uint64x8
    86    - go: Uint64x8
    87    - class: immediate
    88      immOffset: 0
    89      name: xyHiLo
    90    out:
    91    - go: Uint64x8
    92      overwriteElementBits: 64
    93    hideMaskMethods: true
    94  

View as plain text