diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 388dbba..5b6aa2c 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -1064,7 +1064,7 @@ void put() { 0xDC, "paddusb", MM_0F | PP_66, true, -1, false, true }, { 0xDD, "paddusw", MM_0F | PP_66, true, -1, false, true }, - { 0x0F, "palignr", MM_0F3A | PP_66, false, -1, true, true }, + { 0x0F, "palignr", MM_0F3A | PP_66, true, -1, true, true }, { 0xDB, "pand", MM_0F | PP_66, true, -1, false, true }, { 0xDF, "pandn", MM_0F | PP_66, true, -1, false, true }, diff --git a/test/make_nm.cpp b/test/make_nm.cpp index 0fae3d4..072126c 100644 --- a/test/make_nm.cpp +++ b/test/make_nm.cpp @@ -1423,7 +1423,7 @@ class Test { { "vcmpsd", false }, { "vcmpss", false }, { "vinsertps", false }, - { "vpalignr", false }, + { "vpalignr", true }, { "vshufpd", true }, { "vshufps", true }, }; diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 905d09c..35bd975 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -691,8 +691,8 @@ void vpaddusb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM( void vpaddusb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDC, true, -1); } void vpaddusw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDD, true, -1); } void vpaddusw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDD, true, -1); } -void vpalignr(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0F, false, -1); db(imm); } -void vpalignr(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0F, false, -1); db(imm); } +void vpalignr(const Xmm& xm1, const Xmm& xm2, const Operand& op, uint8 imm) { opAVX_X_X_XM(xm1, xm2, op, MM_0F3A | PP_66, 0x0F, true, -1); db(imm); } +void vpalignr(const Xmm& xmm, const Operand& op, uint8 imm) { opAVX_X_X_XM(xmm, xmm, op, MM_0F3A | PP_66, 0x0F, true, -1); db(imm); } void vpand(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDB, true, -1); } void vpand(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xDB, true, -1); } void vpandn(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xDF, true, -1); }