Fix bindless path in d3d12 that i broke in earlier commit (did not affect any users, thats a debug thing)
Fix guest code profiler, it previously only worked with function precomp + all code you were about to execute already discovered Allow AndNot if type is V128
This commit is contained in:
@@ -1872,26 +1872,24 @@ Value* HIRBuilder::AndNot(Value* value1, Value* value2) {
|
||||
ASSERT_NON_FLOAT_TYPE(value1);
|
||||
ASSERT_NON_FLOAT_TYPE(value2);
|
||||
ASSERT_TYPES_EQUAL(value1, value2);
|
||||
// e.andn(i.dest.reg().cvt64(), i.src2.reg().cvt64(), temp.cvt64());
|
||||
#if 1
|
||||
//only other type it can be used with is INT64_TYPE (andc)
|
||||
if (value1->type != VEC128_TYPE) {
|
||||
return this->And(this->Not(value2), value1);
|
||||
} else {
|
||||
if (value1 == value2) {
|
||||
return LoadZero(value1->type);
|
||||
} else if (value1->IsConstantZero()) {
|
||||
return value1;
|
||||
} else if (value2->IsConstantZero()) {
|
||||
return value1;
|
||||
}
|
||||
|
||||
return this->And(this->Not(value2), value1);
|
||||
|
||||
#else
|
||||
if (value1 == value2) {
|
||||
return LoadZero(value1->type);
|
||||
} else if (value1->IsConstantZero()) {
|
||||
return value1;
|
||||
} else if (value2->IsConstantZero()) {
|
||||
return value1;
|
||||
Instr* i = AppendInstr(OPCODE_AND_NOT_info, 0, AllocValue(value1->type));
|
||||
i->set_src1(value1);
|
||||
i->set_src2(value2);
|
||||
i->src3.value = NULL;
|
||||
return i->dest;
|
||||
}
|
||||
|
||||
Instr* i = AppendInstr(OPCODE_AND_NOT_info, 0, AllocValue(value1->type));
|
||||
i->set_src1(value1);
|
||||
i->set_src2(value2);
|
||||
i->src3.value = NULL;
|
||||
return i->dest;
|
||||
#endif
|
||||
}
|
||||
|
||||
Value* HIRBuilder::Or(Value* value1, Value* value2) {
|
||||
|
||||
Reference in New Issue
Block a user