update document and version

This commit is contained in:
MITSUNARI Shigeo 2013-05-30 17:13:56 +09:00
parent 362d379b3d
commit a2db4e9369
4 changed files with 15 additions and 13 deletions

View File

@ -1,5 +1,5 @@
Xbyak 3.80 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ Xbyak 4.00 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
============= =============
Abstract Abstract
@ -14,7 +14,7 @@ you can use Xbyak's functions at once if xbyak.h is included.
### Supported Instructions Sets ### Supported Instructions Sets
MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(*partial*)/AVX MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(*partial*)/AVX/AVX2/FMA/VEX-encoded GPR
### Supported OS ### Supported OS
@ -24,9 +24,9 @@ MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(*partial*)/AVX
### Supported Compilers ### Supported Compilers
* Visual Studio C++ 2005 Express Ed., VC2008 Pro, VC2010 * Visual Studio C++ VC2008 Pro, VC2010, VC2012
* gcc 4.5 * gcc 4.7
* mingw 3.4.2 * cygwin gcc 4.5.3
* icc 7.2 * icc 7.2
>Note: Xbyak uses and(), or(), xor(), not() functions, so "-fno-operator-names" option is required on gcc. >Note: Xbyak uses and(), or(), xor(), not() functions, so "-fno-operator-names" option is required on gcc.
@ -101,6 +101,7 @@ You can omit a destination for almost 3-op mnemonics.
vaddps(xmm1, xmm2, xmm3); // xmm1 <- xmm2 + xmm3 vaddps(xmm1, xmm2, xmm3); // xmm1 <- xmm2 + xmm3
vaddps(xmm2, xmm3); // xmm2 <- xmm2 + xmm3 vaddps(xmm2, xmm3); // xmm2 <- xmm2 + xmm3
vaddps(xmm2, xmm3, ptr [rax]); // use ptr to access memory vaddps(xmm2, xmm3, ptr [rax]); // use ptr to access memory
vgatherdpd(xmm1, ptr [ebp+123+xmm2*4], xmm3);
### Label ### Label
@ -226,6 +227,7 @@ http://opensource.org/licenses/BSD-3-Clause
History History
------------- -------------
* 2013/May/30 ver 4.00 support AVX2, VEX-encoded GPR-instructions
* 2013/Mar/27 ver 3.80 support mov(reg, "label"); * 2013/Mar/27 ver 3.80 support mov(reg, "label");
* 2013/Mar/13 ver 3.76 add cqo(), jcxz(), jecxz(), jrcxz() * 2013/Mar/13 ver 3.76 add cqo(), jcxz(), jecxz(), jrcxz()
* 2013/Jan/15 ver 3.75 add setSize() to modify generated code * 2013/Jan/15 ver 3.75 add setSize() to modify generated code

View File

@ -1,5 +1,5 @@
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 3.80 C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 4.00
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
◎概要 ◎概要
@ -14,12 +14,11 @@
xbyak.hをインクルードするだけですぐ利用することができます。 xbyak.hをインクルードするだけですぐ利用することができます。
C++の枠組み内で閉じているため、外部アセンブラは不要です。 C++の枠組み内で閉じているため、外部アセンブラは不要です。
32bit/64bit両対応です。 32bit/64bit両対応です。
対応ニーモニック:特権命令除くx86, MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(一部)/AVX 対応ニーモニック:特権命令除くx86, MMX/MMX2/SSE/SSE2/SSE3/SSSE3/SSE4/FPU(一部)/AVX/AVX2/FMA/VEX-encoded GPR
・Windows Xp(32bit, 64bit), Vista/Linux(32bit, 64bit)/Intel Mac対応 ・Windows Xp(32bit, 64bit), Windows 7/Linux(32bit, 64bit)/Intel Mac対応
Windows Xp上ではVC2005 Express Ed., VC2008, VC2010, Windows Xp, Windows 7上ではVC2008, VC2010, VC2012
Windows Vista Linux (kernel 3.8)上ではgcc 4.7.3
Linux (kernel 2.4.32)上ではgcc 4.5.0, CentOS 5.1上ではgcc 4.1.2
Intel Mac Intel Mac
などで動作確認をしています。 などで動作確認をしています。
@ -245,6 +244,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から
----------------------------------------------------------------------------- -----------------------------------------------------------------------------
◎履歴 ◎履歴
2013/05/30 ver 4.00 AVX2, VEX-encoded GPR-instructionをサポート
2013/03/27 ver 3.80 mov(reg, "label");をサポート 2013/03/27 ver 3.80 mov(reg, "label");をサポート
2013/03/13 ver 3.76 cqo, jcxz, jecxz, jrcxz追加 2013/03/13 ver 3.76 cqo, jcxz, jecxz, jrcxz追加
2013/01/15 ver 3.75 生成されたコードを修正するためにsetSize()を追加 2013/01/15 ver 3.75 生成されたコードを修正するためにsetSize()を追加

View File

@ -72,7 +72,7 @@ namespace Xbyak {
enum { enum {
DEFAULT_MAX_CODE_SIZE = 4096, DEFAULT_MAX_CODE_SIZE = 4096,
VERSION = 0x3800 /* 0xABCD = A.BC(D) */ VERSION = 0x4000 /* 0xABCD = A.BC(D) */
}; };
#ifndef MIE_INTEGER_TYPE_DEFINED #ifndef MIE_INTEGER_TYPE_DEFINED

View File

@ -1,4 +1,4 @@
const char *getVersionString() const { return "3.80"; } const char *getVersionString() const { return "4.00"; }
void packssdw(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x6B); } 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 packsswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x63); }
void packuswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x67); } void packuswb(const Mmx& mmx, const Operand& op) { opMMX(mmx, op, 0x67); }