diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index f613b2f..9a09dc0 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -1086,11 +1086,11 @@ void put() { 0x02, "phaddd", MM_0F38 | PP_66, true, -1, false, true }, { 0x03, "phaddsw", MM_0F38 | PP_66, true, -1, false, true }, - { 0x05, "phsubw", MM_0F38 | PP_66, false, -1, false, true }, - { 0x06, "phsubd", MM_0F38 | PP_66, false, -1, false, true }, - { 0x07, "phsubsw", MM_0F38 | PP_66, false, -1, false, true }, - { 0xF5, "pmaddwd", MM_0F | PP_66, false, -1, false, true }, - { 0x04, "pmaddubsw", MM_0F38 | PP_66, false, -1, false, true }, + { 0x05, "phsubw", MM_0F38 | PP_66, true, -1, false, true }, + { 0x06, "phsubd", MM_0F38 | PP_66, true, -1, false, true }, + { 0x07, "phsubsw", MM_0F38 | PP_66, true, -1, false, true }, + { 0xF5, "pmaddwd", MM_0F | PP_66, true, -1, false, true }, + { 0x04, "pmaddubsw", MM_0F38 | PP_66, true, -1, false, true }, { 0x3C, "pmaxsb", MM_0F38 | PP_66, false, -1, false, true }, { 0xEE, "pmaxsw", MM_0F | PP_66, false, -1, false, true }, diff --git a/test/make_nm.cpp b/test/make_nm.cpp index 1aeba91..c2386a4 100644 --- a/test/make_nm.cpp +++ b/test/make_nm.cpp @@ -1316,11 +1316,11 @@ class Test { { "vphaddd", true }, { "vphaddsw", true }, - { "vphsubw", false }, - { "vphsubd", false }, - { "vphsubsw", false }, - { "vpmaddwd", false }, - { "vpmaddubsw", false }, + { "vphsubw", true }, + { "vphsubd", true }, + { "vphsubsw", true }, + { "vpmaddwd", true }, + { "vpmaddubsw", true }, { "vpmaxsb", false }, { "vpmaxsw", false }, diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 3ff4bfe..9e82f63 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -723,16 +723,16 @@ void vphaddd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(x void vphaddd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x02, true, -1); } void vphaddsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x03, true, -1); } void vphaddsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x03, true, -1); } -void vphsubw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x05, false, -1); } -void vphsubw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x05, false, -1); } -void vphsubd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x06, false, -1); } -void vphsubd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x06, false, -1); } -void vphsubsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x07, false, -1); } -void vphsubsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x07, false, -1); } -void vpmaddwd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF5, false, -1); } -void vpmaddwd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF5, false, -1); } -void vpmaddubsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x04, false, -1); } -void vpmaddubsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x04, false, -1); } +void vphsubw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x05, true, -1); } +void vphsubw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x05, true, -1); } +void vphsubd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x06, true, -1); } +void vphsubd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x06, true, -1); } +void vphsubsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x07, true, -1); } +void vphsubsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x07, true, -1); } +void vpmaddwd(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xF5, true, -1); } +void vpmaddwd(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F | PP_66, 0xF5, true, -1); } +void vpmaddubsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x04, true, -1); } +void vpmaddubsw(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x04, true, -1); } void vpmaxsb(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F38 | PP_66, 0x3C, false, -1); } void vpmaxsb(const Xmm& xmm, const Operand& op) { opAVX_X_X_XM(xmm, xmm, op, MM_0F38 | PP_66, 0x3C, false, -1); } void vpmaxsw(const Xmm& xm1, const Xmm& xm2, const Operand& op) { opAVX_X_X_XM(xm1, xm2, op, MM_0F | PP_66, 0xEE, false, -1); }