add vpalignr
This commit is contained in:
parent
9715d16323
commit
2a159d35e1
3 changed files with 10 additions and 7 deletions
|
@ -1061,7 +1061,7 @@ void put()
|
||||||
{ 0xDC, "paddusb", T_0F | T_66 | T_YMM, false, true },
|
{ 0xDC, "paddusb", T_0F | T_66 | T_YMM, false, true },
|
||||||
{ 0xDD, "paddusw", T_0F | T_66 | T_YMM, false, true },
|
{ 0xDD, "paddusw", T_0F | T_66 | T_YMM, false, true },
|
||||||
|
|
||||||
{ 0x0F, "palignr", T_0F3A | T_66 | T_YMM, true, true },
|
{ 0x0F, "palignr", T_0F3A | T_66 | T_YMM | T_EVEX, true, true },
|
||||||
|
|
||||||
{ 0xDB, "pand", T_0F | T_66 | T_YMM, false, true },
|
{ 0xDB, "pand", T_0F | T_66 | T_YMM, false, true },
|
||||||
{ 0xDF, "pandn", T_0F | T_66 | T_YMM, false, true },
|
{ 0xDF, "pandn", T_0F | T_66 | T_YMM, false, true },
|
||||||
|
|
|
@ -2719,19 +2719,22 @@ public:
|
||||||
put(p.name, XMM_KZ, _XMM, _XMM|p.mem);
|
put(p.name, XMM_KZ, _XMM, _XMM|p.mem);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void put512_X_X_XM_I()
|
void put512_X3_I()
|
||||||
{
|
{
|
||||||
const struct Tbl {
|
const struct Tbl {
|
||||||
const char *name;
|
const char *name;
|
||||||
uint64_t mem;
|
uint64_t x1;
|
||||||
|
uint64_t x2;
|
||||||
|
uint64_t xm;
|
||||||
} tbl[] = {
|
} tbl[] = {
|
||||||
#ifdef XBYAK64
|
#ifdef XBYAK64
|
||||||
{ "vinsertps", _XMM3 },
|
{ "vinsertps", _XMM, _XMM, _XMM3 },
|
||||||
#endif
|
#endif
|
||||||
|
{ "vpalignr", ZMM_KZ, _ZMM, _ZMM },
|
||||||
};
|
};
|
||||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||||
const Tbl& p = tbl[i];
|
const Tbl& p = tbl[i];
|
||||||
put(p.name, _XMM, _XMM, p.mem, IMM);
|
put(p.name, p.x1, p.x2, p.xm, IMM);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void putAVX512()
|
void putAVX512()
|
||||||
|
@ -2744,7 +2747,7 @@ public:
|
||||||
put_vmov();
|
put_vmov();
|
||||||
put512_X_MX();
|
put512_X_MX();
|
||||||
put512_X_X_XM();
|
put512_X_X_XM();
|
||||||
put512_X_X_XM_I();
|
put512_X3_I();
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
|
@ -801,7 +801,7 @@ void vpaddusb(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1
|
||||||
void vpaddusb(const Xmm& x, const Operand& op) { vpaddusb(x, x, op); }
|
void vpaddusb(const Xmm& x, const Operand& op) { vpaddusb(x, x, op); }
|
||||||
void vpaddusw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xDD); }
|
void vpaddusw(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xDD); }
|
||||||
void vpaddusw(const Xmm& x, const Operand& op) { vpaddusw(x, x, op); }
|
void vpaddusw(const Xmm& x, const Operand& op) { vpaddusw(x, x, op); }
|
||||||
void vpalignr(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { opAVX_X_X_XM(x1, x2, op, T_0F3A | T_66 | T_YMM, 0x0F, imm); }
|
void vpalignr(const Xmm& x1, const Xmm& x2, const Operand& op, uint8 imm) { opAVX_X_X_XM(x1, x2, op, T_0F3A | T_66 | T_YMM | T_EVEX, 0x0F, imm); }
|
||||||
void vpalignr(const Xmm& x, const Operand& op, uint8 imm) { vpalignr(x, x, op, imm); }
|
void vpalignr(const Xmm& x, const Operand& op, uint8 imm) { vpalignr(x, x, op, imm); }
|
||||||
void vpand(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xDB); }
|
void vpand(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0xDB); }
|
||||||
void vpand(const Xmm& x, const Operand& op) { vpand(x, x, op); }
|
void vpand(const Xmm& x, const Operand& op) { vpand(x, x, op); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue