ARM: Avoid duplicate vmla when merging vmul and vadd
authorrodolph.perfetta@arm.com <rodolph.perfetta@arm.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 20 Jun 2014 11:26:17 +0000 (11:26 +0000)
committerrodolph.perfetta@arm.com <rodolph.perfetta@arm.com@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 20 Jun 2014 11:26:17 +0000 (11:26 +0000)
commit736a17f8f46a324221c15c73a1a22c02eb90e9e4
tree004c5db0af1fe77f1fcb68c2d27873b5dc93d635
parent5eb7ce90400688622fe67c961ca5f1172396e220
ARM: Avoid duplicate vmla when merging vmul and vadd

Avoid generating duplicate vmla instructions for vmul/vadd sequences where the
vmul has more than one use.

For example: function f(a, b, c) { return (a * b) + c + (a * b); }

Previously, this would produce a vmul for the subexpression (a * b), then vmla
for (a * b) + c, then vmla for (a * b) + [(a * b) + c].

Now it produces vmul, vadd, vadd, as expected.

BUG=
R=ulan@chromium.org

Review URL: https://codereview.chromium.org/323423003

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21899 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
src/arm/lithium-arm.cc
src/hydrogen-instructions.cc
src/hydrogen-instructions.h
src/mips/lithium-mips.cc