aboutsummaryrefslogtreecommitdiff
path: root/gcc/config/alpha
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2002-09-13 11:01:09 -0700
committerRichard Henderson <rth@gcc.gnu.org>2002-09-13 11:01:09 -0700
commitd5909a796384bd39e8b9ed6c883f78e47438ef5b (patch)
tree7fe0fa0686fd7867ef399d6cfa88c9b1f5d0cba6 /gcc/config/alpha
parente0073fa817569a794f1459b4a41c6da23ac8a7b2 (diff)
downloadgcc-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.c2
-rw-r--r--gcc/config/alpha/alpha.md10
-rw-r--r--gcc/config/alpha/ev4.md5
-rw-r--r--gcc/config/alpha/ev5.md5
-rw-r--r--gcc/config/alpha/ev6.md2
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.