Commit d5909a79 by Richard Henderson Committed by Richard Henderson

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
parent e0073fa8
2002-09-13 Richard Henderson <rth@redhat.com>
* 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 <aj@suse.de> 2002-09-13 Andreas Jaeger <aj@suse.de>
* Makefile.in (print-rtl.o): Depend on CONFIG_H. * Makefile.in (print-rtl.o): Depend on CONFIG_H.
......
...@@ -8376,6 +8376,7 @@ alphaev4_insn_pipe (insn) ...@@ -8376,6 +8376,7 @@ alphaev4_insn_pipe (insn)
case TYPE_MISC: case TYPE_MISC:
case TYPE_IBR: case TYPE_IBR:
case TYPE_JSR: case TYPE_JSR:
case TYPE_CALLPAL:
case TYPE_FCPYS: case TYPE_FCPYS:
case TYPE_FCMOV: case TYPE_FCMOV:
case TYPE_FADD: case TYPE_FADD:
...@@ -8418,6 +8419,7 @@ alphaev5_insn_pipe (insn) ...@@ -8418,6 +8419,7 @@ alphaev5_insn_pipe (insn)
case TYPE_IBR: case TYPE_IBR:
case TYPE_JSR: case TYPE_JSR:
case TYPE_CALLPAL:
return EV5_E1; return EV5_E1;
case TYPE_FCPYS: case TYPE_FCPYS:
......
...@@ -97,7 +97,7 @@ ...@@ -97,7 +97,7 @@
;; separately. ;; separately.
(define_attr "type" (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" fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none"
(const_string "iadd")) (const_string "iadd"))
...@@ -4866,7 +4866,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none" ...@@ -4866,7 +4866,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none"
[(unspec_volatile [(const_int 0)] UNSPECV_IMB)] [(unspec_volatile [(const_int 0)] UNSPECV_IMB)]
"" ""
"call_pal 0x86" "call_pal 0x86"
[(set_attr "type" "ibr")]) [(set_attr "type" "callpal")])
;; BUGCHK is documented common to OSF/1 and VMS PALcode. ;; BUGCHK is documented common to OSF/1 and VMS PALcode.
;; NT does not document anything at 0x81 -- presumably it would generate ;; 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" ...@@ -4876,7 +4876,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none"
[(trap_if (const_int 1) (const_int 0))] [(trap_if (const_int 1) (const_int 0))]
"!TARGET_ABI_WINDOWS_NT" "!TARGET_ABI_WINDOWS_NT"
"call_pal 0x81" "call_pal 0x81"
[(set_attr "type" "ibr")]) [(set_attr "type" "callpal")])
;; For userland, we load the thread pointer from the TCB. ;; For userland, we load the thread pointer from the TCB.
;; For the kernel, we load the per-cpu private value. ;; 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" ...@@ -4891,7 +4891,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none"
else else
return "call_pal 0x9e"; return "call_pal 0x9e";
} }
[(set_attr "type" "ibr")]) [(set_attr "type" "callpal")])
;; For completeness, and possibly a __builtin function, here's how to ;; For completeness, and possibly a __builtin function, here's how to
;; set the thread pointer. Since we don't describe enough of this ;; 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" ...@@ -4913,7 +4913,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi,none"
else else
return "call_pal 0x9f"; 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 ;; 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 ;; are done via define_expand. Start with the floating-point insns, since
......
...@@ -59,6 +59,11 @@ ...@@ -59,6 +59,11 @@
(eq_attr "type" "ibr,jsr")) (eq_attr "type" "ibr,jsr"))
"ev4_ib1+ev4_bbox,ev4_bbox") "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 (define_insn_reservation "ev4_fbr" 2
(and (eq_attr "cpu" "ev4") (and (eq_attr "cpu" "ev4")
(eq_attr "type" "fbr")) (eq_attr "type" "fbr"))
......
...@@ -59,6 +59,11 @@ ...@@ -59,6 +59,11 @@
(eq_attr "type" "ibr")) (eq_attr "type" "ibr"))
"ev5_e1") "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 (define_insn_reservation "ev5_jsr" 1
(and (eq_attr "cpu" "ev5") (and (eq_attr "cpu" "ev5")
(eq_attr "type" "jsr")) (eq_attr "type" "jsr"))
......
...@@ -113,7 +113,7 @@ ...@@ -113,7 +113,7 @@
; Integer branches issue to upper units ; Integer branches issue to upper units
(define_insn_reservation "ev6_ibr" 1 (define_insn_reservation "ev6_ibr" 1
(and (eq_attr "cpu" "ev6") (and (eq_attr "cpu" "ev6")
(eq_attr "type" "ibr")) (eq_attr "type" "ibr,callpal"))
"ev6_u") "ev6_u")
; Calls only issue to L0. ; Calls only issue to L0.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment