mirror of
https://github.com/asmjit/asmjit.git
synced 2025-12-17 04:24:37 +03:00
Added xacquire/xrelease/k(kreg) modifiers to X86Emitter (backported from next-wip)
This commit is contained in:
@@ -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+).
|
||||
|
||||
Reference in New Issue
Block a user