add vptest for ymm
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index a27c4b1..b3a3863 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -1244,7 +1244,7 @@
 			{ 0x70, "pshufhw", T_0F | T_F3 | T_YMM | T_EVEX, true },
 			{ 0x70, "pshuflw", T_0F | T_F2 | T_YMM | T_EVEX, true },
 
-			{ 0x17, "ptest", T_0F38 | T_66, false },
+			{ 0x17, "ptest", T_0F38 | T_66 | T_YMM, false },
 			{ 0x53, "rcpps", T_0F | T_YMM, false },
 			{ 0x52, "rsqrtps", T_0F | T_YMM, false },
 
diff --git a/readme.md b/readme.md
index 72e78f0..e56285a 100644
--- a/readme.md
+++ b/readme.md
@@ -1,5 +1,5 @@
 
-Xbyak 5.10 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
+Xbyak 5.11 ; JIT assembler for x86(IA32), x64(AMD64, x86-64) by C++
 =============
 
 Abstract
@@ -323,6 +323,7 @@
 
 History
 -------------
+* 2016/Nov/20 ver 5.11 lost vptest for ymm(thanks to gregory38)
 * 2016/Nov/20 ver 5.10 add addressing [rip+&var]
 * 2016/Sep/29 ver 5.03 fix detection ERR_INVALID_OPMASK_WITH_MEMORY(thanks to PVS-Studio)
 * 2016/Aug/15 ver 5.02 xbyak does not include xbyak_bin2hex.h
diff --git a/readme.txt b/readme.txt
index 6773150..eced1e9 100644
--- a/readme.txt
+++ b/readme.txt
@@ -1,5 +1,5 @@
 

-    C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.10

+    C++用x86(IA-32), x64(AMD64, x86-64) JITアセンブラ Xbyak 5.11

 

 -----------------------------------------------------------------------------

 ◎概要

@@ -333,6 +333,7 @@
 -----------------------------------------------------------------------------

 ◎履歴

 

+2016/11/20 ver 5.11 何故か消えていたvptest for ymm追加(thanks to gregory38)

 2016/11/20 ver 5.10 [rip+&var]の形のアドレッシング追加

 2016/09/29 ver 5.03 ERR_INVALID_OPMASK_WITH_MEMORYの判定ミス修正(thanks to PVS-Studio)

 2016/08/15 ver 5.02 xbyak_bin2hex.hをincludeしない

diff --git a/test/make_nm.cpp b/test/make_nm.cpp
index 477a77f..e002c74 100644
--- a/test/make_nm.cpp
+++ b/test/make_nm.cpp
@@ -1734,7 +1734,7 @@
 			{ "vpmovzxwq", false },
 			{ "vpmovzxdq", false },
 
-			{ "vptest", false },
+			{ "vptest", true },
 			{ "vrcpps", true },
 			{ "vrcpss", false },
 
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index ffae219..305c6ca 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -105,7 +105,7 @@
 
 enum {
 	DEFAULT_MAX_CODE_SIZE = 4096,
-	VERSION = 0x5100 /* 0xABCD = A.BC(D) */
+	VERSION = 0x5110 /* 0xABCD = A.BC(D) */
 };
 
 #ifndef MIE_INTEGER_TYPE_DEFINED
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index 27f3737..e782477 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -1,4 +1,4 @@
-const char *getVersionString() const { return "5.10"; }
+const char *getVersionString() const { return "5.11"; }
 void adc(const Operand& op, uint32 imm) { opRM_I(op, imm, 0x10, 2); }
 void adc(const Operand& op1, const Operand& op2) { opRM_RM(op1, op2, 0x10); }
 void adcx(const Reg32e& reg, const Operand& op) { opGen(reg, op, 0xF6, 0x66, isREG32_REG32orMEM, NONE, 0x38); }
@@ -1201,7 +1201,7 @@
 void vpsubusb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F | T_YMM | T_EVEX, 0xD8); }
 void vpsubusw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F | T_YMM | T_EVEX, 0xD9); }
 void vpsubw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F | T_YMM | T_EVEX, 0xF9); }
-void vptest(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, T_66 | T_0F38, 0x17); }
+void vptest(const Xmm& xm, const Operand& op) { opAVX_X_XM_IMM(xm, op, T_66 | T_0F38 | T_YMM, 0x17); }
 void vpunpckhbw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F | T_YMM | T_EVEX, 0x68); }
 void vpunpckhdq(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F | T_EW0 | T_YMM | T_EVEX | T_B32, 0x6A); }
 void vpunpckhqdq(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_66 | T_0F | T_EW1 | T_YMM | T_EVEX | T_B64, 0x6D); }