aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/alpha/ev5.md
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2005-04-18 09:13:00 -0700
committerRichard Henderson <rth@gcc.gnu.org>2005-04-18 09:13:00 -0700
commit0b196b187b335a83b98c9dcad22b75ba84c455b9 (patch)
treed03d3c5e67f21af4ac017cf55ce23f1beda9b168 /gcc/config/alpha/ev5.md
parent46c94db61830d164a410f0f09d605c9cecedb2eb (diff)
downloadgcc-0b196b187b335a83b98c9dcad22b75ba84c455b9.zip
gcc-0b196b187b335a83b98c9dcad22b75ba84c455b9.tar.gz
gcc-0b196b187b335a83b98c9dcad22b75ba84c455b9.tar.bz2
alpha.c (alpha_split_atomic_op): New.
* config/alpha/alpha.c (alpha_split_atomic_op): New. (alphaev5_insn_pipe): Add LD_L, ST_C, MB types. (alphaev4_insn_pipe): Likewise. Correct IST and LDSYM pipes. * config/alpha/alpha-protos.h: Update. * config/alpha/alpha.md (UNSPECV_MB, UNSPECV_LL, UNSPECV_SC): New. (UNSPECV_ATOMIC, UNSPECV_CMPXCHG, UNSPECV_XCHG): New. (attr type): Add ld_l, st_c, mb. (andsi_internal, andnotsi3, iorsi_internal, one_cmplsi_internal, iornotsi3, xorsi_internal, xornotsi3): New. * config/alpha/ev4.md (ev4_ld): Add ld_l. (ev4_ist_c, ev4_mb): New. * config/alpha/ev5.md (ev5_st): Add st_c, mb. (ev5_ld_l): New. * config/alpha/ev6.md (ev6_ild): Add ld_l. (ev6_ist): Add st_c. (ev6_mb): New. * config/alpha/sync.md: New file. From-SVN: r98328
Diffstat (limited to 'gcc/config/alpha/ev5.md')
-rw-r--r--gcc/config/alpha/ev5.md9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/config/alpha/ev5.md b/gcc/config/alpha/ev5.md
index d4b0b95..b61cfe8 100644
--- a/gcc/config/alpha/ev5.md
+++ b/gcc/config/alpha/ev5.md
@@ -43,7 +43,7 @@
(define_insn_reservation "ev5_st" 1
(and (eq_attr "tune" "ev5")
- (eq_attr "type" "ist,fst"))
+ (eq_attr "type" "ist,fst,st_c,mb"))
"ev5_e0+ev5_st")
; Loads from L0 complete in two cycles. adjust_cost still factors
@@ -53,6 +53,11 @@
(eq_attr "type" "ild,fld,ldsym"))
"ev5_e01+ev5_ld")
+(define_insn_reservation "ev5_ld_l" 1
+ (and (eq_attr "tune" "ev5")
+ (eq_attr "type" "ld_l"))
+ "ev5_e0+ev5_ld")
+
; Integer branches slot only to E1.
(define_insn_reservation "ev5_ibr" 1
(and (eq_attr "tune" "ev5")
@@ -129,7 +134,7 @@
; Model this instead with increased latency on the input instruction.
(define_bypass 3
- "ev5_ld,ev5_shift,ev5_mvi,ev5_cmov,ev5_iadd,ev5_ilogcmp"
+ "ev5_ld,ev5_ld_l,ev5_shift,ev5_mvi,ev5_cmov,ev5_iadd,ev5_ilogcmp"
"ev5_imull,ev5_imulq,ev5_imulh")
(define_bypass 9 "ev5_imull" "ev5_imull,ev5_imulq,ev5_imulh")