Text file src/simd/_gen/simdgen/ops/Mul/go.yaml

     1  !sum
     2  # "Normal" multiplication is only available for floats.
     3  # This only covers the single and double precision.
     4  - go: Mul
     5    asm: "VMULP[SD]"
     6    in:
     7    - &fp
     8      go: $t
     9      base: float
    10    - *fp
    11    out:
    12    - *fp
    13  
    14  # Integer multiplications.
    15  
    16  # MulEvenWiden
    17  # Dword only.
    18  - go: MulEvenWiden
    19    asm: "VPMULDQ"
    20    in:
    21    - &intNot64
    22      go: $t
    23      elemBits: 8|16|32
    24      base: int
    25    - *intNot64
    26    out:
    27    - &int2
    28      go: $t2
    29      base: int
    30  - go: MulEvenWiden
    31    asm: "VPMULUDQ"
    32    in:
    33    - &uintNot64
    34      go: $t
    35      elemBits: 8|16|32
    36      base: uint
    37    - *uintNot64
    38    out:
    39    - &uint2
    40      go: $t2
    41      base: uint
    42  
    43  # MulHigh
    44  # Word only.
    45  - go: MulHigh
    46    asm: "VPMULHW"
    47    in:
    48    - &int
    49      go: $t
    50      base: int
    51    - *int
    52    out:
    53    - *int
    54  - go: MulHigh
    55    asm: "VPMULHUW"
    56    in:
    57    - &uint
    58      go: $t
    59      base: uint
    60    - *uint
    61    out:
    62    - *uint
    63  
    64  # MulLow
    65  # signed and unsigned are the same for lower bits.
    66  - go: Mul
    67    asm: "VPMULL[WDQ]"
    68    in:
    69    - &any
    70      go: $t
    71    - *any
    72    out:
    73    - *any
    74  

View as plain text