From d0b2fb623e2f9744a6f19fec7a2f51a8e908ea65 Mon Sep 17 00:00:00 2001 From: MITSUNARI Shigeo Date: Tue, 22 Aug 2017 08:31:32 +0900 Subject: add bnd(0xf2) prefix for MPX --- gen/gen_code.cpp | 1 + xbyak/xbyak_mnemonic.h | 1 + 2 files changed, 2 insertions(+) diff --git a/gen/gen_code.cpp b/gen/gen_code.cpp index 4e5fd89..734fd83 100644 --- a/gen/gen_code.cpp +++ b/gen/gen_code.cpp @@ -615,6 +615,7 @@ void put() //////////////////////////////////////////////////////////////// { const GenericTbl tbl[] = { + { "bnd", 0xf2 }, /* 0xf2 prefix for MPX */ { "cbw", 0x66, 0x98 }, { "cdq", 0x99 }, { "clc", 0xF8 }, diff --git a/xbyak/xbyak_mnemonic.h b/xbyak/xbyak_mnemonic.h index 4dbadb6..74e9759 100644 --- a/xbyak/xbyak_mnemonic.h +++ b/xbyak/xbyak_mnemonic.h @@ -32,6 +32,7 @@ void blendvps(const Xmm& xmm, const Operand& op) { opGen(xmm, op, 0x14, 0x66, is void blsi(const Reg32e& r, const Operand& op) { opGpr(Reg32e(3, r.getBit()), op, r, T_0F38, 0xf3, false); } void blsmsk(const Reg32e& r, const Operand& op) { opGpr(Reg32e(2, r.getBit()), op, r, T_0F38, 0xf3, false); } void blsr(const Reg32e& r, const Operand& op) { opGpr(Reg32e(1, r.getBit()), op, r, T_0F38, 0xf3, false); } +void bnd() { db(0xF2); } void bndcl(const BoundsReg& bnd, const Operand& op) { db(0xF3); opR_ModM(op, i32e, bnd.getIdx(), 0x0F, 0x1A, NONE, !op.isMEM()); } void bndcn(const BoundsReg& bnd, const Operand& op) { db(0xF2); opR_ModM(op, i32e, bnd.getIdx(), 0x0F, 0x1B, NONE, !op.isMEM()); } void bndcu(const BoundsReg& bnd, const Operand& op) { db(0xF2); opR_ModM(op, i32e, bnd.getIdx(), 0x0F, 0x1A, NONE, !op.isMEM()); } -- cgit v1.2.3