aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRichard Earnshaw <erich@gnu.org>1997-07-16 14:54:40 +0000
committerRichard Earnshaw <erich@gnu.org>1997-07-16 14:54:40 +0000
commite9335bb692c19959932d1fda9f80e913947a2384 (patch)
treeef8e14b8ead32f5948d242bd22e20376ed35aa41
parent4677cb4b20dfaa00efc6b2f6e3b55f72f9801dd5 (diff)
downloadgcc-e9335bb692c19959932d1fda9f80e913947a2384.zip
gcc-e9335bb692c19959932d1fda9f80e913947a2384.tar.gz
gcc-e9335bb692c19959932d1fda9f80e913947a2384.tar.bz2
(*push_fp_multi): New pattern.
From-SVN: r14459
-rw-r--r--gcc/config/arm/arm.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/gcc/config/arm/arm.md b/gcc/config/arm/arm.md
index d28a3a0..afc2794 100644
--- a/gcc/config/arm/arm.md
+++ b/gcc/config/arm/arm.md
@@ -5977,6 +5977,23 @@
}"
[(set_attr "type" "store4")])
+;; Similarly for the the floating point registers
+(define_insn "*push_fp_multi"
+ [(match_parallel 2 "multi_register_push"
+ [(set (match_operand:BLK 0 "memory_operand" "=m")
+ (unspec:BLK [(match_operand:XF 1 "f_register_operand" "f")] 2))])]
+ ""
+ "*
+{
+ char pattern[100];
+ int i;
+
+ sprintf (pattern, \"sfmfd\\t%%1, %d, [%%m0]!\", XVECLEN (operands[2], 0));
+ output_asm_insn (pattern, operands);
+ return \"\";
+}"
+[(set_attr "type" "f_store")])
+
;; Special patterns for dealing with the constant pool
(define_insn "consttable_4"