Bad dp checks.
This commit is contained in:
parent
0908891bb2
commit
5421108b9e
|
@ -1736,7 +1736,7 @@ table->AddSequence(OPCODE_LOG2, [](X64Emitter& e, Instr*& i) {
|
||||||
});
|
});
|
||||||
|
|
||||||
table->AddSequence(OPCODE_DOT_PRODUCT_3, [](X64Emitter& e, Instr*& i) {
|
table->AddSequence(OPCODE_DOT_PRODUCT_3, [](X64Emitter& e, Instr*& i) {
|
||||||
if (IsVecType(i->dest->type)) {
|
if (IsVecType(i->src1.value->type)) {
|
||||||
XmmBinaryOp(e, i, i->flags, [](X64Emitter& e, Instr& i, const Xmm& dest_src, const Xmm& src) {
|
XmmBinaryOp(e, i, i->flags, [](X64Emitter& e, Instr& i, const Xmm& dest_src, const Xmm& src) {
|
||||||
// http://msdn.microsoft.com/en-us/library/bb514054(v=vs.90).aspx
|
// http://msdn.microsoft.com/en-us/library/bb514054(v=vs.90).aspx
|
||||||
// TODO(benvanik): verify ordering
|
// TODO(benvanik): verify ordering
|
||||||
|
@ -1751,7 +1751,7 @@ table->AddSequence(OPCODE_DOT_PRODUCT_3, [](X64Emitter& e, Instr*& i) {
|
||||||
});
|
});
|
||||||
|
|
||||||
table->AddSequence(OPCODE_DOT_PRODUCT_4, [](X64Emitter& e, Instr*& i) {
|
table->AddSequence(OPCODE_DOT_PRODUCT_4, [](X64Emitter& e, Instr*& i) {
|
||||||
if (IsVecType(i->dest->type)) {
|
if (IsVecType(i->src1.value->type)) {
|
||||||
XmmBinaryOp(e, i, i->flags, [](X64Emitter& e, Instr& i, const Xmm& dest_src, const Xmm& src) {
|
XmmBinaryOp(e, i, i->flags, [](X64Emitter& e, Instr& i, const Xmm& dest_src, const Xmm& src) {
|
||||||
// http://msdn.microsoft.com/en-us/library/bb514054(v=vs.90).aspx
|
// http://msdn.microsoft.com/en-us/library/bb514054(v=vs.90).aspx
|
||||||
// TODO(benvanik): verify ordering
|
// TODO(benvanik): verify ordering
|
||||||
|
|
|
@ -869,7 +869,6 @@ void XmmBinaryOpCV(X64Emitter& e, Instr*& i, xmm_vv_fn vv_fn,
|
||||||
}
|
}
|
||||||
void XmmBinaryOp(X64Emitter& e, Instr*& i, uint32_t flags, xmm_vv_fn vv_fn) {
|
void XmmBinaryOp(X64Emitter& e, Instr*& i, uint32_t flags, xmm_vv_fn vv_fn) {
|
||||||
// TODO(benvanik): table lookup. This linear scan is slow.
|
// TODO(benvanik): table lookup. This linear scan is slow.
|
||||||
XEASSERT(i->dest->type == i->src1.value->type);
|
|
||||||
if (i->Match(SIG_TYPE_IGNORE, SIG_TYPE_F32, SIG_TYPE_F32) ||
|
if (i->Match(SIG_TYPE_IGNORE, SIG_TYPE_F32, SIG_TYPE_F32) ||
|
||||||
i->Match(SIG_TYPE_IGNORE, SIG_TYPE_F64, SIG_TYPE_F64) ||
|
i->Match(SIG_TYPE_IGNORE, SIG_TYPE_F64, SIG_TYPE_F64) ||
|
||||||
i->Match(SIG_TYPE_IGNORE, SIG_TYPE_V128, SIG_TYPE_V128)) {
|
i->Match(SIG_TYPE_IGNORE, SIG_TYPE_V128, SIG_TYPE_V128)) {
|
||||||
|
|
Loading…
Reference in New Issue