SPU DMA: disable memcpy path

Due to update of the alternative path (SSE/AVX)
This commit is contained in:
Nekotekina 2020-04-26 19:46:19 +03:00
parent 8ae2554505
commit 4f71c570bd

View file

@ -1511,11 +1511,7 @@ void spu_thread::do_dma_transfer(const spu_mfc_cmd& args)
// Split locking + transfer in two parts (before 64K border, and after it) // Split locking + transfer in two parts (before 64K border, and after it)
const auto lock = vm::range_lock(range_addr, nexta); const auto lock = vm::range_lock(range_addr, nexta);
#ifdef __GNUG__
std::memcpy(dst, src, size0);
dst += size0;
src += size0;
#else
while (size0 >= 128) while (size0 >= 128)
{ {
mov_rdata(*reinterpret_cast<decltype(spu_thread::rdata)*>(dst), *reinterpret_cast<const decltype(spu_thread::rdata)*>(src)); mov_rdata(*reinterpret_cast<decltype(spu_thread::rdata)*>(dst), *reinterpret_cast<const decltype(spu_thread::rdata)*>(src));
@ -1533,16 +1529,13 @@ void spu_thread::do_dma_transfer(const spu_mfc_cmd& args)
src += 16; src += 16;
size0 -= 16; size0 -= 16;
} }
#endif
lock->release(0); lock->release(0);
range_addr = nexta; range_addr = nexta;
} }
const auto lock = vm::range_lock(range_addr, range_end); const auto lock = vm::range_lock(range_addr, range_end);
#ifdef __GNUG__
std::memcpy(dst, src, size);
#else
while (size >= 128) while (size >= 128)
{ {
mov_rdata(*reinterpret_cast<decltype(spu_thread::rdata)*>(dst), *reinterpret_cast<const decltype(spu_thread::rdata)*>(src)); mov_rdata(*reinterpret_cast<decltype(spu_thread::rdata)*>(dst), *reinterpret_cast<const decltype(spu_thread::rdata)*>(src));
@ -1560,7 +1553,6 @@ void spu_thread::do_dma_transfer(const spu_mfc_cmd& args)
src += 16; src += 16;
size -= 16; size -= 16;
} }
#endif
lock->release(0); lock->release(0);
break; break;
@ -1594,9 +1586,6 @@ void spu_thread::do_dma_transfer(const spu_mfc_cmd& args)
} }
default: default:
{ {
#ifdef __GNUG__
std::memcpy(dst, src, size);
#else
while (size >= 128) while (size >= 128)
{ {
mov_rdata(*reinterpret_cast<decltype(spu_thread::rdata)*>(dst), *reinterpret_cast<const decltype(spu_thread::rdata)*>(src)); mov_rdata(*reinterpret_cast<decltype(spu_thread::rdata)*>(dst), *reinterpret_cast<const decltype(spu_thread::rdata)*>(src));
@ -1614,7 +1603,6 @@ void spu_thread::do_dma_transfer(const spu_mfc_cmd& args)
src += 16; src += 16;
size -= 16; size -= 16;
} }
#endif
break; break;
} }