| !sum |
| # "Normal" multiplication is only available for floats. |
| # This only covers the single and double precision. |
| - go: Mul |
| asm: "VMULP[SD]" |
| in: |
| - &fp |
| go: $t |
| base: float |
| - *fp |
| out: |
| - *fp |
| |
| # Integer multiplications. |
| |
| # MulEvenWiden |
| # Dword only. |
| - go: MulEvenWiden |
| asm: "VPMULDQ" |
| in: |
| - &intNot64 |
| go: $t |
| elemBits: 8|16|32 |
| base: int |
| - *intNot64 |
| out: |
| - &int2 |
| go: $t2 |
| base: int |
| - go: MulEvenWiden |
| asm: "VPMULUDQ" |
| in: |
| - &uintNot64 |
| go: $t |
| elemBits: 8|16|32 |
| base: uint |
| - *uintNot64 |
| out: |
| - &uint2 |
| go: $t2 |
| base: uint |
| |
| # MulHigh |
| # Word only. |
| - go: MulHigh |
| asm: "VPMULHW" |
| in: |
| - &int |
| go: $t |
| base: int |
| - *int |
| out: |
| - *int |
| - go: MulHigh |
| asm: "VPMULHUW" |
| in: |
| - &uint |
| go: $t |
| base: uint |
| - *uint |
| out: |
| - *uint |
| |
| # MulLow |
| # signed and unsigned are the same for lower bits. |
| - go: Mul |
| asm: "VPMULL[WDQ]" |
| in: |
| - &any |
| go: $t |
| - *any |
| out: |
| - *any |