aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/arm/arm.c1
-rw-r--r--gcc/config/arm/cortex-a7.md7
3 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index a40f35c..a994755 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com>
+ * config/arm/arm.c (cortexa7_younger): Return true for TYPE_CALL.
+ * config/arm/cortex-a7.md (cortex_a7_call): Update required units.
+
+2013-01-29 Greta Yorsh <Greta.Yorsh@arm.com>
+
* config/arm/arm-protos.h (arm_mac_accumulator_is_result): New
declaration.
* config/arm/arm.c (arm_mac_accumulator_is_result): New function.
diff --git a/gcc/config/arm/arm.c b/gcc/config/arm/arm.c
index 0aa24b1..d7877b0 100644
--- a/gcc/config/arm/arm.c
+++ b/gcc/config/arm/arm.c
@@ -8758,6 +8758,7 @@ cortexa7_younger (FILE *file, int verbose, rtx insn)
case TYPE_SIMPLE_ALU_IMM:
case TYPE_SIMPLE_ALU_SHIFT:
case TYPE_BRANCH:
+ case TYPE_CALL:
return true;
default:
return false;
diff --git a/gcc/config/arm/cortex-a7.md b/gcc/config/arm/cortex-a7.md
index a8d4432..0d249b5 100644
--- a/gcc/config/arm/cortex-a7.md
+++ b/gcc/config/arm/cortex-a7.md
@@ -80,12 +80,15 @@
(eq_attr "neon_type" "none")))
"(cortex_a7_ex2|cortex_a7_ex1)+cortex_a7_branch")
-;; A call reserves all issue slots. The result is available the next cycle.
+;; Call cannot dual-issue as an older instruction. It can dual-issue
+;; as a younger instruction, or single-issue. Call cannot dual-issue
+;; with another branch instruction. The result is available the next
+;; cycle.
(define_insn_reservation "cortex_a7_call" 1
(and (eq_attr "tune" "cortexa7")
(and (eq_attr "type" "call")
(eq_attr "neon_type" "none")))
- "cortex_a7_all")
+ "(cortex_a7_ex2|cortex_a7_both)+cortex_a7_branch")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; ALU instructions.