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>
This commit is contained in:
committed by
GitHub
parent
05ed388d0f
commit
e2c0a40f50
File diff suppressed because it is too large
Load Diff
@@ -2384,10 +2384,14 @@ func TestContextInstructions(t *testing.T) {
|
||||
ctx.VPCMPUQ_BCST(opimm8, opm64, opxmm, opk, opk)
|
||||
ctx.VPCMPUW(opimm8, opm128, opxmm, opk, opk)
|
||||
ctx.VPCMPW(opimm8, opm128, opxmm, opk, opk)
|
||||
ctx.VPCOMPRESSB(opxmm, opk, opm128)
|
||||
ctx.VPCOMPRESSB_Z(opxmm, opk, opxmm)
|
||||
ctx.VPCOMPRESSD(opxmm, opk, opm128)
|
||||
ctx.VPCOMPRESSD_Z(opxmm, opk, opm128)
|
||||
ctx.VPCOMPRESSQ(opxmm, opk, opm128)
|
||||
ctx.VPCOMPRESSQ_Z(opxmm, opk, opm128)
|
||||
ctx.VPCOMPRESSW(opxmm, opk, opm128)
|
||||
ctx.VPCOMPRESSW_Z(opxmm, opk, opxmm)
|
||||
ctx.VPCONFLICTD(opm128, opk, opxmm)
|
||||
ctx.VPCONFLICTD_BCST(opm32, opk, opxmm)
|
||||
ctx.VPCONFLICTD_BCST_Z(opm32, opk, opxmm)
|
||||
@@ -2482,10 +2486,14 @@ func TestContextInstructions(t *testing.T) {
|
||||
ctx.VPERMT2W_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPERMW(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPERMW_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPEXPANDB(opm128, opk, opxmm)
|
||||
ctx.VPEXPANDB_Z(opm128, opk, opxmm)
|
||||
ctx.VPEXPANDD(opm128, opk, opxmm)
|
||||
ctx.VPEXPANDD_Z(opm128, opk, opxmm)
|
||||
ctx.VPEXPANDQ(opm128, opk, opxmm)
|
||||
ctx.VPEXPANDQ_Z(opm128, opk, opxmm)
|
||||
ctx.VPEXPANDW(opm128, opk, opxmm)
|
||||
ctx.VPEXPANDW_Z(opm128, opk, opxmm)
|
||||
ctx.VPEXTRB(opimm8, opxmm, opm8)
|
||||
ctx.VPEXTRD(opimm8, opxmm, opm32)
|
||||
ctx.VPEXTRQ(opimm8, opxmm, opm64)
|
||||
@@ -2730,6 +2738,46 @@ func TestContextInstructions(t *testing.T) {
|
||||
ctx.VPSCATTERDQ(opxmm, opk, opvm32x)
|
||||
ctx.VPSCATTERQD(opxmm, opk, opvm64x)
|
||||
ctx.VPSCATTERQQ(opxmm, opk, opvm64x)
|
||||
ctx.VPSHLDD(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDD_BCST(opimm8, opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDD_BCST_Z(opimm8, opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDD_Z(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDQ(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDQ_BCST(opimm8, opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDQ_BCST_Z(opimm8, opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDQ_Z(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVD(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVD_BCST(opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVD_BCST_Z(opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVD_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVQ(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVQ_BCST(opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVQ_BCST_Z(opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVQ_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVW(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDVW_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDW(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHLDW_Z(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDD(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDD_BCST(opimm8, opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDD_BCST_Z(opimm8, opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDD_Z(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDQ(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDQ_BCST(opimm8, opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDQ_BCST_Z(opimm8, opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDQ_Z(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVD(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVD_BCST(opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVD_BCST_Z(opm32, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVD_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVQ(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVQ_BCST(opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVQ_BCST_Z(opm64, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVQ_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVW(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDVW_Z(opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDW(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHRDW_Z(opimm8, opm128, opxmm, opk, opxmm)
|
||||
ctx.VPSHUFB(opm256, opymm, opymm)
|
||||
ctx.VPSHUFBITQMB(opm128, opxmm, opk, opk)
|
||||
ctx.VPSHUFB_Z(opm128, opxmm, opk, opxmm)
|
||||
|
||||
Reference in New Issue
Block a user