| !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. | |
| # MulWidenEven | |
| # Dword only. | |
| - go: MulWidenEven | |
| asm: "VPMULDQ" | |
| in: | |
| - &intNot64 | |
| go: $t | |
| elemBits: 8|16|32 | |
| base: int | |
| - *intNot64 | |
| out: | |
| - &int2 | |
| go: $t2 | |
| base: int | |
| - go: MulWidenEven | |
| 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 |