add vunpckhpd, vunpckhps, vunpcklpd, vunpcklps
This commit is contained in:
parent
3c870c0c60
commit
1c372ada3b
3 changed files with 25 additions and 20 deletions
|
@ -1165,11 +1165,11 @@ void put()
|
|||
{ 0x51, "sqrtsd", T_0F | T_F2 | T_EVEX | T_EW1 | T_ER_X, false, true },
|
||||
{ 0x51, "sqrtss", T_0F | T_F3 | T_EVEX | T_EW0 | T_ER_X, false, true },
|
||||
|
||||
{ 0x15, "unpckhpd", T_0F | T_66 | T_YMM, false, true },
|
||||
{ 0x15, "unpckhps", T_0F | T_YMM, false, true },
|
||||
{ 0x15, "unpckhpd", T_0F | T_66 | T_YMM | T_EVEX | T_EW1 | T_B64, false, true },
|
||||
{ 0x15, "unpckhps", T_0F | T_YMM | T_EVEX | T_EW0 | T_B32, false, true },
|
||||
|
||||
{ 0x14, "unpcklpd", T_0F | T_66 | T_YMM, false, true },
|
||||
{ 0x14, "unpcklps", T_0F | T_YMM, false, true },
|
||||
{ 0x14, "unpcklpd", T_0F | T_66 | T_YMM | T_EVEX | T_EW1 | T_B64, false, true },
|
||||
{ 0x14, "unpcklps", T_0F | T_YMM | T_EVEX | T_EW0 | T_B32, false, true },
|
||||
};
|
||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||
const Tbl *p = &tbl[i];
|
||||
|
|
|
@ -2553,10 +2553,10 @@ public:
|
|||
};
|
||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||
const Tbl *p = &tbl[i];
|
||||
put(p->name, K, XMM, XMM | MEM, IMM);
|
||||
put(p->name, K, _XMM, _XMM | MEM, IMM);
|
||||
if (!p->supportYMM) continue;
|
||||
put(p->name, K, YMM, YMM | MEM, IMM);
|
||||
put(p->name, K, ZMM, ZMM | MEM, IMM);
|
||||
put(p->name, K, _YMM, _YMM | MEM, IMM);
|
||||
put(p->name, K, _ZMM, _ZMM | MEM, IMM);
|
||||
}
|
||||
}
|
||||
put("vcmppd", K2, ZMM, ZMM_SAE, IMM);
|
||||
|
@ -2683,13 +2683,13 @@ public:
|
|||
};
|
||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||
const Tbl& p = tbl[i];
|
||||
put(p.name, XMM|XMM_KZ, XMM|MEM);
|
||||
put(p.name, YMM|YMM_KZ, YMM|MEM);
|
||||
put(p.name, ZMM|ZMM_KZ, ZMM|MEM);
|
||||
put(p.name, _XMM|XMM_KZ, _XMM|MEM);
|
||||
put(p.name, _YMM|YMM_KZ, _YMM|MEM);
|
||||
put(p.name, _ZMM|ZMM_KZ, _ZMM|MEM);
|
||||
if (!p.M_X) continue;
|
||||
put(p.name, MEM, XMM);
|
||||
put(p.name, MEM, YMM);
|
||||
put(p.name, MEM, ZMM);
|
||||
put(p.name, MEM, _XMM);
|
||||
put(p.name, MEM, _YMM);
|
||||
put(p.name, MEM, _ZMM);
|
||||
}
|
||||
put("vsqrtpd", XMM_KZ, M_1to2);
|
||||
put("vsqrtpd", YMM_KZ, M_1to4);
|
||||
|
@ -2705,13 +2705,18 @@ public:
|
|||
{
|
||||
const struct Tbl {
|
||||
const char *name;
|
||||
uint64_t mem;
|
||||
} tbl[] = {
|
||||
{ "vsqrtsd" },
|
||||
{ "vsqrtss" },
|
||||
{ "vsqrtsd", MEM },
|
||||
{ "vsqrtss", MEM },
|
||||
{ "vunpckhpd", M_1to2 },
|
||||
{ "vunpckhps", M_1to4 },
|
||||
{ "vunpcklpd", M_1to2 },
|
||||
{ "vunpcklps", M_1to4 },
|
||||
};
|
||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||
const Tbl& p = tbl[i];
|
||||
put(p.name, XMM_KZ, XMM, XMM|MEM);
|
||||
put(p.name, XMM_KZ, _XMM, _XMM|p.mem);
|
||||
}
|
||||
}
|
||||
void putAVX512()
|
||||
|
|
|
@ -954,13 +954,13 @@ void vsqrtsd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1,
|
|||
void vsqrtsd(const Xmm& x, const Operand& op) { vsqrtsd(x, x, op); }
|
||||
void vsqrtss(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_F3 | T_EW0 | T_EVEX | T_ER_X, 0x51); }
|
||||
void vsqrtss(const Xmm& x, const Operand& op) { vsqrtss(x, x, op); }
|
||||
void vunpckhpd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0x15); }
|
||||
void vunpckhpd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_EW1 | T_YMM | T_EVEX | T_B64, 0x15); }
|
||||
void vunpckhpd(const Xmm& x, const Operand& op) { vunpckhpd(x, x, op); }
|
||||
void vunpckhps(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_YMM, 0x15); }
|
||||
void vunpckhps(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_EW0 | T_YMM | T_EVEX | T_B32, 0x15); }
|
||||
void vunpckhps(const Xmm& x, const Operand& op) { vunpckhps(x, x, op); }
|
||||
void vunpcklpd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_YMM, 0x14); }
|
||||
void vunpcklpd(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_66 | T_EW1 | T_YMM | T_EVEX | T_B64, 0x14); }
|
||||
void vunpcklpd(const Xmm& x, const Operand& op) { vunpcklpd(x, x, op); }
|
||||
void vunpcklps(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_YMM, 0x14); }
|
||||
void vunpcklps(const Xmm& x1, const Xmm& x2, const Operand& op) { opAVX_X_X_XM(x1, x2, op, T_0F | T_EW0 | T_YMM | T_EVEX | T_B32, 0x14); }
|
||||
void vunpcklps(const Xmm& x, const Operand& op) { vunpcklps(x, x, op); }
|
||||
void vaeskeygenassist(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, T_0F3A | T_66, 0xDF, imm); }
|
||||
void vroundpd(const Xmm& xm, const Operand& op, uint8 imm) { opAVX_X_XM_IMM(xm, op, T_0F3A | T_66 | T_YMM, 0x09, imm); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue