support detection of F16C
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 @@
 
 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 @@
 -----------------------------------------------------------------------------

 ◎履歴

 

+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 @@
 		{ 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 @@
 
 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 @@
 	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 @@
 		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;