aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--gen/gen_code.cpp1
-rw-r--r--test/misc.cpp3
-rw-r--r--xbyak/xbyak_mnemonic.h1
3 files changed, 5 insertions, 0 deletions
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 @@ void put()
{ "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 @@ CYBOZU_TEST_AUTO(misc)
movdiri(ptr[rax+r12], r9);
movdiri(ptr[rax+r12*2+4], r9d);
movdir64b(r10, ptr[r8]);
+ clui();
#endif
}
} c;
@@ -1972,6 +1973,7 @@ CYBOZU_TEST_AUTO(misc)
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_AUTO(prefetchiti)
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 cldemote(const Address& addr) { opMIB(addr, eax, 0x0F, 0x1C); }
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); }