add vcomish
This commit is contained in:
parent
cd036ea174
commit
ab9481b4c6
3 changed files with 13 additions and 0 deletions
|
@ -146,6 +146,7 @@ void putVcmp()
|
||||||
printf("void %s(const Opmask& k, const Xmm& x, const Operand& op%s) { opAVX_K_X_XM(k, x, op, %s, 0x%02X%s); }\n"
|
printf("void %s(const Opmask& k, const Xmm& x, const Operand& op%s) { opAVX_K_X_XM(k, x, op, %s, 0x%02X%s); }\n"
|
||||||
, p->name, p->hasIMM ? ", uint8_t imm" : "", type.c_str(), p->code, p->hasIMM ? ", imm" : "");
|
, p->name, p->hasIMM ? ", uint8_t imm" : "", type.c_str(), p->code, p->hasIMM ? ", imm" : "");
|
||||||
}
|
}
|
||||||
|
puts("void vcomish(const Xmm& x, const Operand& op) { opAVX_X_XM_IMM(x, op, T_MAP5 | T_MUST_EVEX | T_EW0 | T_SAE_X | T_N2, 0x2F); }");
|
||||||
}
|
}
|
||||||
|
|
||||||
void putVcmpAlias()
|
void putVcmpAlias()
|
||||||
|
|
|
@ -891,9 +891,13 @@ CYBOZU_TEST_AUTO(vaddph)
|
||||||
|
|
||||||
vcmpsh(k1, xm15, ptr[rax+64], 1);
|
vcmpsh(k1, xm15, ptr[rax+64], 1);
|
||||||
vcmpsh(k3|k5, xmm1, xmm25|T_sae, 4);
|
vcmpsh(k3|k5, xmm1, xmm25|T_sae, 4);
|
||||||
|
|
||||||
|
vcomish(xmm1, ptr[rax+64]);
|
||||||
|
vcomish(xmm1|T_sae, xmm15);
|
||||||
}
|
}
|
||||||
} c;
|
} c;
|
||||||
const uint8_t tbl[] = {
|
const uint8_t tbl[] = {
|
||||||
|
// vaddph
|
||||||
0x62, 0xF5, 0x74, 0x48, 0x58, 0x40, 0x01,
|
0x62, 0xF5, 0x74, 0x48, 0x58, 0x40, 0x01,
|
||||||
0x62, 0xF5, 0x74, 0x28, 0x58, 0x40, 0x02,
|
0x62, 0xF5, 0x74, 0x28, 0x58, 0x40, 0x02,
|
||||||
0x62, 0xF5, 0x74, 0x08, 0x58, 0x40, 0x04,
|
0x62, 0xF5, 0x74, 0x08, 0x58, 0x40, 0x04,
|
||||||
|
@ -902,9 +906,11 @@ CYBOZU_TEST_AUTO(vaddph)
|
||||||
0x62, 0xF5, 0x74, 0x38, 0x58, 0x40, 0x20,
|
0x62, 0xF5, 0x74, 0x38, 0x58, 0x40, 0x20,
|
||||||
0x62, 0xF5, 0x74, 0x18, 0x58, 0x40, 0x20,
|
0x62, 0xF5, 0x74, 0x18, 0x58, 0x40, 0x20,
|
||||||
|
|
||||||
|
// vaddsh
|
||||||
0x62, 0xF5, 0x06, 0x08, 0x58, 0x40, 0x20,
|
0x62, 0xF5, 0x06, 0x08, 0x58, 0x40, 0x20,
|
||||||
0x62, 0xF5, 0x06, 0xBD, 0x58, 0xC3,
|
0x62, 0xF5, 0x06, 0xBD, 0x58, 0xC3,
|
||||||
|
|
||||||
|
// vcmpph
|
||||||
0x62, 0xf3, 0x04, 0x08, 0xc2, 0x48, 0x04, 0x01,
|
0x62, 0xf3, 0x04, 0x08, 0xc2, 0x48, 0x04, 0x01,
|
||||||
0x62, 0xf3, 0x04, 0x28, 0xc2, 0x50, 0x02, 0x02,
|
0x62, 0xf3, 0x04, 0x28, 0xc2, 0x50, 0x02, 0x02,
|
||||||
0x62, 0xf3, 0x04, 0x48, 0xc2, 0x58, 0x01, 0x03,
|
0x62, 0xf3, 0x04, 0x48, 0xc2, 0x58, 0x01, 0x03,
|
||||||
|
@ -912,8 +918,13 @@ CYBOZU_TEST_AUTO(vaddph)
|
||||||
0x62, 0xf3, 0x04, 0x38, 0xc2, 0x50, 0x20, 0x02,
|
0x62, 0xf3, 0x04, 0x38, 0xc2, 0x50, 0x20, 0x02,
|
||||||
0x62, 0xf3, 0x04, 0x58, 0xc2, 0x58, 0x20, 0x03,
|
0x62, 0xf3, 0x04, 0x58, 0xc2, 0x58, 0x20, 0x03,
|
||||||
|
|
||||||
|
// vcmpsh
|
||||||
0x62, 0xf3, 0x06, 0x08, 0xc2, 0x48, 0x20, 0x01,
|
0x62, 0xf3, 0x06, 0x08, 0xc2, 0x48, 0x20, 0x01,
|
||||||
0x62, 0x93, 0x76, 0x1d, 0xc2, 0xd9, 0x04,
|
0x62, 0x93, 0x76, 0x1d, 0xc2, 0xd9, 0x04,
|
||||||
|
|
||||||
|
// vcomish
|
||||||
|
0x62, 0xf5, 0x7c, 0x08, 0x2f, 0x48, 0x20,
|
||||||
|
0x62, 0xd5, 0x7c, 0x18, 0x2f, 0xcf,
|
||||||
};
|
};
|
||||||
const size_t n = sizeof(tbl) / sizeof(tbl[0]);
|
const size_t n = sizeof(tbl) / sizeof(tbl[0]);
|
||||||
CYBOZU_TEST_EQUAL(c.getSize(), n);
|
CYBOZU_TEST_EQUAL(c.getSize(), n);
|
||||||
|
|
|
@ -1891,6 +1891,7 @@ void vcmpunordpd(const Opmask& k, const Xmm& x, const Operand& op) { vcmppd(k, x
|
||||||
void vcmpunordps(const Opmask& k, const Xmm& x, const Operand& op) { vcmpps(k, x, op, 3); }
|
void vcmpunordps(const Opmask& k, const Xmm& x, const Operand& op) { vcmpps(k, x, op, 3); }
|
||||||
void vcmpunordsd(const Opmask& k, const Xmm& x, const Operand& op) { vcmpsd(k, x, op, 3); }
|
void vcmpunordsd(const Opmask& k, const Xmm& x, const Operand& op) { vcmpsd(k, x, op, 3); }
|
||||||
void vcmpunordss(const Opmask& k, const Xmm& x, const Operand& op) { vcmpss(k, x, op, 3); }
|
void vcmpunordss(const Opmask& k, const Xmm& x, const Operand& op) { vcmpss(k, x, op, 3); }
|
||||||
|
void vcomish(const Xmm& x, const Operand& op) { opAVX_X_XM_IMM(x, op, T_MAP5 | T_MUST_EVEX | T_EW0 | T_SAE_X | T_N2, 0x2F); }
|
||||||
void vcompressb(const Operand& op, const Xmm& x) { opAVX_X_XM_IMM(x, op, T_N1 | T_66 | T_0F38 | T_EW0 | T_YMM | T_MUST_EVEX, 0x63); }
|
void vcompressb(const Operand& op, const Xmm& x) { opAVX_X_XM_IMM(x, op, T_N1 | T_66 | T_0F38 | T_EW0 | T_YMM | T_MUST_EVEX, 0x63); }
|
||||||
void vcompresspd(const Operand& op, const Xmm& x) { opAVX_X_XM_IMM(x, op, T_N8 | T_66 | T_0F38 | T_EW1 | T_YMM | T_MUST_EVEX, 0x8A); }
|
void vcompresspd(const Operand& op, const Xmm& x) { opAVX_X_XM_IMM(x, op, T_N8 | T_66 | T_0F38 | T_EW1 | T_YMM | T_MUST_EVEX, 0x8A); }
|
||||||
void vcompressps(const Operand& op, const Xmm& x) { opAVX_X_XM_IMM(x, op, T_N4 | T_66 | T_0F38 | T_EW0 | T_YMM | T_MUST_EVEX, 0x8A); }
|
void vcompressps(const Operand& op, const Xmm& x) { opAVX_X_XM_IMM(x, op, T_N4 | T_66 | T_0F38 | T_EW0 | T_YMM | T_MUST_EVEX, 0x8A); }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue