[JIT, x64] Add and implement OPCODE_AND_NOT

Verified the x64 implementation using `xenia-cpu-ppc-tests`.
This commit is contained in:
Wunkolo
2022-01-02 16:16:14 -08:00
committed by Rick Gibbed
parent 4f258b2ee9
commit 0fdb855a11
7 changed files with 106 additions and 4 deletions

View File

@@ -1759,6 +1759,26 @@ Value* HIRBuilder::And(Value* value1, Value* value2) {
return i->dest;
}
Value* HIRBuilder::AndNot(Value* value1, Value* value2) {
ASSERT_NON_FLOAT_TYPE(value1);
ASSERT_NON_FLOAT_TYPE(value2);
ASSERT_TYPES_EQUAL(value1, value2);
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;
}
Value* HIRBuilder::Or(Value* value1, Value* value2) {
ASSERT_NON_FLOAT_TYPE(value1);
ASSERT_NON_FLOAT_TYPE(value2);