diff options
author | MITSUNARI Shigeo <[email protected]> | 2015-08-18 17:52:02 +0900 |
---|---|---|
committer | MITSUNARI Shigeo <[email protected]> | 2015-08-18 17:52:02 +0900 |
commit | 8c9059fbd7832dde605e09f4b19a418a497f44d3 (patch) | |
tree | 93ccec62b548a4a02794ef5ad5fe608ee62238aa | |
parent | fd16a35fd955b72c962240892284fc9afbbd10de (diff) | |
download | xbyak-8c9059fbd7832dde605e09f4b19a418a497f44d3.tar.gz xbyak-8c9059fbd7832dde605e09f4b19a418a497f44d3.zip |
add test of ripv4.86
-rw-r--r-- | readme.md | 3 | ||||
-rw-r--r-- | readme.txt | 3 | ||||
-rw-r--r-- | test/rip-label-imm.cpp | 58 | ||||
-rw-r--r-- | xbyak/xbyak.h | 2 | ||||
-rw-r--r-- | xbyak/xbyak_mnemonic.h | 2 |
5 files changed, 48 insertions, 20 deletions
@@ -1,5 +1,5 @@ -Xbyak 4.85 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ +Xbyak 4.86 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ ============= Abstract @@ -277,6 +277,7 @@ The header files under xbyak/ are independent of cybozulib. History ------------- +* 2015/Aug/18 ver 4.86 fix [rip + label] addressing with immediate value(thanks to whyisthisfieldhere) * 2015/Aug/10 ver 4.85 Address::operator==() is not correct(thanks to inolen) * 2015/Jun/22 ver 4.84 call() support variadic template if available(thanks to randomstuff) * 2015/Jun/16 ver 4.83 support movbe(thanks to benvanik) @@ -1,5 +1,5 @@ - C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 4.85
+ C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 4.86
-----------------------------------------------------------------------------
◎概要
@@ -296,6 +296,7 @@ cybozulibは単体テストでのみ利用されていて、xbyak/ディレク� -----------------------------------------------------------------------------
◎履歴
+2015/08/16 ver 4.86 [rip + label]アドレッシングで即値を使うと壊れる(thanks to whyisthisfieldhere)
2015/08/10 ver 4.85 Address::operator==()が間違っている(thanks to inolen)
2015/07/22 ver 4.84 call()がvariadic template対応
2015/05/24 ver 4.83 mobveサポート(thanks to benvanik)
diff --git a/test/rip-label-imm.cpp b/test/rip-label-imm.cpp index a4016fd..4ed208e 100644 --- a/test/rip-label-imm.cpp +++ b/test/rip-label-imm.cpp @@ -3,22 +3,35 @@ /* dump of vc -0000000000450000 F3 0F C2 05 77 00 00 00 00 cmpeqss xmm0,dword ptr [450080h] -0000000000450009 F7 05 6D 00 00 00 21 00 00 00 test dword ptr [450080h],21h -0000000000450013 0F BA 25 65 00 00 00 03 bt dword ptr [450080h],3 -000000000045001B C4 E3 79 0D 05 5B 00 00 00 03 vblendpd xmm0,xmm0,xmmword ptr [450080h],3 -0000000000450025 C4 E3 79 0F 05 51 00 00 00 04 vpalignr xmm0,xmm0,xmmword ptr [450080h],4 -000000000045002F C4 E3 7D 19 1D 47 00 00 00 0C vextractf128 xmmword ptr [450080h],ymm3,0Ch -0000000000450039 C4 E3 75 46 05 3D 00 00 00 0D vperm2i128 ymm0,ymm1,ymmword ptr [450080h],0Dh -0000000000450043 C4 E3 79 1D 15 33 00 00 00 2C vcvtps2ph mmword ptr [450080h],xmm2,2Ch -000000000045004D C7 05 29 00 00 00 34 12 00 00 mov dword ptr [450080h],1234h -0000000000450057 C1 25 22 00 00 00 03 shl dword ptr [450080h],3 -000000000045005E D1 2D 1C 00 00 00 shr dword ptr [450080h],1 -0000000000450064 48 0F A4 05 13 00 00 00 03 shld qword ptr [450080h],rax,3 -000000000045006D 48 6B 05 0B 00 00 00 15 imul rax,qword ptr [450080h],15h -0000000000450075 C4 E3 FB F0 05 01 00 00 00 15 rorx rax,qword ptr [450080h],15h -000000000045007F C3 ret -0000000000450080 F0 DE BC 9A 78 56 34 12 +00000000003A0000 F3 0F C2 05 F1 00 00 00 00 cmpeqss xmm0,dword ptr [3A00FAh] +00000000003A0009 F7 05 E7 00 00 00 21 00 00 00 test dword ptr [3A00FAh],21h +00000000003A0013 0F BA 25 DF 00 00 00 03 bt dword ptr [3A00FAh],3 +00000000003A001B C4 E3 79 0D 05 D5 00 00 00 03 vblendpd xmm0,xmm0,xmmword ptr [3A00FAh],3 +00000000003A0025 C4 E3 79 0F 05 CB 00 00 00 04 vpalignr xmm0,xmm0,xmmword ptr [3A00FAh],4 +00000000003A002F C4 E3 7D 19 1D C1 00 00 00 0C vextractf128 xmmword ptr [3A00FAh],ymm3,0Ch +00000000003A0039 C4 E3 75 46 05 B7 00 00 00 0D vperm2i128 ymm0,ymm1,ymmword ptr [3A00FAh],0Dh +00000000003A0043 C4 E3 79 1D 15 AD 00 00 00 2C vcvtps2ph mmword ptr [3A00FAh],xmm2,2Ch +00000000003A004D C7 05 A3 00 00 00 34 12 00 00 mov dword ptr [3A00FAh],1234h +00000000003A0057 C1 25 9C 00 00 00 03 shl dword ptr [3A00FAh],3 +00000000003A005E D1 2D 96 00 00 00 shr dword ptr [3A00FAh],1 +00000000003A0064 48 0F A4 05 8D 00 00 00 03 shld qword ptr [3A00FAh],rax,3 +00000000003A006D 48 6B 05 85 00 00 00 15 imul rax,qword ptr [3A00FAh],15h +00000000003A0075 C4 E3 FB F0 05 7B 00 00 00 15 rorx rax,qword ptr [3A00FAh],15h +00000000003A007F F7 05 71 00 00 00 05 00 00 00 test dword ptr [3A00FAh],5 +00000000003A0089 66 48 0F 3A 16 05 66 00 00 00 03 pextrq qword ptr [3A00FAh],xmm0,3 +00000000003A0094 66 48 0F 3A 22 15 5B 00 00 00 05 pinsrq xmm2,qword ptr [3A00FAh],5 +00000000003A009F 66 0F 3A 15 0D 51 00 00 00 04 pextrw word ptr [3A00FAh],xmm1,4 +00000000003A00A9 81 15 47 00 00 00 45 23 01 00 adc dword ptr [3A00FAh],12345h +00000000003A00B3 0F BA 25 3F 00 00 00 34 bt dword ptr [3A00FAh],34h +00000000003A00BB 66 0F BA 3D 36 00 00 00 34 btc word ptr [3A00FAh],34h +00000000003A00C4 0F BA 35 2E 00 00 00 34 btr dword ptr [3A00FAh],34h +00000000003A00CC C1 15 27 00 00 00 04 rcl dword ptr [3A00FAh],4 +00000000003A00D3 48 0F A4 05 1E 00 00 00 04 shld qword ptr [3A00FAh],rax,4 +00000000003A00DC 0F 3A 0F 05 15 00 00 00 04 palignr mm0,mmword ptr [3A00FAh],4 +00000000003A00E5 66 0F 3A DF 1D 0B 00 00 00 04 aeskeygenassist xmm3,xmmword ptr [3A00FAh],4 +00000000003A00EF C4 E3 79 60 15 01 00 00 00 07 vpcmpestrm xmm2,xmmword ptr [3A00FAh],7 +00000000003A00F9 C3 ret +00000000003A00FA F0 DE BC 9A 78 56 34 12 */ struct Code : Xbyak::CodeGenerator { Code() @@ -38,6 +51,19 @@ struct Code : Xbyak::CodeGenerator { shld(qword[rip + label], rax, 3); imul(rax, qword[rip + label], 21); rorx(rax, qword[rip + label], 21); + test(dword[rip + label], 5); + pextrq(ptr[rip + label], xmm0, 3); + pinsrq(xmm2, ptr[rip + label], 5); + pextrw(ptr[rip + label], xmm1, 4); + adc(dword[rip + label], 0x12345); + bt(byte[rip + label], 0x34); + btc(word[rip + label], 0x34); + btr(dword[rip + label], 0x34); + rcl(dword[rip + label], 4); + shld(qword[rip + label], rax, 4); + palignr(mm0, ptr[rip + label], 4); + aeskeygenassist(xmm3, ptr[rip + label], 4); + vpcmpestrm(xmm2, ptr[rip + label], 7); ret(); L(label); dq(0x123456789abcdef0ull); diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index 5ef3419..ae9c16c 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -100,7 +100,7 @@ namespace Xbyak { enum { DEFAULT_MAX_CODE_SIZE = 4096, - VERSION = 0x4851 /* 0xABCD = A.BC(D) */ + VERSION = 0x4860 /* 0xABCD = A.BC(D) */ }; #ifndef MIE_INTEGER_TYPE_DEFINED diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index c07ce78..8bd6eb6 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -1,4 +1,4 @@ -const char *getVersionString() const { return "4.851"; } +const char *getVersionString() const { return "4.86"; } void packssdw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x6B); } void packsswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x63); } void packuswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x67); } |