4 Commits

Author SHA1 Message Date
33208a2356 update 2026-03-06 20:14:02 +00:00
Vaughn Iverson
fc7bbb86e5 internal/opcodesextra: fix actions for VNNI and VBMI2 shifts (#372)
Fix the destination register actions for VNNI and VBMI2 concatenate and
variable shift instructions `VPSH{L,R}DV{W,D,Q}`. In the case of mask merging,
the action should be `RW` not `W`.

Prior to this change, the bug manifests as incorrect vector register
scheduling when `avo` doesn't recognize that these instructions have a data
dependency on the destination register.

See:
https://www.felixcloutier.com/x86/vpdpbusd
https://www.felixcloutier.com/x86/vpdpbusds
https://www.felixcloutier.com/x86/vpshldv
https://www.felixcloutier.com/x86/vpshrdv
2023-03-06 22:52:03 -08:00
Michael McLoughlin
9e56971ed6 internal/opcodesextra: _yvblendmpd forms helper (#365)
Use helper function for instructions sharing the `_yvblendmpd` family of forms.
2023-01-14 13:55:36 -08:00
Michael McLoughlin
e2c0a40f50 all: VBMI2 instructions (#363)
Adds the "Vector Bit Manipulation Instructions 2" instruction set.

These new instructions are added via the `opcodesextra` mechanism #345, since
they're missing from the opcodes database.

Contributed by @vsivsi. Extracted from #349 with simplifications.
Specifically, as prompted by the `dupl` linter we extract some common forms
lists into a helper `forms.go` file.

Co-authored-by: Vaughn Iverson <vsivsi@yahoo.com>
2023-01-14 13:25:44 -08:00