diff options
-rw-r--r-- | xbyak/xbyak.h | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index 292fcc7..d53b37b 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -1897,8 +1897,8 @@ private: bool R = reg.isExtIdx(); bool X3 = (x && x->isExtIdx()) || (base.isSIMD() && base.isExtIdx2()); - bool B4 = base.isREG() && base.isExtIdx2(); - bool X4 = x && (x->isREG() && x->isExtIdx2()); + uint8_t B4 = (base.isREG() && base.isExtIdx2()) ? 8 : 0; + uint8_t U = (x && (x->isREG() && x->isExtIdx2())) ? 0 : 4; bool B = base.isExtIdx(); bool Rp = reg.isExtIdx2(); int LL; @@ -1935,8 +1935,8 @@ private: if (aaa == 0) aaa = verifyDuplicate(base.getOpmaskIdx(), reg.getOpmaskIdx(), (v ? v->getOpmaskIdx() : 0), ERR_OPMASK_IS_ALREADY_SET); if (aaa == 0) z = 0; // clear T_z if mask is not set db(0x62); - db((R ? 0 : 0x80) | (X3 ? 0 : 0x40) | (B ? 0 : 0x20) | (Rp ? 0 : 0x10) | (B4 ? 8 : 0) | mmm); - db((w == 1 ? 0x80 : 0) | ((vvvv & 15) << 3) | (X4 ? 0 : 4) | (pp & 3)); + db((R ? 0 : 0x80) | (X3 ? 0 : 0x40) | (B ? 0 : 0x20) | (Rp ? 0 : 0x10) | B4 | mmm); + db((w == 1 ? 0x80 : 0) | ((vvvv & 15) << 3) | U | (pp & 3)); db((z ? 0x80 : 0) | ((LL & 3) << 5) | (b ? 0x10 : 0) | (V4 ? 0 : 8) | (aaa & 7)); db(code); return disp8N; |