Added xacquire/xrelease/k(kreg) modifiers to X86Emitter (backported from next-wip)

This commit is contained in:
kobalicek
2019-01-24 11:36:08 +01:00
parent 3092065f14
commit f06b78fdf4

View File

@@ -357,6 +357,10 @@ public:
//! Use LOCK prefix.
ASMJIT_INLINE This& lock() noexcept { return _addOptions(X86Inst::kOptionLock); }
//! Use XACQUIRE prefix.
ASMJIT_INLINE This& xacquire() noexcept { return _addOptions(X86Inst::kOptionXAcquire); }
//! Use XRELEASE prefix.
ASMJIT_INLINE This& xrelease() noexcept { return _addOptions(X86Inst::kOptionXRelease); }
//! Use REP/REPZ prefix.
ASMJIT_INLINE This& rep(const X86Gp& zcx) noexcept {
@@ -401,6 +405,12 @@ public:
//! Force 4-byte EVEX prefix (AVX512+).
ASMJIT_INLINE This& evex() noexcept { return _addOptions(X86Inst::kOptionEvex); }
//! Use masking {k} (AVX512+).
ASMJIT_INLINE This& k(const X86KReg& kreg) noexcept {
static_cast<This*>(this)->_extraReg.init(kreg);
return *static_cast<This*>(this);
}
//! Use zeroing instead of merging (AVX512+).
ASMJIT_INLINE This& z() noexcept { return _addOptions(X86Inst::kOptionZMask); }
//! Broadcast one element to all other elements (AVX512+).