mirror of
https://github.com/FEX-Emu/FEX.git
synced 2026-10-06 11:00:19 +02:00
Compare commits
3
Commits
FEX-2604
...
FEX-2507.1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ea20429351 | ||
|
|
91828efa7a | ||
|
|
cce605d5e0 |
No files matched your search
@@ -69,10 +69,6 @@ Decoder::Decoder(FEXCore::Context::ContextImpl* ctx)
|
||||
, OSABI {ctx->SyscallHandler ? ctx->SyscallHandler->GetOSABI() : FEXCore::HLE::SyscallOSABI::OS_UNKNOWN}
|
||||
, PoolObject {ctx->FrontendAllocator, sizeof(FEXCore::X86Tables::DecodedInst) * DefaultDecodedBufferSize} {}
|
||||
|
||||
Decoder::~Decoder() {
|
||||
PoolObject.UnclaimBuffer();
|
||||
}
|
||||
|
||||
uint8_t Decoder::ReadByte() {
|
||||
uint8_t Byte = InstStream[InstructionSize];
|
||||
LOGMAN_THROW_A_FMT(InstructionSize < MAX_INST_SIZE, "Max instruction size exceeded!");
|
||||
|
||||
@@ -34,7 +34,6 @@ public:
|
||||
};
|
||||
|
||||
Decoder(FEXCore::Context::ContextImpl* ctx);
|
||||
~Decoder();
|
||||
void DecodeInstructionsAtEntry(const uint8_t* InstStream, uint64_t PC, uint64_t MaxInst,
|
||||
std::function<void(uint64_t BlockEntry, uint64_t Start, uint64_t Length)> AddContainedCodePage);
|
||||
|
||||
|
||||
@@ -969,11 +969,15 @@ DEF_OP(UDiv) {
|
||||
break;
|
||||
}
|
||||
case IR::OpSize::i32Bit: {
|
||||
// We need to mask divisor if we have Upper bits, since the frontend does
|
||||
// not on the hope that we can optimize to use the path above.
|
||||
mov(ARMEmitter::Size::i32Bit, TMP2, Divisor);
|
||||
|
||||
// TODO: 32-bit operation should be guaranteed not to leave garbage in the upper bits.
|
||||
mov(EmitSize, TMP1, Lower);
|
||||
bfi(EmitSize, TMP1, Upper, 32, 32);
|
||||
udiv(EmitSize, Quotient, TMP1, Divisor);
|
||||
msub(EmitSize, Remainder, Quotient, Divisor, TMP1);
|
||||
udiv(EmitSize, Quotient, TMP1, TMP2);
|
||||
msub(EmitSize, Remainder, Quotient, TMP2, TMP1);
|
||||
break;
|
||||
}
|
||||
case IR::OpSize::i64Bit: {
|
||||
|
||||
@@ -127,10 +127,6 @@ public:
|
||||
PoolObject.ReownOrClaimBuffer();
|
||||
}
|
||||
|
||||
~DualIntrusiveAllocatorThreadPool() {
|
||||
PoolObject.UnclaimBuffer();
|
||||
}
|
||||
|
||||
void ReownOrClaimBuffer() {
|
||||
Data = PoolObject.ReownOrClaimBuffer();
|
||||
List = Data + MemorySize;
|
||||
|
||||
@@ -445,6 +445,10 @@ public:
|
||||
: ThreadAllocator {Allocator}
|
||||
, Size {Size} {}
|
||||
|
||||
~PoolBufferWithTimedRetirement() {
|
||||
UnclaimBuffer();
|
||||
}
|
||||
|
||||
/**
|
||||
* @brief Return the owned buffer or allocate another one from the `Allocator`
|
||||
*
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# FEX-2507
|
||||
# FEX-2507.1
|
||||
|
||||
## FEXCore
|
||||
See [FEXCore/Readme.md](../FEXCore/Readme.md) for more details
|
||||
|
||||
Reference in new issue
Block a user