add detection of xsave

The XSAVE cpuid flag determines if the processor supports the XSAVE
instructions(`xsave`, `xrestor`, `xsetbv`, `xgetbv`).

The OSXSAVE cpuid flag determines if the _operating system_ has XSAVE
**enabled**. Userland code has to use OSXSAVE for features such as AVX
and AVX512 but it still matters to know if the processor itself supports
it but not the operating system such as some virtual-machine contexts.
diff --git a/sample/test_util.cpp b/sample/test_util.cpp
index 4a8dbc7..3405905 100644
--- a/sample/test_util.cpp
+++ b/sample/test_util.cpp
@@ -36,7 +36,8 @@
 		{ Cpu::tE3DN, "e3dn" },
 		{ Cpu::tAESNI, "aesni" },
 		{ Cpu::tRDTSCP, "rdtscp" },
-		{ Cpu::tOSXSAVE, "osxsave(xgetvb)" },
+		{ Cpu::tXSAVE, "xsave(xgetvb)" },
+		{ Cpu::tOSXSAVE, "osxsave" },
 		{ Cpu::tPCLMULQDQ, "pclmulqdq" },
 		{ Cpu::tAVX, "avx" },
 		{ Cpu::tFMA, "fma" },
diff --git a/xbyak/xbyak_util.h b/xbyak/xbyak_util.h
index c57e8ea..74db8e8 100644
--- a/xbyak/xbyak_util.h
+++ b/xbyak/xbyak_util.h
@@ -458,6 +458,7 @@
 	XBYAK_DEFINE_TYPE(74, tPREFETCHITI);
 	XBYAK_DEFINE_TYPE(75, tSERIALIZE);
 	XBYAK_DEFINE_TYPE(76, tUINTR);
+	XBYAK_DEFINE_TYPE(77, tXSAVE);
 
 #undef XBYAK_SPLIT_ID
 #undef XBYAK_DEFINE_TYPE
@@ -526,6 +527,7 @@
 		if (ECX & (1U << 23)) type_ |= tPOPCNT;
 		if (ECX & (1U << 25)) type_ |= tAESNI;
 		if (ECX & (1U << 1)) type_ |= tPCLMULQDQ;
+		if (ECX & (1U << 26)) type_ |= tXSAVE;
 		if (ECX & (1U << 27)) type_ |= tOSXSAVE;
 		if (ECX & (1U << 30)) type_ |= tRDRAND;
 		if (ECX & (1U << 29)) type_ |= tF16C;