instrs: Add VAES instructions
This commit is contained in:
@@ -498,6 +498,19 @@ main(int argc, char** argv)
|
|||||||
TEST32("\xc4\xe3\x75\x4b\xc2\x80", "vblendvpd ymm0, ymm1, ymm2, ymm0"); // Bit 7 is ignored
|
TEST32("\xc4\xe3\x75\x4b\xc2\x80", "vblendvpd ymm0, ymm1, ymm2, ymm0"); // Bit 7 is ignored
|
||||||
TEST64("\xc4\xe3\x75\x4b\xc2\x80", "vblendvpd ymm0, ymm1, ymm2, ymm8");
|
TEST64("\xc4\xe3\x75\x4b\xc2\x80", "vblendvpd ymm0, ymm1, ymm2, ymm8");
|
||||||
|
|
||||||
|
TEST("\xc4\xe2\x79\xdb\xc1", "vaesimc xmm0, xmm1");
|
||||||
|
TEST("\xc4\xe2\x7d\xdb\xc1", "UD"); // VEX.L != 0
|
||||||
|
TEST("\xc4\xe3\x79\xdf\xc1\xae", "vaeskeygenassist xmm0, xmm1, 0xae");
|
||||||
|
TEST("\xc4\xe3\x7d\xdf\xc1\xae", "UD"); // VEX.L != 0
|
||||||
|
TEST("\xc4\xe2\x71\xdc\xc2", "vaesenc xmm0, xmm1, xmm2");
|
||||||
|
TEST("\xc4\xe2\x75\xdc\xc2", "vaesenc ymm0, ymm1, ymm2");
|
||||||
|
TEST("\xc4\xe2\x71\xdd\xc2", "vaesenclast xmm0, xmm1, xmm2");
|
||||||
|
TEST("\xc4\xe2\x75\xdd\xc2", "vaesenclast ymm0, ymm1, ymm2");
|
||||||
|
TEST("\xc4\xe2\x71\xde\xc2", "vaesdec xmm0, xmm1, xmm2");
|
||||||
|
TEST("\xc4\xe2\x75\xde\xc2", "vaesdec ymm0, ymm1, ymm2");
|
||||||
|
TEST("\xc4\xe2\x71\xdf\xc2", "vaesdeclast xmm0, xmm1, xmm2");
|
||||||
|
TEST("\xc4\xe2\x75\xdf\xc2", "vaesdeclast ymm0, ymm1, ymm2");
|
||||||
|
|
||||||
TEST("\xc4\xe2\x71\x92\xc0", "UD"); // Must have memory operand
|
TEST("\xc4\xe2\x71\x92\xc0", "UD"); // Must have memory operand
|
||||||
TEST("\xc4\xe2\x71\x92\x00", "UD"); // Must have SIB byte
|
TEST("\xc4\xe2\x71\x92\x00", "UD"); // Must have SIB byte
|
||||||
TEST("\xc4\xe2\x71\x92\x05\x00\x00\x00\x00", "UD"); // Must have SIB byte
|
TEST("\xc4\xe2\x71\x92\x05\x00\x00\x00\x00", "UD"); // Must have SIB byte
|
||||||
|
|||||||
@@ -255,6 +255,17 @@ TEST("\xc4\xe2\xf1\x91\x04\xe7", VPGATHERQQ128rmr, 0, FE_XMM0, FE_MEMV(FE_DI, 8,
|
|||||||
TEST("\xc4\xe2\xf5\x91\x04\xff", VPGATHERQQ256rmr, 0, FE_XMM0, FE_MEMV(FE_DI, 8, FE_XMM7, 0), FE_XMM1);
|
TEST("\xc4\xe2\xf5\x91\x04\xff", VPGATHERQQ256rmr, 0, FE_XMM0, FE_MEMV(FE_DI, 8, FE_XMM7, 0), FE_XMM1);
|
||||||
TEST("\xc4\xe2\xf5\x91\x04\xe7", VPGATHERQQ256rmr, 0, FE_XMM0, FE_MEMV(FE_DI, 8, FE_XMM4, 0), FE_XMM1);
|
TEST("\xc4\xe2\xf5\x91\x04\xe7", VPGATHERQQ256rmr, 0, FE_XMM0, FE_MEMV(FE_DI, 8, FE_XMM4, 0), FE_XMM1);
|
||||||
|
|
||||||
|
TEST("\xc4\xe2\x79\xdb\xc1", VAESIMCrr, 0, FE_XMM0, FE_XMM1);
|
||||||
|
TEST("\xc4\xe3\x79\xdf\xc1\xae", VAESKEYGENASSISTrri, 0, FE_XMM0, FE_XMM1, (int8_t) 0xae);
|
||||||
|
TEST("\xc4\xe2\x71\xdc\xc2", VAESENC128rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
TEST("\xc4\xe2\x75\xdc\xc2", VAESENC256rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
TEST("\xc4\xe2\x71\xdd\xc2", VAESENCLAST128rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
TEST("\xc4\xe2\x75\xdd\xc2", VAESENCLAST256rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
TEST("\xc4\xe2\x71\xde\xc2", VAESDEC128rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
TEST("\xc4\xe2\x75\xde\xc2", VAESDEC256rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
TEST("\xc4\xe2\x71\xdf\xc2", VAESDECLAST128rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
TEST("\xc4\xe2\x75\xdf\xc2", VAESDECLAST256rrr, 0, FE_XMM0, FE_XMM1, FE_XMM2);
|
||||||
|
|
||||||
// Test ModRM encoding
|
// Test ModRM encoding
|
||||||
TEST("\x01\x00", ADD32mr, 0, FE_MEM(FE_AX, 0, FE_NOREG, 0), FE_AX);
|
TEST("\x01\x00", ADD32mr, 0, FE_MEM(FE_AX, 0, FE_NOREG, 0), FE_AX);
|
||||||
TEST("\x01\x04\x24", ADD32mr, 0, FE_MEM(FE_SP, 0, FE_NOREG, 0), FE_AX);
|
TEST("\x01\x04\x24", ADD32mr, 0, FE_MEM(FE_SP, 0, FE_NOREG, 0), FE_AX);
|
||||||
|
|||||||
13
instrs.txt
13
instrs.txt
@@ -880,10 +880,15 @@ NP.0f38f9/m MR My Gy - - MOVDIRI F=MOVDIRI
|
|||||||
66.0f38df RM Vdq Wdq - - AESDECLAST F=AESNI
|
66.0f38df RM Vdq Wdq - - AESDECLAST F=AESNI
|
||||||
66.0f3adf RMI Vdq Wdq Ib - AESKEYGENASSIST F=AESNI
|
66.0f3adf RMI Vdq Wdq Ib - AESKEYGENASSIST F=AESNI
|
||||||
VEX.66.L0.0f38db RM Vdq Wdq - - VAESIMC F=AESNI,AVX
|
VEX.66.L0.0f38db RM Vdq Wdq - - VAESIMC F=AESNI,AVX
|
||||||
VEX.66.L0.0f38dc RVM Vdq Hdq Wdq - VAESENC F=AESNI,AVX
|
# 256-bit encodings require VAES.
|
||||||
VEX.66.L0.0f38dd RVM Vdq Hdq Wdq - VAESENCLAST F=AESNI,AVX
|
VEX.66.L0.0f38dc RVM Vx Hx Wx - VAESENC F=AESNI,AVX
|
||||||
VEX.66.L0.0f38de RVM Vdq Hdq Wdq - VAESDEC F=AESNI,AVX
|
VEX.66.L1.0f38dc RVM Vx Hx Wx - VAESENC F=AESNI,VAES,AVX
|
||||||
VEX.66.L0.0f38df RVM Vdq Hdq Wdq - VAESDECLAST F=AESNI,AVX
|
VEX.66.L0.0f38dd RVM Vx Hx Wx - VAESENCLAST F=AESNI,AVX
|
||||||
|
VEX.66.L1.0f38dd RVM Vx Hx Wx - VAESENCLAST F=AESNI,VAES,AVX
|
||||||
|
VEX.66.L0.0f38de RVM Vx Hx Wx - VAESDEC F=AESNI,AVX
|
||||||
|
VEX.66.L1.0f38de RVM Vx Hx Wx - VAESDEC F=AESNI,VAES,AVX
|
||||||
|
VEX.66.L0.0f38df RVM Vx Hx Wx - VAESDECLAST F=AESNI,AVX
|
||||||
|
VEX.66.L1.0f38df RVM Vx Hx Wx - VAESDECLAST F=AESNI,VAES,AVX
|
||||||
VEX.66.L0.0f3adf RMI Vdq Wdq Ib - VAESKEYGENASSIST F=AESNI,AVX
|
VEX.66.L0.0f3adf RMI Vdq Wdq Ib - VAESKEYGENASSIST F=AESNI,AVX
|
||||||
#
|
#
|
||||||
# AVX
|
# AVX
|
||||||
|
|||||||
Reference in New Issue
Block a user