diff --git a/gen/avx_type.hpp b/gen/avx_type.hpp index 4652d987..c4c94630 100644 --- a/gen/avx_type.hpp +++ b/gen/avx_type.hpp @@ -1,7 +1,6 @@ #include // copy CodeGenerator::AVXtype enum AVXtype { - // low 3 bit T_N1 = 1, T_N2 = 2, T_N4 = 3, @@ -9,9 +8,9 @@ T_N16 = 5, T_N32 = 6, T_NX_MASK = 7, - // + T_DUP = T_NX_MASK,//1 << 4, // N = (8, 32, 64) T_N_VL = 1 << 3, // N * (1, 2, 4) for VL - T_DUP = 1 << 4, // N = (8, 32, 64) + // 1 << 4 is free T_66 = 1 << 5, // pp = 1 T_F3 = 1 << 6, // pp = 2 T_F2 = T_66 | T_F3, // pp = 3 @@ -55,7 +54,7 @@ std::string type2String(int type) { std::string str; int low = type & T_NX_MASK; - if (0 < low) { + if (0 < low && low < 7) { const char *tbl[8] = { "T_N1", "T_N2", "T_N4", "T_N8", "T_N16", "T_N32" }; @@ -66,7 +65,7 @@ std::string type2String(int type) if (!str.empty()) str += " | "; str += "T_N_VL"; } - if (type & T_DUP) { + if ((type & T_NX_MASK) == T_DUP) { if (!str.empty()) str += " | "; str += "T_DUP"; } diff --git a/xbyak/xbyak.h b/xbyak/xbyak.h index bbeab0d2..f7190107 100644 --- a/xbyak/xbyak.h +++ b/xbyak/xbyak.h @@ -1757,9 +1757,9 @@ class CodeGenerator : public CodeArray { T_N16 = 5, T_N32 = 6, T_NX_MASK = 7, - // + T_DUP = T_NX_MASK,//1 << 4, // N = (8, 32, 64) T_N_VL = 1 << 3, // N * (1, 2, 4) for VL - T_DUP = 1 << 4, // N = (8, 32, 64) + // 1 << 4 is free T_66 = 1 << 5, // pp = 1 T_F3 = 1 << 6, // pp = 2 T_F2 = T_66 | T_F3, // pp = 3 @@ -1861,7 +1861,7 @@ class CodeGenerator : public CodeArray { LL = (VL == 512) ? 2 : (VL == 256) ? 1 : 0; if (b) { disp8N = ((type & T_B16) == T_B16) ? 2 : (type & T_B32) ? 4 : 8; - } else if (type & T_DUP) { + } else if ((type & T_NX_MASK) == T_DUP) { disp8N = VL == 128 ? 8 : VL == 256 ? 32 : 64; } else { if ((type & (T_NX_MASK | T_N_VL)) == 0) { @@ -3010,10 +3010,6 @@ class CodeGenerator : public CodeArray { size -= len; } } - void adcx2(const Reg32e& r1, const Operand& op) - { - opROO(Reg(), op, r1, T_66, 0x66); - } #ifndef XBYAK_DONT_READ_LIST #include "xbyak_mnemonic.h" /*