all: VPCLMULQDQ instruction (#360)

Adds VEX and EVEX encoded versions of the `PCLMULQDQ` carry-less quadword
multiplication instruction.

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

Contributed by @vsivsi. Extracted from #349 with minor tweaks.

Co-authored-by: Vaughn Iverson <vsivsi@yahoo.com>
This commit is contained in:
Michael McLoughlin
2023-01-09 21:38:43 -08:00
committed by GitHub
parent b893b32213
commit 7dac51aabf
7 changed files with 510 additions and 296 deletions

View File

@@ -58405,10 +58405,14 @@ func VPBROADCASTW_Z(mrx, k, xyz operand.Op) { ctx.VPBROADCASTW_Z(mrx, k, xyz) }
//
// VPCLMULQDQ imm8 m128 xmm xmm
// VPCLMULQDQ imm8 xmm xmm xmm
// VPCLMULQDQ imm8 m256 ymm ymm
// VPCLMULQDQ imm8 ymm ymm ymm
// VPCLMULQDQ imm8 m512 zmm zmm
// VPCLMULQDQ imm8 zmm zmm zmm
//
// Construct and append a VPCLMULQDQ instruction to the active function.
func (c *Context) VPCLMULQDQ(i, mx, x, x1 operand.Op) {
c.addinstruction(x86.VPCLMULQDQ(i, mx, x, x1))
func (c *Context) VPCLMULQDQ(i, mxyz, xyz, xyz1 operand.Op) {
c.addinstruction(x86.VPCLMULQDQ(i, mxyz, xyz, xyz1))
}
// VPCLMULQDQ: Carry-Less Quadword Multiplication.
@@ -58417,10 +58421,14 @@ func (c *Context) VPCLMULQDQ(i, mx, x, x1 operand.Op) {
//
// VPCLMULQDQ imm8 m128 xmm xmm
// VPCLMULQDQ imm8 xmm xmm xmm
// VPCLMULQDQ imm8 m256 ymm ymm
// VPCLMULQDQ imm8 ymm ymm ymm
// VPCLMULQDQ imm8 m512 zmm zmm
// VPCLMULQDQ imm8 zmm zmm zmm
//
// Construct and append a VPCLMULQDQ instruction to the active function.
// Operates on the global context.
func VPCLMULQDQ(i, mx, x, x1 operand.Op) { ctx.VPCLMULQDQ(i, mx, x, x1) }
func VPCLMULQDQ(i, mxyz, xyz, xyz1 operand.Op) { ctx.VPCLMULQDQ(i, mxyz, xyz, xyz1) }
// VPCMPB: Compare Packed Signed Byte Values.
//