aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Stallman <rms@gnu.org>1993-08-04 22:34:32 +0000
committerRichard Stallman <rms@gnu.org>1993-08-04 22:34:32 +0000
commit543624ee233050ac5b43ff8be6488a7a1d95f28d (patch)
tree6a1efb5284501778831c6401e6fc23bb95c8a66d
parent05b4c365bb02319e3106ab950c14fb5f8f604213 (diff)
downloadgcc-543624ee233050ac5b43ff8be6488a7a1d95f28d.zip
gcc-543624ee233050ac5b43ff8be6488a7a1d95f28d.tar.gz
gcc-543624ee233050ac5b43ff8be6488a7a1d95f28d.tar.bz2
(movdf+2): Allow `f' register as source operand in
first alternative. From-SVN: r5070
-rw-r--r--gcc/config/clipper/clipper.md23
1 files changed, 11 insertions, 12 deletions
diff --git a/gcc/config/clipper/clipper.md b/gcc/config/clipper/clipper.md
index 24aa258..24a82bf 100644
--- a/gcc/config/clipper/clipper.md
+++ b/gcc/config/clipper/clipper.md
@@ -203,22 +203,21 @@
(define_insn ""
[(set (match_operand:DF 0 "memory_operand" "=o,m")
- (match_operand:DF 1 "register_operand" "r,f"))]
+ (match_operand:DF 1 "register_operand" "rf,f"))]
""
"*
{
- if (which_alternative == 0) /* r -> o */
- {
- rtx xops[4];
- xops[0] = operands[0];
- xops[1] = adj_offsettable_operand (operands[0], 4);
- xops[2] = operands[1];
- xops[3] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);
- output_asm_insn (\"storw %2,%0\;storw %3,%1\", xops);
- return \"\";
- }
+ rtx xops[4];
+
+ if (REGNO (operands[1]) >= 16) /* f -> m */
+ return \"stord %1,%0\";
- return \"stord %1,%0\"; /* f-> m */
+ xops[0] = operands[0]; /* r -> o */
+ xops[1] = adj_offsettable_operand (operands[0], 4);
+ xops[2] = operands[1];
+ xops[3] = gen_rtx (REG, SImode, REGNO (operands[1]) + 1);
+ output_asm_insn (\"storw %2,%0\;storw %3,%1\", xops);
+ return \"\";
}"
[(set_attr "type" "store,store")
(set_attr "cc" "clobber,unchanged")])