aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJeff Law <law@gcc.gnu.org>1993-01-06 12:41:32 -0700
committerJeff Law <law@gcc.gnu.org>1993-01-06 12:41:32 -0700
commit19386a3e5a82a8b136855783a24ac033632aadc3 (patch)
tree0394d7471cc5ee0513450848adf0374ef648aaf5 /gcc
parent88e5c02973116a576ca1b36bbd2fb81eb837342f (diff)
downloadgcc-19386a3e5a82a8b136855783a24ac033632aadc3.zip
gcc-19386a3e5a82a8b136855783a24ac033632aadc3.tar.gz
gcc-19386a3e5a82a8b136855783a24ac033632aadc3.tar.bz2
pa.md (fmpyadd peepholes): Cleanups suggested by Tege.
From-SVN: r3125
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/pa/pa.md28
1 files changed, 24 insertions, 4 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md
index 2729682..e48ca3c 100644
--- a/gcc/config/pa/pa.md
+++ b/gcc/config/pa/pa.md
@@ -2651,9 +2651,19 @@
"*
{
if (GET_MODE (operands[0]) == DFmode)
- return \"fmpyadd,dbl %1,%2,%0,%4,%3\";
+ {
+ if (rtx_equal_p (operands[5], operands[3])
+ return \"fmpyadd,dbl %1,%2,%0,%4,%3\";
+ else
+ return \"fmpyadd,dbl %1,%2,%0,%5,%3\";
+ }
else
- return \"fmpyadd,sgl %1,%2,%0,%4,%3\";
+ {
+ if (rtx_equal_p (operands[5], operands[3])
+ return \"fmpyadd,sgl %1,%2,%0,%4,%3\";
+ else
+ return \"fmpyadd,sgl %1,%2,%0,%5,%3\";
+ }
}")
@@ -2668,9 +2678,19 @@
"*
{
if (GET_MODE (operands[0]) == DFmode)
- return \"fmpyadd,dbl %1,%2,%0,%4,%3\";
+ {
+ if (rtx_equal_p (operands[3], operands[5]))
+ return \"fmpyadd,dbl %1,%2,%0,%4,%3\";
+ else
+ return \"fmpyadd,dbl %1,%2,%0,%5,%3\";
+ }
else
- return \"fmpyadd,sgl %1,%2,%0,%4,%3\";
+ {
+ if (rtx_equal_p (operands[3], operands[5]))
+ return \"fmpyadd,sgl %1,%2,%0,%4,%3\";
+ else
+ return \"fmpyadd,sgl %1,%2,%0,%5,%3\";
+ }
}")
;; Note fsub subtracts the second operand from the first while fmpysub