From 9d5bc03b264bc66434337db634af82e5f67db217 Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Sun, 24 May 2015 14:44:45 +0900 Subject: support detection of F16C --- readme.md | 3 ++- readme.txt | 3 ++- sample/test_util.cpp | 1 + xbyak/xbyak.h | 2 +- xbyak/xbyak_mnemonic.h | 2 +- xbyak/xbyak_util.h | 2 ++ 6 files changed, 9 insertions(+), 4 deletions(-) diff --git a/readme.md b/readme.md index bc6d6d9..3b362d9 100644 --- a/readme.md +++ b/readme.md @@ -1,5 +1,5 @@ -Xbyak 4.81 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++ +Xbyak 4.82 ; 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/May/24 ver 4.82 support detection of F16C * 2015/Apr/25 ver 4.81 fix the condition to throw exception for setSize(thanks to whyisthisfieldhere) * 2015/Apr/22 ver 4.80 rip supports label(thanks to whyisthisfieldhere) * 2015/Jar/28 ver 4.71 support adcx, adox, cmpxchg, rdseed, stac diff --git a/readme.txt b/readme.txt index 33ca1b8..82835fd 100644 --- a/readme.txt +++ b/readme.txt @@ -1,5 +1,5 @@ - C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 4.81 + C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 4.82 ----------------------------------------------------------------------------- ◎概要 @@ -296,6 +296,7 @@ cybozulibは単体テストでのみ利用されていて、xbyak/ディレク ----------------------------------------------------------------------------- ◎履歴 +2015/05/24 ver 4.82 F16Cが使えるかどうかの判定追加 2015/04/25 ver 4.81 setSizeが例外を投げる条件を修正(thanks to whyisthisfieldhere) 2015/04/22 ver 4.80 rip相対でLabelのサポート(thanks to whyisthisfieldhere) 2015/01/28 ver 4.71 adcx, adox, cmpxchg, rdseed, stacのサポート diff --git a/sample/test_util.cpp b/sample/test_util.cpp index d60c435..794dc8a 100644 --- a/sample/test_util.cpp +++ b/sample/test_util.cpp @@ -53,6 +53,7 @@ void putCPUinfo() { Cpu::tSMAP, "smap" }, { Cpu::tHLE, "hle" }, { Cpu::tRTM, "rtm" }, + { Cpu::tF16C, "f16c" }, }; for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) { if (cpu.has(tbl[i].type)) printf(" %s", tbl[i].str); diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index f81138c..008d6f0 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -96,7 +96,7 @@ namespace Xbyak { enum { DEFAULT_MAX_CODE_SIZE = 4096, - VERSION = 0x4810 /* 0xABCD = A.BC(D) */ + VERSION = 0x4820 /* 0xABCD = A.BC(D) */ }; #ifndef MIE_INTEGER_TYPE_DEFINED diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 2005ad0..4763b46 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -1,4 +1,4 @@ -const char *getVersionString() const { return "4.81"; } +const char *getVersionString() const { return "4.82"; } 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); } diff --git a/xbyak/xbyak_util.h b/xbyak/xbyak_util.h index 166f3e3..993252d 100644 --- a/xbyak/xbyak_util.h +++ b/xbyak/xbyak_util.h @@ -162,6 +162,7 @@ public: static const Type tSMAP = 1 << 30; // stac static const Type tHLE = uint64(1) << 31; // xacquire, xrelease, xtest static const Type tRTM = uint64(1) << 32; // xbegin, xend, xabort + static const Type tF16C = uint64(1) << 33; // vcvtph2ps, vcvtps2ph Cpu() : type_(NONE) @@ -196,6 +197,7 @@ public: if (data[2] & (1U << 1)) type_ |= tPCLMULQDQ; if (data[2] & (1U << 27)) type_ |= tOSXSAVE; if (data[2] & (1U << 30)) type_ |= tRDRAND; + if (data[2] & (1U << 29)) type_ |= tF16C; if (data[3] & (1U << 15)) type_ |= tCMOV; if (data[3] & (1U << 23)) type_ |= tMMX; -- cgit v1.2.3