typo of OSXSAVE
This commit is contained in:
parent
eb18bc1be5
commit
82c2ea58c0
8 changed files with 16 additions and 14 deletions
|
@ -1356,7 +1356,7 @@ void put()
|
||||||
printf("void vpinsrd(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XMcvt(x1, x2, op, !op.isMEM(), Operand::XMM, MM_0F3A | PP_66, 0x22, false, 0); db(imm); }\n");
|
printf("void vpinsrd(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XMcvt(x1, x2, op, !op.isMEM(), Operand::XMM, MM_0F3A | PP_66, 0x22, false, 0); db(imm); }\n");
|
||||||
printf("void vpinsrd(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XMcvt(x, x, op, !op.isMEM(), Operand::XMM, MM_0F3A | PP_66, 0x22, false, 0); db(imm); }\n");
|
printf("void vpinsrd(const Xmm& x, const Operand& op, uint8 imm) { if (!op.isREG(32) && !op.isMEM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XMcvt(x, x, op, !op.isMEM(), Operand::XMM, MM_0F3A | PP_66, 0x22, false, 0); db(imm); }\n");
|
||||||
|
|
||||||
printf("void vpmovmskb(const Reg32e& r, const Xmm& x) { opAVX_X_X_XM(Xmm(r.getIdx()), xm0, x, MM_0F | PP_66, 0xD7, false); }\n");
|
printf("void vpmovmskb(const Reg32e& r, const Xmm& x) { if (x.isYMM()) throw ERR_BAD_COMBINATION; opAVX_X_X_XM(Xmm(r.getIdx()), xm0, x, MM_0F | PP_66, 0xD7, false); }\n");
|
||||||
|
|
||||||
}
|
}
|
||||||
// (x, x, imm), (x, imm)
|
// (x, x, imm), (x, imm)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
Xbyak 3.00 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
|
Xbyak 3.01 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
|
||||||
=============
|
=============
|
||||||
|
|
||||||
Abstract
|
Abstract
|
||||||
|
@ -202,6 +202,7 @@ http://www.opensource.org/licenses/bsd-license.php
|
||||||
History
|
History
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
|
* 2011/May/24 ver 3.01 fix typo of OSXSAVE
|
||||||
* 2011/May/23 ver 3.00 add vcmpeqps and so on
|
* 2011/May/23 ver 3.00 add vcmpeqps and so on
|
||||||
* 2011/Feb/16 ver 2.994 beta add vmovq for 32-bit mode(I forgot it)
|
* 2011/Feb/16 ver 2.994 beta add vmovq for 32-bit mode(I forgot it)
|
||||||
* 2011/Feb/16 ver 2.993 beta remove cvtReg to avoid thread unsafe
|
* 2011/Feb/16 ver 2.993 beta remove cvtReg to avoid thread unsafe
|
||||||
|
@ -247,5 +248,5 @@ Author
|
||||||
MITSUNARI Shigeo(herumi at nifty dot com)
|
MITSUNARI Shigeo(herumi at nifty dot com)
|
||||||
|
|
||||||
---
|
---
|
||||||
$Revision: 1.9 $
|
$Revision: 1.10 $
|
||||||
$Date: 2011/03/23 04:50:42 $
|
$Date: 2011/03/24 06:32:21 $
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
|
|
||||||
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.00
|
C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak version 3.01
|
||||||
|
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
◎概要
|
◎概要
|
||||||
|
@ -214,6 +214,7 @@ sample/{echo,hello}.bfは http://www.kmonos.net/alang/etc/brainfuck.php から
|
||||||
-----------------------------------------------------------------------------
|
-----------------------------------------------------------------------------
|
||||||
◎履歴
|
◎履歴
|
||||||
|
|
||||||
|
2011/03/24 ver 3.01 fix typo of OSXSAVE
|
||||||
2011/03/23 ver 3.00 vcmpeqpsなどを追加
|
2011/03/23 ver 3.00 vcmpeqpsなどを追加
|
||||||
2011/02/16 ver 2.994 beta add vmovq for 32-bit mode(I forgot it)
|
2011/02/16 ver 2.994 beta add vmovq for 32-bit mode(I forgot it)
|
||||||
2011/02/16 ver 2.993 beta remove cvtReg to avoid thread unsafe
|
2011/02/16 ver 2.993 beta remove cvtReg to avoid thread unsafe
|
||||||
|
|
|
@ -38,7 +38,7 @@ void putCPUinfo()
|
||||||
{ Cpu::tSSE5, "sse5" },
|
{ Cpu::tSSE5, "sse5" },
|
||||||
{ Cpu::tAESNI, "aesni" },
|
{ Cpu::tAESNI, "aesni" },
|
||||||
{ Cpu::tRDTSCP, "rdtscp" },
|
{ Cpu::tRDTSCP, "rdtscp" },
|
||||||
{ Cpu::tOSXSACE, "osxsace(xgetvb)" },
|
{ Cpu::tOSXSAVE, "osxsave(xgetvb)" },
|
||||||
{ Cpu::tPCLMULQDQ, "pclmulqdq" },
|
{ Cpu::tPCLMULQDQ, "pclmulqdq" },
|
||||||
{ Cpu::tAVX, "avx" },
|
{ Cpu::tAVX, "avx" },
|
||||||
{ Cpu::tFMA, "fma" },
|
{ Cpu::tFMA, "fma" },
|
||||||
|
|
2
test/test_nm.sh
Executable file → Normal file
2
test/test_nm.sh
Executable file → Normal file
|
@ -14,7 +14,7 @@ else if ($1 == "64") then
|
||||||
set OPT3=win64
|
set OPT3=win64
|
||||||
set FILTER=./normalize_prefix
|
set FILTER=./normalize_prefix
|
||||||
else if ($1 == "Y64") then
|
else if ($1 == "Y64") then
|
||||||
echo "nasm(64bit)"
|
echo "yasm(64bit)"
|
||||||
set EXE=yasm
|
set EXE=yasm
|
||||||
set OPT2="-DUSE_YASM -DXBYAK64"
|
set OPT2="-DUSE_YASM -DXBYAK64"
|
||||||
set OPT3=win64
|
set OPT3=win64
|
||||||
|
|
|
@ -5,9 +5,9 @@
|
||||||
@file xbyak.h
|
@file xbyak.h
|
||||||
@brief Xbyak ; JIT assembler for x86(IA32)/x64 by C++
|
@brief Xbyak ; JIT assembler for x86(IA32)/x64 by C++
|
||||||
@author herumi
|
@author herumi
|
||||||
@version $Revision: 1.248 $
|
@version $Revision: 1.249 $
|
||||||
@url http://homepage1.nifty.com/herumi/soft/xbyak.html
|
@url http://homepage1.nifty.com/herumi/soft/xbyak.html
|
||||||
@date $Date: 2011/03/23 04:47:06 $
|
@date $Date: 2011/03/24 06:32:21 $
|
||||||
@note modified new BSD license
|
@note modified new BSD license
|
||||||
http://www.opensource.org/licenses/bsd-license.php
|
http://www.opensource.org/licenses/bsd-license.php
|
||||||
*/
|
*/
|
||||||
|
@ -51,7 +51,7 @@ namespace Xbyak {
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
DEFAULT_MAX_CODE_SIZE = 4096,
|
DEFAULT_MAX_CODE_SIZE = 4096,
|
||||||
VERSION = 0x3000, /* 0xABCD = A.BC(D) */
|
VERSION = 0x3010, /* 0xABCD = A.BC(D) */
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifndef MIE_INTEGER_TYPE_DEFINED
|
#ifndef MIE_INTEGER_TYPE_DEFINED
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
const char *getVersionString() const { return "3.00"; }
|
const char *getVersionString() const { return "3.01"; }
|
||||||
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); }
|
||||||
|
|
|
@ -92,7 +92,7 @@ public:
|
||||||
tPOPCNT = 1 << 9,
|
tPOPCNT = 1 << 9,
|
||||||
tAESNI = 1 << 10,
|
tAESNI = 1 << 10,
|
||||||
tSSE5 = 1 << 11,
|
tSSE5 = 1 << 11,
|
||||||
tOSXSACE = 1 << 12,
|
tOSXSAVE = 1 << 12,
|
||||||
tPCLMULQDQ = 1 << 13,
|
tPCLMULQDQ = 1 << 13,
|
||||||
tAVX = 1 << 14,
|
tAVX = 1 << 14,
|
||||||
tFMA = 1 << 15,
|
tFMA = 1 << 15,
|
||||||
|
@ -134,9 +134,9 @@ public:
|
||||||
if (data[2] & (1U << 23)) type_ |= tPOPCNT;
|
if (data[2] & (1U << 23)) type_ |= tPOPCNT;
|
||||||
if (data[2] & (1U << 25)) type_ |= tAESNI;
|
if (data[2] & (1U << 25)) type_ |= tAESNI;
|
||||||
if (data[2] & (1U << 1)) type_ |= tPCLMULQDQ;
|
if (data[2] & (1U << 1)) type_ |= tPCLMULQDQ;
|
||||||
if (data[2] & (1U << 27)) type_ |= tOSXSACE;
|
if (data[2] & (1U << 27)) type_ |= tOSXSAVE;
|
||||||
|
|
||||||
if (type_ & tOSXSACE) {
|
if (type_ & tOSXSAVE) {
|
||||||
// check XFEATURE_ENABLED_MASK[2:1] = '11b'
|
// check XFEATURE_ENABLED_MASK[2:1] = '11b'
|
||||||
uint64 bv = getXfeature();
|
uint64 bv = getXfeature();
|
||||||
if ((bv & 6) == 6) {
|
if ((bv & 6) == 6) {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue