Allow non-conflicting updates to OpmaskIdx and Rounding.
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h
index 10ef35a..56f8155 100644
--- a/xbyak/xbyak.h
+++ b/xbyak/xbyak.h
@@ -644,12 +644,12 @@
void setBit(int bit);
void setOpmaskIdx(int idx, bool /*ignore_idx0*/ = true)
{
- if (mask_) XBYAK_THROW(ERR_OPMASK_IS_ALREADY_SET)
+ if (mask_ && (mask_ != idx)) XBYAK_THROW(ERR_OPMASK_IS_ALREADY_SET)
mask_ = idx;
}
void setRounding(int idx)
{
- if (rounding_) XBYAK_THROW(ERR_ROUNDING_IS_ALREADY_SET)
+ if (rounding_ && (rounding_ != idx)) XBYAK_THROW(ERR_ROUNDING_IS_ALREADY_SET)
rounding_ = idx;
}
void setZero() { zero_ = true; }