add clui
diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp
index 9568053..e0fb14f 100644
--- a/gen/gen_code.cpp
+++ b/gen/gen_code.cpp
@@ -659,6 +659,7 @@
 			{ "cli", 0xFA },
 			{ "cmc", 0xF5 },
 
+			{ "clui", 0xF3, 0x0F, 0x01, 0xEE },
 			{ "cpuid", 0x0F, 0xA2 },
 			{ "cwd", 0x66, 0x99 },
 			{ "cwde", 0x98 },
diff --git a/test/misc.cpp b/test/misc.cpp
index 2090dca..6bf8d3d 100644
--- a/test/misc.cpp
+++ b/test/misc.cpp
@@ -1949,6 +1949,7 @@
 			movdiri(ptr[rax+r12], r9);
 			movdiri(ptr[rax+r12*2+4], r9d);
 			movdir64b(r10, ptr[r8]);
+			clui();
 #endif
 		}
 	} c;
@@ -1972,6 +1973,7 @@
 		0x4e, 0x0f, 0x38, 0xf9, 0x0c, 0x20, // movdiri
 		0x46, 0x0f, 0x38, 0xf9, 0x4c, 0x60, 0x04, // movdiri
 		0x66, 0x45, 0x0f, 0x38, 0xf8, 0x10, // movdir64b
+		0xf3, 0x0f, 0x01, 0xee, // clui
 #endif
 	};
 	const size_t n = sizeof(tbl) / sizeof(tbl[0]);
@@ -2157,4 +2159,5 @@
 	CYBOZU_TEST_EQUAL(c.getSize(), n);
 	CYBOZU_TEST_EQUAL_ARRAY(c.getCode(), tbl, n);
 }
+
 #endif
diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h
index 7c74e54..792ea96 100644
--- a/xbyak/xbyak_mnemonic.h
+++ b/xbyak/xbyak_mnemonic.h
@@ -65,6 +65,7 @@
 void clflush(const Address& addr) { opModM(addr, Reg32(7), 0x0F, 0xAE); }
 void clflushopt(const Address& addr) { db(0x66); opModM(addr, Reg32(7), 0x0F, 0xAE); }
 void cli() { db(0xFA); }
+void clui() { db(0xF3); db(0x0F); db(0x01); db(0xEE); }
 void clwb(const Address& addr) { db(0x66); opMIB(addr, esi, 0x0F, 0xAE); }
 void clzero() { db(0x0F); db(0x01); db(0xFC); }
 void cmc() { db(0xF5); }