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