Index: gcc/gcc/config/arm/cortex-a8.md |
diff --git a/gcc/gcc/config/arm/cortex-a8.md b/gcc/gcc/config/arm/cortex-a8.md |
index e982e048809b1db410212cd7378b8f0b935252be..8ac754ebc2811f9cda017881d339f1362262fd33 100644 |
--- a/gcc/gcc/config/arm/cortex-a8.md |
+++ b/gcc/gcc/config/arm/cortex-a8.md |
@@ -47,17 +47,15 @@ |
"(cortex_a8_alu0+cortex_a8_issue_ls)|\ |
(cortex_a8_alu1+cortex_a8_issue_ls)") |
-;; ...and in the case of two micro-ops. We don't need to reserve |
-;; cortex_a8_issue_ls here because dual issue is altogether forbidden |
+;; ...and in the case of two micro-ops. Dual issue is altogether forbidden |
;; during the issue cycle of the first micro-op. (Instead of modelling |
;; a separate issue unit, we instead reserve alu0 and alu1 to |
;; prevent any other instructions from being issued upon that first cycle.) |
;; Even though the load/store pipeline is usually available in either |
-;; ALU pipe, multi-cycle instructions always issue in pipeline 0. This |
-;; reservation is therefore the same as cortex_a8_multiply_2 below. |
+;; ALU pipe, multi-cycle instructions always issue in pipeline 0. |
(define_reservation "cortex_a8_load_store_2" |
- "cortex_a8_alu0+cortex_a8_alu1,\ |
- cortex_a8_alu0") |
+ "cortex_a8_alu0+cortex_a8_alu1+cortex_a8_issue_ls,\ |
+ cortex_a8_alu0+cortex_a8_issue_ls") |
;; The flow of a single-cycle multiplication. |
(define_reservation "cortex_a8_multiply" |
@@ -87,8 +85,9 @@ |
;; (source read in E2 and destination available at the end of that cycle). |
(define_insn_reservation "cortex_a8_alu" 2 |
(and (eq_attr "tune" "cortexa8") |
- (ior (and (eq_attr "type" "alu") |
- (not (eq_attr "insn" "mov,mvn"))) |
+ (ior (and (and (eq_attr "type" "alu") |
+ (eq_attr "neon_type" "none")) |
+ (not (eq_attr "insn" "mov,mvn"))) |
(eq_attr "insn" "clz"))) |
"cortex_a8_default") |