mirror of
https://github.com/corda/corda.git
synced 2025-01-23 21:08:48 +00:00
constrain temporary register in moveMM according to moveMR's requirements
This commit is contained in:
parent
f3fb813714
commit
56d8851764
@ -845,7 +845,14 @@ moveMM(Context* c, unsigned size, Assembler::Memory* a,
|
|||||||
Assembler::Memory* b)
|
Assembler::Memory* b)
|
||||||
{
|
{
|
||||||
if (BytesPerWord == 8 or size <= 4) {
|
if (BytesPerWord == 8 or size <= 4) {
|
||||||
Assembler::Register tmp(c->client->acquireTemporary());
|
uint32_t mask;
|
||||||
|
if (BytesPerWord == 4 and size == 1) {
|
||||||
|
mask = (1 << rax) | (1 << rcx) | (1 << rdx) | (1 << rbx);
|
||||||
|
} else {
|
||||||
|
mask = ~static_cast<uint32_t>(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
Assembler::Register tmp(c->client->acquireTemporary(mask));
|
||||||
moveMR(c, size, a, &tmp);
|
moveMR(c, size, a, &tmp);
|
||||||
moveRM(c, size, &tmp, b);
|
moveRM(c, size, &tmp, b);
|
||||||
c->client->releaseTemporary(tmp.low);
|
c->client->releaseTemporary(tmp.low);
|
||||||
|
Loading…
Reference in New Issue
Block a user