Commit 7ecf8833 authored by Miran.Karic's avatar Miran.Karic Committed by Commit Bot

MIPS[64]: Optimize Neg_s and Neg_d macro instructions.

The CL adds optimizations for Neg_s and Neg_d macro instructions.

BUG=

Change-Id: I842480ac3195860a1a36dadcffb5dc560ca8f424
Reviewed-on: https://chromium-review.googlesource.com/555131Reviewed-by: 's avatarIvica Bogosavljevic <ivica.bogosavljevic@imgtec.com>
Commit-Queue: Miran Karić <Miran.Karic@imgtec.com>
Cr-Commit-Position: refs/heads/master@{#46340}
parent fd24deb0
......@@ -1861,11 +1861,9 @@ void MacroAssembler::Neg_s(FPURegister fd, FPURegister fs) {
neg_s(fd, fs); // In delay slot.
bind(&is_nan);
mfc1(scratch1, fs);
And(scratch2, scratch1, Operand(~kBinary32SignMask));
And(scratch1, scratch1, Operand(kBinary32SignMask));
Xor(scratch1, scratch1, Operand(kBinary32SignMask));
Or(scratch2, scratch2, scratch1);
mtc1(scratch2, fd);
li(scratch2, kBinary32SignMask);
Xor(scratch1, scratch1, scratch2);
mtc1(scratch1, fd);
bind(&done);
}
}
......@@ -1887,11 +1885,9 @@ void MacroAssembler::Neg_d(FPURegister fd, FPURegister fs) {
neg_d(fd, fs); // In delay slot.
bind(&is_nan);
Mfhc1(scratch1, fs);
And(scratch2, scratch1, Operand(~HeapNumber::kSignMask));
And(scratch1, scratch1, Operand(HeapNumber::kSignMask));
Xor(scratch1, scratch1, Operand(HeapNumber::kSignMask));
Or(scratch2, scratch2, scratch1);
Mthc1(scratch2, fd);
li(scratch2, HeapNumber::kSignMask);
Xor(scratch1, scratch1, scratch2);
Mthc1(scratch1, fd);
bind(&done);
}
}
......
......@@ -2239,11 +2239,9 @@ void MacroAssembler::Neg_s(FPURegister fd, FPURegister fs) {
neg_s(fd, fs); // In delay slot.
bind(&is_nan);
mfc1(scratch1, fs);
And(scratch2, scratch1, Operand(~kBinary32SignMask));
And(scratch1, scratch1, Operand(kBinary32SignMask));
Xor(scratch1, scratch1, Operand(kBinary32SignMask));
Or(scratch2, scratch2, scratch1);
mtc1(scratch2, fd);
li(scratch2, kBinary32SignMask);
Xor(scratch1, scratch1, scratch2);
mtc1(scratch1, fd);
bind(&done);
}
}
......@@ -2264,11 +2262,9 @@ void MacroAssembler::Neg_d(FPURegister fd, FPURegister fs) {
neg_d(fd, fs); // In delay slot.
bind(&is_nan);
dmfc1(scratch1, fs);
And(scratch2, scratch1, Operand(~Double::kSignMask));
And(scratch1, scratch1, Operand(Double::kSignMask));
Xor(scratch1, scratch1, Operand(Double::kSignMask));
Or(scratch2, scratch2, scratch1);
dmtc1(scratch2, fd);
li(scratch2, Double::kSignMask);
Xor(scratch1, scratch1, scratch2);
dmtc1(scratch1, fd);
bind(&done);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment