| Index: src/ia32/codegen-ia32.cc
|
| diff --git a/src/ia32/codegen-ia32.cc b/src/ia32/codegen-ia32.cc
|
| index 19fd8f1a8ff079b3cb76fc5359c3048927def1ec..f901b6f888c61a7e6bba215adac17890fedc0b1f 100644
|
| --- a/src/ia32/codegen-ia32.cc
|
| +++ b/src/ia32/codegen-ia32.cc
|
| @@ -112,14 +112,14 @@ OS::MemCopyFunction CreateMemCopyFunction() {
|
| __ mov(edx, dst);
|
| __ and_(edx, 0xF);
|
| __ neg(edx);
|
| - __ add(Operand(edx), Immediate(16));
|
| - __ add(dst, Operand(edx));
|
| - __ add(src, Operand(edx));
|
| - __ sub(Operand(count), edx);
|
| + __ add(edx, Immediate(16));
|
| + __ add(dst, edx);
|
| + __ add(src, edx);
|
| + __ sub(count, edx);
|
|
|
| // edi is now aligned. Check if esi is also aligned.
|
| Label unaligned_source;
|
| - __ test(Operand(src), Immediate(0x0F));
|
| + __ test(src, Immediate(0x0F));
|
| __ j(not_zero, &unaligned_source);
|
| {
|
| // Copy loop for aligned source and destination.
|
| @@ -134,11 +134,11 @@ OS::MemCopyFunction CreateMemCopyFunction() {
|
| __ prefetch(Operand(src, 0x20), 1);
|
| __ movdqa(xmm0, Operand(src, 0x00));
|
| __ movdqa(xmm1, Operand(src, 0x10));
|
| - __ add(Operand(src), Immediate(0x20));
|
| + __ add(src, Immediate(0x20));
|
|
|
| __ movdqa(Operand(dst, 0x00), xmm0);
|
| __ movdqa(Operand(dst, 0x10), xmm1);
|
| - __ add(Operand(dst), Immediate(0x20));
|
| + __ add(dst, Immediate(0x20));
|
|
|
| __ dec(loop_count);
|
| __ j(not_zero, &loop);
|
| @@ -146,12 +146,12 @@ OS::MemCopyFunction CreateMemCopyFunction() {
|
|
|
| // At most 31 bytes to copy.
|
| Label move_less_16;
|
| - __ test(Operand(count), Immediate(0x10));
|
| + __ test(count, Immediate(0x10));
|
| __ j(zero, &move_less_16);
|
| __ movdqa(xmm0, Operand(src, 0));
|
| - __ add(Operand(src), Immediate(0x10));
|
| + __ add(src, Immediate(0x10));
|
| __ movdqa(Operand(dst, 0), xmm0);
|
| - __ add(Operand(dst), Immediate(0x10));
|
| + __ add(dst, Immediate(0x10));
|
| __ bind(&move_less_16);
|
|
|
| // At most 15 bytes to copy. Copy 16 bytes at end of string.
|
| @@ -180,11 +180,11 @@ OS::MemCopyFunction CreateMemCopyFunction() {
|
| __ prefetch(Operand(src, 0x20), 1);
|
| __ movdqu(xmm0, Operand(src, 0x00));
|
| __ movdqu(xmm1, Operand(src, 0x10));
|
| - __ add(Operand(src), Immediate(0x20));
|
| + __ add(src, Immediate(0x20));
|
|
|
| __ movdqa(Operand(dst, 0x00), xmm0);
|
| __ movdqa(Operand(dst, 0x10), xmm1);
|
| - __ add(Operand(dst), Immediate(0x20));
|
| + __ add(dst, Immediate(0x20));
|
|
|
| __ dec(loop_count);
|
| __ j(not_zero, &loop);
|
| @@ -192,12 +192,12 @@ OS::MemCopyFunction CreateMemCopyFunction() {
|
|
|
| // At most 31 bytes to copy.
|
| Label move_less_16;
|
| - __ test(Operand(count), Immediate(0x10));
|
| + __ test(count, Immediate(0x10));
|
| __ j(zero, &move_less_16);
|
| __ movdqu(xmm0, Operand(src, 0));
|
| - __ add(Operand(src), Immediate(0x10));
|
| + __ add(src, Immediate(0x10));
|
| __ movdqa(Operand(dst, 0), xmm0);
|
| - __ add(Operand(dst), Immediate(0x10));
|
| + __ add(dst, Immediate(0x10));
|
| __ bind(&move_less_16);
|
|
|
| // At most 15 bytes to copy. Copy 16 bytes at end of string.
|
| @@ -232,10 +232,10 @@ OS::MemCopyFunction CreateMemCopyFunction() {
|
| __ mov(edx, dst);
|
| __ and_(edx, 0x03);
|
| __ neg(edx);
|
| - __ add(Operand(edx), Immediate(4)); // edx = 4 - (dst & 3)
|
| - __ add(dst, Operand(edx));
|
| - __ add(src, Operand(edx));
|
| - __ sub(Operand(count), edx);
|
| + __ add(edx, Immediate(4)); // edx = 4 - (dst & 3)
|
| + __ add(dst, edx);
|
| + __ add(src, edx);
|
| + __ sub(count, edx);
|
| // edi is now aligned, ecx holds number of remaning bytes to copy.
|
|
|
| __ mov(edx, count);
|
|
|