summaryrefslogtreecommitdiff
path: root/gcc/config/arm/predicates.md
diff options
context:
space:
mode:
authorgretay <gretay@138bc75d-0d04-0410-961f-82ee72b054a4>2012-06-18 17:30:41 +0000
committergretay <gretay@138bc75d-0d04-0410-961f-82ee72b054a4>2012-06-18 17:30:41 +0000
commit1a0b0f12fc02924973e9f528f668e646b35ce438 (patch)
tree2fbecb24dff9d18763579b4db54ee60e68c66f1e /gcc/config/arm/predicates.md
parent426be8c56ddd712ef1b9959c56c5e01387412f68 (diff)
downloadgcc-1a0b0f12fc02924973e9f528f668e646b35ce438.tar.gz
New define insn pattern for epilogue with floating point registers (DFmode)
and a new function that emits RTL for this pattern. This function is a helper for epilogue extension. It is used by a later patch. gcc/ 2012-06-18 Ian Bolton <ian.bolton@arm.com> Sameera Deshpande <sameera.deshpande@arm.com> Greta Yorsh <greta.yorsh@arm.com> * config/arm/arm.md (vfp_pop_multiple_with_writeback) New define_insn. * config/arm/predicates.md (pop_multiple_fp) New special predicate. * config/arm/arm.c (arm_emit_vfp_multi_reg_pop): New function. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@188740 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/arm/predicates.md')
-rw-r--r--gcc/config/arm/predicates.md8
1 files changed, 8 insertions, 0 deletions
diff --git a/gcc/config/arm/predicates.md b/gcc/config/arm/predicates.md
index 6eaab3d49e9..9fd9ad216fc 100644
--- a/gcc/config/arm/predicates.md
+++ b/gcc/config/arm/predicates.md
@@ -376,6 +376,14 @@
/*return_pc=*/true);
})
+(define_special_predicate "pop_multiple_fp"
+ (match_code "parallel")
+{
+ return ldm_stm_operation_p (op, /*load=*/true, DFmode,
+ /*consecutive=*/true,
+ /*return_pc=*/false);
+})
+
(define_special_predicate "multi_register_push"
(match_code "parallel")
{