add vpsllvd, vpsllvq, vpsravd, vpsrlvd, vpsrlvq

This commit is contained in:
MITSUNARI Shigeo 2013-05-27 00:17:30 +09:00
parent 738e9baa40
commit ca4a542a81
3 changed files with 18 additions and 0 deletions

View file

@ -1042,6 +1042,13 @@ void put()
{ 0x44, "pclmulqdq", MM_0F3A | PP_66, false, 0, true, true }, { 0x44, "pclmulqdq", MM_0F3A | PP_66, false, 0, true, true },
{ 0x0C, "permilps", MM_0F38 | PP_66, true, 0, false, false }, { 0x0C, "permilps", MM_0F38 | PP_66, true, 0, false, false },
{ 0x0D, "permilpd", MM_0F38 | PP_66, true, 0, false, false }, { 0x0D, "permilpd", MM_0F38 | PP_66, true, 0, false, false },
{ 0x47, "psllvd", MM_0F38 | PP_66, true, 0, false, false },
{ 0x47, "psllvq", MM_0F38 | PP_66, true, 1, false, false },
{ 0x46, "psravd", MM_0F38 | PP_66, true, 0, false, false },
{ 0x45, "psrlvd", MM_0F38 | PP_66, true, 0, false, false },
{ 0x45, "psrlvq", MM_0F38 | PP_66, true, 1, false, false },
{ 0xC2, "cmppd", MM_0F | PP_66, true, -1, true, true }, { 0xC2, "cmppd", MM_0F | PP_66, true, -1, true, true },
{ 0xC2, "cmpps", MM_0F, true, -1, true, true }, { 0xC2, "cmpps", MM_0F, true, -1, true, true },
{ 0xC2, "cmpsd", MM_0F | PP_F2, false, -1, true, true }, { 0xC2, "cmpsd", MM_0F | PP_F2, false, -1, true, true },

View file

@ -1472,6 +1472,12 @@ class Test {
{ "vpermilpd", true }, { "vpermilpd", true },
{ "vpermilps", true }, { "vpermilps", true },
{ "vpshufb", true }, { "vpshufb", true },
{ "vpsllvd", true },
{ "vpsllvq", true },
{ "vpsravd", true },
{ "vpsrlvd", true },
{ "vpsrlvq", true },
}; };
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) { for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
const Tbl *p = &tbl[i]; const Tbl *p = &tbl[i];

View file

@ -655,6 +655,11 @@ void vpclmulqdq(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) {
void vpclmulqdq(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x44, false, 0); db(imm); } void vpclmulqdq(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x44, false, 0); db(imm); }
void vpermilps(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0C, true, 0); } void vpermilps(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0C, true, 0); }
void vpermilpd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0D, true, 0); } void vpermilpd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x0D, true, 0); }
void vpsllvd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x47, true, 0); }
void vpsllvq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x47, true, 1); }
void vpsravd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x46, true, 0); }
void vpsrlvd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x45, true, 0); }
void vpsrlvq(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x45, true, 1); }
void vcmppd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xC2, true, -1); db(imm); } void vcmppd(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xC2, true, -1); db(imm); }
void vcmppd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xC2, true, -1); db(imm); } void vcmppd(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xC2, true, -1); db(imm); }
void vcmpps(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F, 0xC2, true, -1); db(imm); } void vcmpps(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F, 0xC2, true, -1); db(imm); }