diff --git a/readme.md b/readme.md
index 88cf04d..a526c89 100644
--- a/readme.md
+++ b/readme.md
@@ -277,7 +277,7 @@
 
 History
 -------------
-* 2015/Jar/28 ver 4.71 support adcx, adox, cmpxchg
+* 2015/Jar/28 ver 4.71 support adcx, adox, cmpxchg, rdseed, stac
 * 2014/Oct/14 ver 4.70 support MmapAllocator
 * 2014/Jun/13 ver 4.62 disable warning of VC2014
 * 2014/May/30 ver 4.61 support bt, bts, btr, btc
diff --git a/readme.txt b/readme.txt
index e9f757c..c594c02 100644
--- a/readme.txt
+++ b/readme.txt
@@ -296,7 +296,7 @@
 -----------------------------------------------------------------------------
 ◎履歴
 
-2015/01/28 ver 4.71 adcx, adox, cmpxchgのサポート
+2015/01/28 ver 4.71 adcx, adox, cmpxchg, rdseed, stacのサポート
 2014/10/14 ver 4.70 MmapAllocatorのサポート
 2014/06/13 ver 4.62 VC2014で警告抑制
 2014/05/30 ver 4.61 bt, bts, btr, btcのサポート
diff --git a/sample/test_util.cpp b/sample/test_util.cpp
index 3a09095..5860d78 100644
--- a/sample/test_util.cpp
+++ b/sample/test_util.cpp
@@ -53,6 +53,7 @@
 		{ Cpu::tRDSEED, "rdseed" },
 		{ Cpu::tSMAP, "smap" },
 		{ Cpu::tHLE, "hle" },
+		{ Cpu::tRTM, "rtm" },
 	};
 	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_util.h b/xbyak/xbyak_util.h
index 3bff6cd..7f3e336 100644
--- a/xbyak/xbyak_util.h
+++ b/xbyak/xbyak_util.h
@@ -58,7 +58,7 @@
 	CPU detection class
 */
 class Cpu {
-	unsigned int type_;
+	uint64 type_;
 	unsigned int get32bitAsBE(const char *x) const
 	{
 		return x[0] | (x[1] << 8) | (x[2] << 16) | (x[3] << 24);
@@ -124,43 +124,45 @@
 		return ((uint64)edx << 32) | eax;
 #endif
 	}
-	enum Type {
-		NONE = 0,
-		tMMX = 1 << 0,
-		tMMX2 = 1 << 1,
-		tCMOV = 1 << 2,
-		tSSE = 1 << 3,
-		tSSE2 = 1 << 4,
-		tSSE3 = 1 << 5,
-		tSSSE3 = 1 << 6,
-		tSSE41 = 1 << 7,
-		tSSE42 = 1 << 8,
-		tPOPCNT = 1 << 9,
-		tAESNI = 1 << 10,
-		tSSE5 = 1 << 11,
-		tOSXSAVE = 1 << 12,
-		tPCLMULQDQ = 1 << 13,
-		tAVX = 1 << 14,
-		tFMA = 1 << 15,
+	typedef uint64 Type;
+	static const Type NONE = 0;
+	static const Type tMMX = 1 << 0;
+	static const Type tMMX2 = 1 << 1;
+	static const Type tCMOV = 1 << 2;
+	static const Type tSSE = 1 << 3;
+	static const Type tSSE2 = 1 << 4;
+	static const Type tSSE3 = 1 << 5;
+	static const Type tSSSE3 = 1 << 6;
+	static const Type tSSE41 = 1 << 7;
+	static const Type tSSE42 = 1 << 8;
+	static const Type tPOPCNT = 1 << 9;
+	static const Type tAESNI = 1 << 10;
+	static const Type tSSE5 = 1 << 11;
+	static const Type tOSXSAVE = 1 << 12;
+	static const Type tPCLMULQDQ = 1 << 13;
+	static const Type tAVX = 1 << 14;
+	static const Type tFMA = 1 << 15;
 
-		t3DN = 1 << 16,
-		tE3DN = 1 << 17,
-		tSSE4a = 1 << 18,
-		tRDTSCP = 1 << 19,
-		tAVX2 = 1 << 20,
-		tBMI1 = 1 << 21, // andn, bextr, blsi, blsmsk, blsr, tzcnt
-		tBMI2 = 1 << 22, // bzhi, mulx, pdep, pext, rorx, sarx, shlx, shrx
-		tLZCNT = 1 << 23,
-		tENHANCED_REP = 1 << 26, // enhanced rep movsb/stosb
-		tRDRAND = 1 << 27,
-		tADX = 1 << 28, // adcx, adox
-		tRDSEED = 1 << 29, // rdseed
-		tSMAP = 1 << 30, // stac
-		tHLE = 1 << 31, // xacquire, xrelease, xtest
+	static const Type t3DN = 1 << 16;
+	static const Type tE3DN = 1 << 17;
+	static const Type tSSE4a = 1 << 18;
+	static const Type tRDTSCP = 1 << 19;
+	static const Type tAVX2 = 1 << 20;
+	static const Type tBMI1 = 1 << 21; // andn, bextr, blsi, blsmsk, blsr, tzcnt
+	static const Type tBMI2 = 1 << 22; // bzhi, mulx, pdep, pext, rorx, sarx, shlx, shrx
+	static const Type tLZCNT = 1 << 23;
 
-		tINTEL = 1 << 24,
-		tAMD = 1 << 25
-	};
+	static const Type tINTEL = 1 << 24;
+	static const Type tAMD = 1 << 25;
+
+	static const Type tENHANCED_REP = 1 << 26; // enhanced rep movsb/stosb
+	static const Type tRDRAND = 1 << 27;
+	static const Type tADX = 1 << 28; // adcx, adox
+	static const Type tRDSEED = 1 << 29; // rdseed
+	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
+
 	Cpu()
 		: type_(NONE)
 	{
@@ -218,6 +220,7 @@
 			if (data[1] & (1U << 19)) type_ |= tADX;
 			if (data[1] & (1U << 20)) type_ |= tSMAP;
 			if (data[1] & (1U << 4)) type_ |= tHLE;
+			if (data[1] & (1U << 11)) type_ |= tRTM;
 		}
 		setFamily();
 	}
