From: Richard Henderson Date: Fri, 13 Sep 2002 18:01:09 +0000 (-0700) Subject: alpha.md (attr type): Add callpal. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d5909a796384bd39e8b9ed6c883f78e47438ef5b;p=gcc.git 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 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0b69e8fdbf4..5a8c3c5215a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2002-09-13 Richard Henderson + + * 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. + 2002-09-13 Andreas Jaeger * Makefile.in (print-rtl.o): Depend on CONFIG_H. diff --git a/gcc/config/alpha/alpha.c b/gcc/config/alpha/alpha.c index 800476d4e8f..d5b8099718e 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 01acdf14165..b5bc6ff05c4 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 6816e44640b..41e1efd4cd7 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 69aa4a817aa..832cf6be8f3 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 78bb51f23f2..12204b69d6a 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.