aboutsummaryrefslogtreecommitdiffhomepage
path: root/doc/usage.md
diff options
context:
space:
mode:
authorMITSUNARI Shigeo <[email protected]>2024-10-13 15:27:05 +0900
committerMITSUNARI Shigeo <[email protected]>2024-10-13 15:27:05 +0900
commitf6c66cf6b81f7a063a930cdfc0a62c68e6e2d0fc (patch)
tree1f0890d9bf310f34d5f0ef7132d13ea613187480 /doc/usage.md
parentf3f2dd2d748859fd4438ab596950ba52769607a4 (diff)
downloadxbyak-f6c66cf6b81f7a063a930cdfc0a62c68e6e2d0fc.tar.gz
xbyak-f6c66cf6b81f7a063a930cdfc0a62c68e6e2d0fc.zip
vpdpb[su,uu,ss]d[,s] support avx10.2
Diffstat (limited to 'doc/usage.md')
-rw-r--r--doc/usage.md30
1 files changed, 19 insertions, 11 deletions
diff --git a/doc/usage.md b/doc/usage.md
index 53c0bb9..9398755 100644
--- a/doc/usage.md
+++ b/doc/usage.md
@@ -106,29 +106,37 @@ vcvtpd2dq xmm19, [eax+32]{1to4} --> vcvtpd2dq(xmm19, yword_b [eax+32]);
vfpclassps k5{k3}, zword [rax+64], 5 --> vfpclassps(k5|k3, zword [rax+64], 5); // specify m512
vfpclasspd k5{k3}, [rax+64]{1to2}, 5 --> vfpclasspd(k5|k3, xword_b [rax+64], 5); // broadcast 64-bit to 128-bit
vfpclassps k5{k3}, [rax+64]{1to4}, 5 --> vfpclassps(k5|k3, yword_b [rax+64], 5); // broadcast 64-bit to 256-bit
+```
+
+## Selecting AVX512-VNNI, AVX-VNNI, AVX-VNNI-INT8 etc.
+Some mnemonics have two types of encodings: VEX and EVEX.
+The functions for these mnemonics include an optional parameter as the last argument to specify the encoding.
+The default behavior depends on the order in which the instruction was introduced (whether VEX or EVEX came first),
+and can be specified using setDefaultEncoding.
-vpdpbusd(xm0, xm1, xm2); // default encoding is EVEX
+```
+vpdpbusd(xm0, xm1, xm2); // default encoding: EVEX (AVX512-VNNI)
vpdpbusd(xm0, xm1, xm2, EvexEncoding); // same as the above
-vpdpbusd(xm0, xm1, xm2, VexEncoding); // VEX encoding
+vpdpbusd(xm0, xm1, xm2, VexEncoding); // VEX (AVX-VNNI)
setDefaultEncoding(VexEncoding); // default encoding is VEX
-vpdpbusd(xm0, xm1, xm2); // VEX encoding
+vpdpbusd(xm0, xm1, xm2); // VEX
-vmpsadbw(xm1, xm3, xm15, 3); // default encoding
-vmpsadbw(xm1, xm3, xm15, 3, VexEncoding); // vex(avx)
-vmpsadbw(xm1, xm3, xm15, 3, EvexEncoding); // evex(avx10.2)
+vmpsadbw(xm1, xm3, xm15, 3); // default encoding: VEX (AVX-VNNI)
+vmpsadbw(xm1, xm3, xm15, 3, VexEncoding); // same as the above
+vmpsadbw(xm1, xm3, xm15, 3, EvexEncoding); // EVEX (AVX10.2)
setDefaultEncoding(VexEncoding, EvexEncoding); // use 2nd argument.
-vmpsadbw(xm1, xm3, xm15, 3); // evex(avx10.2)
-
+vmpsadbw(xm1, xm3, xm15, 3); // EVEX
```
- `setDefaultEncoding(PreferredEncoding vnniEnc = EvexEncoding, PreferredEncoding avx10Enc = VexEncoding)`
+Control the default encoding of mnemonics with `Xbyak::PreferredEncoding` param.
param|vnniEnc|avx10Enc
-|-|-
-EvexEncoding|AVX512_VNNI|AVX10.2
-VexEncoding|AVX/AVX2|AVX-VNNI-INT8
+EvexEncoding|AVX512-VNNI|AVX10.2
+VexEncoding|AVX-VNNI|AVX-VNNI-INT8
default|EvexEncoding|VexEncoding
-mnemonic|vpdpbusd, vpdpbusds, vpdpwssd, vpdpwssds|vmpsadbw, vpdpbssd
+mnemonic|vpdpbusd, vpdpbusds, vpdpwssd, vpdpwssds|vmpsadbw, vpdpbssd, vpdpbssds, vpdpbsud, vpdpbsuds, vpdpbuud, vpdpbuuds
### Remark
* `k1`, ..., `k7` are opmask registers.