all: BITALG instructions (#362)

Adds the AVX-512 Bit Algorithms 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 #234 with simplifications for AVX-512
form expansion.

Co-authored-by: Vaughn Iverson <vsivsi@yahoo.com>
This commit is contained in:
Michael McLoughlin
2023-01-10 18:55:12 -08:00
committed by GitHub
parent a42c8ae281
commit 05ed388d0f
8 changed files with 1308 additions and 159 deletions

View File

@@ -2672,6 +2672,8 @@ func TestContextInstructions(t *testing.T) {
ctx.VPMULUDQ_BCST(opm64, opxmm, opk, opxmm)
ctx.VPMULUDQ_BCST_Z(opm64, opxmm, opk, opxmm)
ctx.VPMULUDQ_Z(opm128, opxmm, opk, opxmm)
ctx.VPOPCNTB(opm128, opk, opxmm)
ctx.VPOPCNTB_Z(opm128, opk, opxmm)
ctx.VPOPCNTD(opm128, opk, opxmm)
ctx.VPOPCNTD_BCST(opm32, opk, opxmm)
ctx.VPOPCNTD_BCST_Z(opm32, opk, opxmm)
@@ -2680,6 +2682,8 @@ func TestContextInstructions(t *testing.T) {
ctx.VPOPCNTQ_BCST(opm64, opk, opxmm)
ctx.VPOPCNTQ_BCST_Z(opm64, opk, opxmm)
ctx.VPOPCNTQ_Z(opm128, opk, opxmm)
ctx.VPOPCNTW(opm128, opk, opxmm)
ctx.VPOPCNTW_Z(opm128, opk, opxmm)
ctx.VPOR(opm256, opymm, opymm)
ctx.VPORD(opm128, opxmm, opk, opxmm)
ctx.VPORD_BCST(opm32, opxmm, opk, opxmm)
@@ -2727,6 +2731,7 @@ func TestContextInstructions(t *testing.T) {
ctx.VPSCATTERQD(opxmm, opk, opvm64x)
ctx.VPSCATTERQQ(opxmm, opk, opvm64x)
ctx.VPSHUFB(opm256, opymm, opymm)
ctx.VPSHUFBITQMB(opm128, opxmm, opk, opk)
ctx.VPSHUFB_Z(opm128, opxmm, opk, opxmm)
ctx.VPSHUFD(opimm8, opm256, opymm)
ctx.VPSHUFD_BCST(opimm8, opm32, opk, opxmm)