!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