diff options
author | Richard Henderson <rth@redhat.com> | 2002-09-13 11:01:09 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-09-13 11:01:09 -0700 |
commit | d5909a796384bd39e8b9ed6c883f78e47438ef5b (patch) | |
tree | 7fe0fa0686fd7867ef399d6cfa88c9b1f5d0cba6 /gcc/config/alpha | |
parent | e0073fa817569a794f1459b4a41c6da23ac8a7b2 (diff) | |
download | gcc-d5909a796384bd39e8b9ed6c883f78e47438ef5b.zip gcc-d5909a796384bd39e8b9ed6c883f78e47438ef5b.tar.gz gcc-d5909a796384bd39e8b9ed6c883f78e47438ef5b.tar.bz2 |
alpha.md (attr type): Add callpal.
* config/alpha/alpha.md (attr type): Add callpal.
(imb, trap, load_tp, set_tp): Use it.
* config/alpha/ev4.md (ev4_callpal): New.
* config/alpha/ev5.md (ev5_callpal): New.
* config/alpha/ev6.md (ev6_ibr): Handle callpal.
* config/alpha/alpha.c (alphaev4_insn_pipe): Handle TYPE_CALLPAL.
(alphaev5_insn_pipe): Likewise.
From-SVN: r57113
Diffstat (limited to 'gcc/config/alpha')
-rw-r--r-- | gcc/config/alpha/alpha.c | 2 | ||||
-rw-r--r-- | gcc/config/alpha/alpha.md | 10 | ||||
-rw-r--r-- | gcc/config/alpha/ev4.md | 5 | ||||
-rw-r--r-- | gcc/config/alpha/ev5.md | 5 | ||||
-rw-r--r-- | gcc/config/alpha/ev6.md | 2 |
5 files changed, 18 insertions, 6 deletions
diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 800476d..d5b8099 100644 --- a/gcc/config/alpha/alpha.c +++ b/gcc/config/alpha/alpha.c @@ -8376,6 +8376,7 @@ alphaev4_insn_pipe (insn) case TYPE_MISC: case TYPE_IBR: case TYPE_JSR: + case TYPE_CALLPAL: case TYPE_FCPYS: case TYPE_FCMOV: case TYPE_FADD: @@ -8418,6 +8419,7 @@ alphaev5_insn_pipe (insn) case TYPE_IBR: case TYPE_JSR: + case TYPE_CALLPAL: return EV5_E1; case TYPE_FCPYS: diff --git a/gcc/config/alpha/alpha.md b/gcc/config/alpha/alpha.md index 01acdf1..b5bc6ff 100644 --- a/gcc/config/alpha/alpha.md +++ b/gcc/config/alpha/alpha.md @@ -97,7 +97,7 @@ ;; separately. (define_attr "type" - "ild,fld,ldsym,ist,fst,ibr,fbr,jsr,iadd,ilog,shift,icmov,fcmov,icmp,imul,\ + "ild,fld,ldsym,ist,fst,ibr,callpal,fbr,jsr,iadd,ilog,shift,icmov,fcmov,icmp,imul,\ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none" (const_string "iadd")) @@ -4866,7 +4866,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none" [(unspec_volatile [(const_int 0)] UNSPECV_IMB)] "" "call_pal 0x86" - [(set_attr "type" "ibr")]) + [(set_attr "type" "callpal")]) ;; BUGCHK is documented common to OSF/1 and VMS PALcode. ;; NT does not document anything at 0x81 -- presumably it would generate @@ -4876,7 +4876,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none" [(trap_if (const_int 1) (const_int 0))] "!TARGET_ABI_WINDOWS_NT" "call_pal 0x81" - [(set_attr "type" "ibr")]) + [(set_attr "type" "callpal")]) ;; For userland, we load the thread pointer from the TCB. ;; For the kernel, we load the per-cpu private value. @@ -4891,7 +4891,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none" else return "call_pal 0x9e"; } - [(set_attr "type" "ibr")]) + [(set_attr "type" "callpal")]) ;; For completeness, and possibly a __builtin function, here's how to ;; set the thread pointer. Since we don't describe enough of this @@ -4913,7 +4913,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none" else return "call_pal 0x9f"; } - [(set_attr "type" "ibr")]) + [(set_attr "type" "callpal")]) ;; Finally, we have the basic data motion insns. The byte and word insns ;; are done via define_expand. Start with the floating-point insns, since diff --git a/gcc/config/alpha/ev4.md b/gcc/config/alpha/ev4.md index 6816e44..41e1efd 100644 --- a/gcc/config/alpha/ev4.md +++ b/gcc/config/alpha/ev4.md @@ -59,6 +59,11 @@ (eq_attr "type" "ibr,jsr")) "ev4_ib1+ev4_bbox,ev4_bbox") +(define_insn_reservation "ev4_callpal" 2 + (and (eq_attr "cpu" "ev4") + (eq_attr "type" "callpal")) + "ev4_ib1+ev4_bbox,ev4_bbox") + (define_insn_reservation "ev4_fbr" 2 (and (eq_attr "cpu" "ev4") (eq_attr "type" "fbr")) diff --git a/gcc/config/alpha/ev5.md b/gcc/config/alpha/ev5.md index 69aa4a8..832cf6b 100644 --- a/gcc/config/alpha/ev5.md +++ b/gcc/config/alpha/ev5.md @@ -59,6 +59,11 @@ (eq_attr "type" "ibr")) "ev5_e1") +(define_insn_reservation "ev5_callpal" 1 + (and (eq_attr "cpu" "ev5") + (eq_attr "type" "callpal")) + "ev5_e1") + (define_insn_reservation "ev5_jsr" 1 (and (eq_attr "cpu" "ev5") (eq_attr "type" "jsr")) diff --git a/gcc/config/alpha/ev6.md b/gcc/config/alpha/ev6.md index 78bb51f..12204b6 100644 --- a/gcc/config/alpha/ev6.md +++ b/gcc/config/alpha/ev6.md @@ -113,7 +113,7 @@ ; Integer branches issue to upper units (define_insn_reservation "ev6_ibr" 1 (and (eq_attr "cpu" "ev6") - (eq_attr "type" "ibr")) + (eq_attr "type" "ibr,callpal")) "ev6_u") ; Calls only issue to L0. |