diff options
author | MITSUNARI Shigeo <[email protected]> | 2018-09-19 01:09:10 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2018-09-19 01:09:10 +0900 |
commit | d35f4fb78150ad2c9e465cbd175d0982c3a30349 (patch) | |
tree | a363c2eb183d60ea6557f1bddb6a8df9d0bb9469 | |
parent | 1de435ed04c8e74775804da944d176baf0ce56e2 (diff) | |
download | xbyak-d35f4fb78150ad2c9e465cbd175d0982c3a30349.tar.gz xbyak-d35f4fb78150ad2c9e465cbd175d0982c3a30349.zip |
fix the encoding of vinsertps for disp8N
-rw-r--r-- | gen/gen_code.cpp | 2 | ||||
-rw-r--r-- | readme.md | 1 | ||||
-rw-r--r-- | readme.txt | 3 | ||||
-rw-r--r-- | test/make_512.cpp | 2 | ||||
-rw-r--r-- | xbyak/xbyak.h | 2 | ||||
-rw-r--r-- | xbyak/xbyak_mnemonic.h | 4 |
6 files changed, 8 insertions, 6 deletions
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 37877bf..70db4fe 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -76,7 +76,7 @@ void putX_X_XM(bool omitOnly) { 0xC2, "cmpss", T_0F | T_F3, true, true, 2 }, { 0x5A, "cvtsd2ss", T_0F | T_F2 | T_EVEX | T_EW1 | T_N8 | T_ER_X, false, true, 2 }, { 0x5A, "cvtss2sd", T_0F | T_F3 | T_EVEX | T_EW0 | T_N4 | T_SAE_X, false, true, 2 }, - { 0x21, "insertps", T_0F3A | T_66 | T_W0 | T_EVEX | T_EW0, true, true, 2 }, + { 0x21, "insertps", T_0F3A | T_66 | T_W0 | T_EVEX | T_EW0 | T_N4, true, true, 2 }, { 0x63, "packsswb", T_0F | T_66 | T_YMM | T_EVEX, false, true, 2 }, { 0x6B, "packssdw", T_0F | T_66 | T_YMM | T_EVEX | T_EW0 | T_B32, false, true, 2 }, { 0x67, "packuswb", T_0F | T_66 | T_YMM | T_EVEX, false, true, 2 }, @@ -392,6 +392,7 @@ modified new BSD License http://opensource.org/licenses/BSD-3-Clause ## History +* 2018/Sep/19 ver 5.72 fix the encoding of vinsertps for disp8N(Thanks to petercaday) * 2018/Sep/04 ver 5.71 L() returns a new label instance * 2018/Aug/27 ver 5.70 support setProtectMode() and DontUseProtect for read/exec setting * 2018/Aug/24 ver 5.68 fix wrong VSIB encoding with vector index >= 16(thanks to petercaday) @@ -1,5 +1,5 @@ - C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.71
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.72
-----------------------------------------------------------------------------
◎概要
@@ -373,6 +373,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から -----------------------------------------------------------------------------
◎履歴
+2018/09/19 ver 5.72 fix the encoding of vinsertps for disp8N(Thanks to petercaday)
2018/08/27 ver 5.71 新しいlabelインスタンスを返すL()を追加
2018/08/27 ver 5.70 read/exec設定のためのsetProtectMode()とDontUseProtectの追加
2018/08/24 ver 5.68 indexが16以上のVSIBエンコーディングのバグ修正(thanks to petercaday)
diff --git a/test/make_512.cpp b/test/make_512.cpp index cf345be..38f989c 100644 --- a/test/make_512.cpp +++ b/test/make_512.cpp @@ -1176,7 +1176,7 @@ public: uint64_t xm; } tbl[] = { #ifdef XBYAK64 - { "vinsertps", _XMM, _XMM, _XMM3 | _MEM }, + { "vinsertps", _XMM3, _XMM, _XMM3 | _MEM }, { "vshufpd", XMM_KZ, _XMM, M_1to2 | _MEM }, { "vshufpd", ZMM_KZ, _ZMM, M_1to8 | _MEM }, diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index d820b6d..cf52e32 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -105,7 +105,7 @@ namespace Xbyak { enum { DEFAULT_MAX_CODE_SIZE = 4096, - VERSION = 0x5710 /* 0xABCD = A.BC(D) */ + VERSION = 0x5720 /* 0xABCD = A.BC(D) */ }; #ifndef MIE_INTEGER_TYPE_DEFINED diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 8eadcc5..6111619 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -1,4 +1,4 @@ -const char *getVersionString() const { return "5.71"; } +const char *getVersionString() const { return "5.72"; } void adc(const Operand& op, uint32 imm) { opRM_I(op, imm, 0x10, 2); } void adc(const Operand& op1, const Operand& op2) { opRM_RM(op1, op2, 0x10); } void adcx(const Reg32e& reg, const Operand& op) { opGen(reg, op, 0xF6, 0x66, isREG32_REG32orMEM, NONE, 0x38); } @@ -1023,7 +1023,7 @@ void vhsubpd(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) void vhsubps(const Xmm& xmm, const Operand& op1, const Operand& op2 = Operand()) { opAVX_X_X_XM(xmm, op1, op2, T_F2 | T_0F | T_YMM, 0x7D); } void vinsertf128(const Ymm& y1, const Ymm& y2, const Operand& op, uint8 imm) { if (!(y1.isYMM() && y2.isYMM() && op.isXMEM())) throw Error(ERR_BAD_COMBINATION); opVex(y1, &y2, op, T_0F3A | T_66 | T_W0 | T_YMM, 0x18, imm); } void vinserti128(const Ymm& y1, const Ymm& y2, const Operand& op, uint8 imm) { if (!(y1.isYMM() && y2.isYMM() && op.isXMEM())) throw Error(ERR_BAD_COMBINATION); opVex(y1, &y2, op, T_0F3A | T_66 | T_W0 | T_YMM, 0x38, imm); } -void vinsertps(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F3A | T_W0 | T_EW0 | T_EVEX, 0x21, imm); } +void vinsertps(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { opAVX_X_X_XM(x1, x2, op, T_N4 | T_66 | T_0F3A | T_W0 | T_EW0 | T_EVEX, 0x21, imm); } void vlddqu(const Xmm& x, const Address& addr) { opAVX_X_X_XM(x, cvtIdx0(x), addr, T_0F | T_F2 | T_W0 | T_YMM, 0xF0); } void vldmxcsr(const Address& addr) { opAVX_X_X_XM(xm2, xm0, addr, T_0F, 0xAE); } void vmaskmovdqu(const Xmm& x1, const Xmm& x2) { opAVX_X_X_XM(x1, xm0, x2, T_0F | T_66, 0xF7); } |