feat(asm): encode the remaining amd64 VEX families

The SSE3 horizontal and add-subtract pairs, the SSSE3 sign and
horizontal integers, the masked moves in both directions, the
reciprocity and test pairs, the AVX imm8 tail (blends, dot products,
inserts, rounds, MPSADBW, the string compares), the four-operand
variable blends with their /is4 mask byte, the scalar three-operand
moves, the MXCSR accessors, the VPERMIL register controls and the
variable word shifts, plus the BMI2 count forms over memory.  Every
encoding is pinned byte for byte against go tool asm through every
corpus line the toolchain's own amd64enc.s carries for the families
(852 lines); the /is4 byte carries the mask register number in its high
nibble, the layout the toolchain emits.

Assisted-by: GLM 5.3 Flash
This commit is contained in:
petrbalvin committed 2026-10-06 23:59:47 +02:00
1 parent 6af3fd60d5
commit cfc3abb752
4 files changed
+1096 -25

No files matched your search

+3
View File
@@ -76,6 +76,9 @@ var x86asmUnrecognised = map[string]bool{
"SHLXQ": true,
"SHRXL": true,
"SHRXQ": true,
// The register-only half move the decoder's AVX tables lack; its
// bytes are pinned against go tool asm through the corpus test.
"VMOVHLPS": true,
}
// TestVexNDS3 encodes `mnem Y0, Y1, Y2` for every three-operand NDS