all: VPOPCNTDQ instructions (#361)

Adds the VPOPCNTDQ instruction set, providing packed population count for
double and quadword integers.

These are added via the `opcodesextra` mechanism #345, since they're missing
from the opcodes database. In this case the 512-bit non-AVX512VL forms are
added here as well as the opcodes database, but they're deduplicated later.

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-09 22:36:27 -08:00
committed by GitHub
parent 7dac51aabf
commit a42c8ae281
8 changed files with 881 additions and 184 deletions

View File

@@ -91519,6 +91519,174 @@ var Instructions = []Instruction{
Opcode: "VPOPCNTD",
Summary: "Packed Population Count for Doubleword Integers",
Forms: []Form{
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m128", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m128", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m128", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m256", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m256", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m256", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m32", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x3},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m32", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m32", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x3},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m32", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m32", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m32", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "xmm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "xmm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "xmm", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "ymm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "ymm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "ymm", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VPOPCNTDQ"},
Operands: []Operand{
@@ -91609,6 +91777,174 @@ var Instructions = []Instruction{
Opcode: "VPOPCNTQ",
Summary: "Packed Population Count for Quadword Integers",
Forms: []Form{
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m128", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m128", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m128", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m256", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m256", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m256", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m64", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x3},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m64", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m64", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x3},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m64", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m64", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "m64", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Broadcast: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "xmm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "xmm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "xmm", Action: 0x1},
{Type: "xmm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "ymm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x3},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "ymm", Action: 0x1},
{Type: "k", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
Zeroing: true,
},
{
ISA: []string{"AVX512VL", "AVX512VPOPCNTDQ"},
Operands: []Operand{
{Type: "ymm", Action: 0x1},
{Type: "ymm", Action: 0x2},
},
EncodingType: 0x4,
},
{
ISA: []string{"AVX512VPOPCNTDQ"},
Operands: []Operand{