recover mask
diff --git a/xbyak/xbyak_util.h b/xbyak/xbyak_util.h
index 3c4e97d..dd42879 100644
--- a/xbyak/xbyak_util.h
+++ b/xbyak/xbyak_util.h
@@ -150,6 +150,10 @@
 	{
 		return x[0] | (x[1] << 8) | (x[2] << 16) | (x[3] << 24);
 	}
+	uint32_t mask(int n) const
+	{
+		return (1U << n) - 1;
+	}
 	// [EBX:ECX:EDX] == s?
 	bool isEqualStr(uint32_t EBX, uint32_t ECX, uint32_t EDX, const char s[12]) const
 	{
@@ -712,7 +716,7 @@
 		}
 		if (has(tAVX10) && maxNum >= 0x24) {
 			getCpuidEx(0x24, 0, data);
-			avx10version_ = EBX & 0x7F;
+			avx10version_ = EBX & mask(7);
 		}
 		setFamily();
 		setNumCores();