diff options
Diffstat (limited to 'gcc/config/arm/cortex-a57.md')
-rw-r--r-- | gcc/config/arm/cortex-a57.md | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/gcc/config/arm/cortex-a57.md b/gcc/config/arm/cortex-a57.md index c751dd43b0e..bd23e8dbfba 100644 --- a/gcc/config/arm/cortex-a57.md +++ b/gcc/config/arm/cortex-a57.md @@ -747,20 +747,20 @@ neon_fp_sqrt_s_q, neon_fp_sqrt_d_q")) "ca57_cx2_block*3") -(define_insn_reservation "cortex_a57_crypto_simple" 4 +(define_insn_reservation "cortex_a57_crypto_simple" 3 (and (eq_attr "tune" "cortexa57") (eq_attr "type" "crypto_aese,crypto_aesmc,crypto_sha1_fast,crypto_sha256_fast")) - "ca57_cx2") + "ca57_cx1") -(define_insn_reservation "cortex_a57_crypto_complex" 7 +(define_insn_reservation "cortex_a57_crypto_complex" 6 (and (eq_attr "tune" "cortexa57") (eq_attr "type" "crypto_sha1_slow,crypto_sha256_slow")) - "ca57_cx2+(ca57_cx2_issue,ca57_cx2)") + "ca57_cx1*2") -(define_insn_reservation "cortex_a57_crypto_xor" 7 +(define_insn_reservation "cortex_a57_crypto_xor" 6 (and (eq_attr "tune" "cortexa57") (eq_attr "type" "crypto_sha1_xor")) - "(ca57_cx1+ca57_cx2)") + "(ca57_cx1*2)|(ca57_cx2*2)") ;; We lie with calls. They take up all issue slots, but are otherwise ;; not harmful. @@ -797,3 +797,8 @@ (define_bypass 1 "cortex_a57_*" "cortex_a57_call,cortex_a57_branch") +;; AESE+AESMC and AESD+AESIMC pairs forward with zero latency +(define_bypass 0 "cortex_a57_crypto_simple" + "cortex_a57_crypto_simple" + "aarch_crypto_can_dual_issue") + |