mirror of
https://github.com/FEX-Emu/FEX.git
synced 2025-03-05 21:19:24 +00:00
OpcodeDispatcher: fuse NEG
Signed-off-by: Alyssa Rosenzweig <alyssa@rosenzweig.io>
This commit is contained in:
parent
96e652879f
commit
9a11d3b1a2
@ -4141,23 +4141,20 @@ void OpDispatchBuilder::NEGOp(OpcodeArgs) {
|
||||
auto ZeroConst = _Constant(0);
|
||||
|
||||
OrderedNode *Dest{};
|
||||
OrderedNode *Result{};
|
||||
|
||||
if (DestIsLockedMem(Op)) {
|
||||
OrderedNode *DestMem = LoadSource(GPRClass, Op, Op->Dest, Op->Flags, {.LoadData = false});
|
||||
DestMem = AppendSegmentOffset(DestMem, Op->Flags);
|
||||
|
||||
Dest = _AtomicFetchNeg(IR::SizeToOpSize(Size), DestMem);
|
||||
Result = _Neg(Size == 8 ? OpSize::i64Bit : OpSize::i32Bit, Dest);
|
||||
CalculateFlags_SUB(Size, ZeroConst, Dest);
|
||||
}
|
||||
else {
|
||||
Dest = LoadSource(GPRClass, Op, Op->Dest, Op->Flags);
|
||||
Result = _Neg(Size == 8 ? OpSize::i64Bit : OpSize::i32Bit, Dest);
|
||||
OrderedNode *Result = CalculateFlags_SUB(Size, ZeroConst, Dest);
|
||||
|
||||
StoreResult(GPRClass, Op, Result, -1);
|
||||
}
|
||||
|
||||
GenerateFlags_SUB(Op, ZeroConst, Dest);
|
||||
}
|
||||
|
||||
void OpDispatchBuilder::DIVOp(OpcodeArgs) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user