diff options
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/config/arm/arm.c | 1 | ||||
-rw-r--r-- | gcc/config/arm/cortex-a7.md | 7 |
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. |