OpcodeDispatcher: Use cset for blsr/etc flags

Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
Alyssa Rosenzweig committed 2023-09-24 19:52:35 -04:00
1 parent e63871ed2e
commit c5fc03dac4
1 file changed
+3 -9
@@ -1092,9 +1092,7 @@ void OpDispatchBuilder::CalculateFlags_BLSI(uint8_t SrcSize, OrderedNode *Src) {
// CF
{
auto CFOp = _Select(IR::COND_EQ,
Src, Zero,
Zero, One);
auto CFOp = _Select(IR::COND_NEQ, Src, Zero, One, Zero);
SetRFLAG<X86State::RFLAG_CF_LOC>(CFOp);
}
}
@@ -1115,9 +1113,7 @@ void OpDispatchBuilder::CalculateFlags_BLSMSK(OrderedNode *Src) {
_InvalidateFlags((1UL << X86State::RFLAG_PF_LOC) |
(1UL << X86State::RFLAG_AF_LOC));
auto CFOp = _Select(IR::COND_EQ,
Src, Zero,
Zero, One);
auto CFOp = _Select(IR::COND_NEQ, Src, Zero, One, Zero);
SetRFLAG<X86State::RFLAG_CF_LOC>(CFOp);
}
@@ -1134,9 +1130,7 @@ void OpDispatchBuilder::CalculateFlags_BLSR(uint8_t SrcSize, OrderedNode *Result
// CF
{
auto CFOp = _Select(IR::COND_EQ,
Src, Zero,
Zero, One);
auto CFOp = _Select(IR::COND_NEQ, Src, Zero, One, Zero);
SetRFLAG<X86State::RFLAG_CF_LOC>(CFOp);
}
}