add vpermd, vpermps
This commit is contained in:
parent
c578525599
commit
32c5582ad2
3 changed files with 24 additions and 0 deletions
|
@ -1327,6 +1327,19 @@ void put()
|
|||
printf("void vpmaskmov%s(const Address& addr, const Xmm& xm1, const Xmm& xm2) { opAVX_X_X_XM(xm2, xm1, addr, MM_0F38 | PP_66, 0x%02X, true, %d); }\n", suf[i], 0x8E, i);
|
||||
}
|
||||
}
|
||||
// vpermd, vpermps
|
||||
{
|
||||
const struct {
|
||||
const char *suf;
|
||||
uint8 code;
|
||||
} tbl[] = {
|
||||
{ "d", 0x36 },
|
||||
{ "ps", 0x16 },
|
||||
};
|
||||
for (int i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||
printf("void vperm%s(const Ymm& y1, const Ymm& y2, const Operand& op) { opAVX_X_X_XM(y1, y2, op, MM_0F38 | PP_66, 0x%02X, true, 0); }\n", tbl[i].suf, tbl[i].code);
|
||||
}
|
||||
}
|
||||
// vcmpeqps
|
||||
{
|
||||
const char pred[32][16] = {
|
||||
|
|
|
@ -1785,6 +1785,15 @@ class Test {
|
|||
put(name, MEM, YMM, YMM);
|
||||
}
|
||||
}
|
||||
{
|
||||
const char *tbl[] = {
|
||||
"vpermd", "vpermps",
|
||||
};
|
||||
for (size_t i = 0; i < NUM_OF_ARRAY(tbl); i++) {
|
||||
const char *name = tbl[i];
|
||||
put(name, YMM, YMM, YMM | MEM);
|
||||
}
|
||||
}
|
||||
#else
|
||||
put("vextractf128", XMM | MEM, YMM, IMM);
|
||||
put("vextracti128", XMM | MEM, YMM, IMM);
|
||||
|
|
|
@ -927,6 +927,8 @@ void vpmaskmovd(const Xmm& xm1, const Xmm& xm2, const Address& addr) { opAVX_X_X
|
|||
void vpmaskmovd(const Address& addr, const Xmm& xm1, const Xmm& xm2) { opAVX_X_X_XM(xm2, xm1, addr, MM_0F38 | PP_66, 0x8E, true, 0); }
|
||||
void vpmaskmovq(const Xmm& xm1, const Xmm& xm2, const Address& addr) { opAVX_X_X_XM(xm1, xm2, addr, MM_0F38 | PP_66, 0x8C, true, 1); }
|
||||
void vpmaskmovq(const Address& addr, const Xmm& xm1, const Xmm& xm2) { opAVX_X_X_XM(xm2, xm1, addr, MM_0F38 | PP_66, 0x8E, true, 1); }
|
||||
void vpermd(const Ymm& y1, const Ymm& y2, const Operand& op) { opAVX_X_X_XM(y1, y2, op, MM_0F38 | PP_66, 0x36, true, 0); }
|
||||
void vpermps(const Ymm& y1, const Ymm& y2, const Operand& op) { opAVX_X_X_XM(y1, y2, op, MM_0F38 | PP_66, 0x16, true, 0); }
|
||||
void cmpeqpd(const Xmm& x, const Operand& op) { cmppd(x, op, 0); }
|
||||
void vcmpeqpd(const Xmm& x1, const Xmm& x2, const Operand& op) { vcmppd(x1, x2, op, 0); }
|
||||
void vcmpeqpd(const Xmm& x, const Operand& op) { vcmppd(x, op, 0); }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue