alpha.md (sibcall_osf_1_er): New.
authorRichard Henderson <rth@redhat.com>
Sun, 16 Dec 2001 05:40:26 +0000 (21:40 -0800)
committerRichard Henderson <rth@gcc.gnu.org>
Sun, 16 Dec 2001 05:40:26 +0000 (21:40 -0800)
        * config/alpha/alpha.md (sibcall_osf_1_er): New.
        (sibcall_value_osf_1_er): New.

From-SVN: r48061

gcc/ChangeLog
gcc/config/alpha/alpha.md

index 9cd09b9dd4ef6c8d05670194f2fda26c9a1f11fc..51f4c5202be59115b99886f58f49ea0216f7e10f 100644 (file)
@@ -1,3 +1,8 @@
+2001-12-15  Richard Henderson  <rth@redhat.com>
+
+       * config/alpha/alpha.md (sibcall_osf_1_er): New.
+       (sibcall_value_osf_1_er): New.
+
 2001-12-15  Dan Nicolaescu  <dann@ics.uci.edu>
 
         * config/sparc/sparc.c (mems_ok_for_ldd_peep): Rename from
index d1634aafea50c39a07ced7b342baa7cf00a2cd62..0959e58976dedd52986f2abe21618dc684518f3a 100644 (file)
@@ -4820,7 +4820,7 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
   "@
    jsr $26,(%0),0\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*
    bsr $26,$%0..ng
-   ldq $27,%0($29)\t\t!literal!%#\;jsr $26,($27),0\t\t!lituse_jsr!%#\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*"
+   ldq $27,%0($29)\t\t!literal!%#\;jsr $26,($27),%0\t\t!lituse_jsr!%#\;ldah $29,0($26)\t\t!gpdisp!%*\;lda $29,0($29)\t\t!gpdisp!%*"
   [(set_attr "type" "jsr")
    (set_attr "length" "12,*,16")])
 
@@ -4925,11 +4925,22 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
 
 ;; Note that the DEC assembler expands "jmp foo" with $at, which
 ;; doesn't do what we want.
+(define_insn "*sibcall_osf_1_er"
+  [(call (mem:DI (match_operand:DI 0 "symbolic_operand" "R,s"))
+        (match_operand 1 "" ""))
+   (use (reg:DI 29))]
+  "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
+  "@
+   br $31,$%0..ng
+   ldq $27,%0($29)\t\t!literal!%#\;jmp $31,($27),%0\t\t!lituse_jsr!%#"
+  [(set_attr "type" "jsr")
+   (set_attr "length" "*,8")])
+
 (define_insn "*sibcall_osf_1"
   [(call (mem:DI (match_operand:DI 0 "symbolic_operand" "R,s"))
         (match_operand 1 "" ""))
    (use (reg:DI 29))]
-  "TARGET_ABI_OSF"
+  "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   "@
    br $31,$%0..ng
    lda $27,%0\;jmp $31,($27),%0"
@@ -6920,12 +6931,24 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
   [(set_attr "type" "jsr")
    (set_attr "length" "12,*,16")])
 
+(define_insn "*sibcall_value_osf_1_er"
+  [(set (match_operand 0 "" "")
+       (call (mem:DI (match_operand:DI 1 "symbolic_operand" "R,s"))
+             (match_operand 2 "" "")))
+   (use (reg:DI 29))]
+  "TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
+  "@
+   br $31,$%1..ng
+   ldq $27,%1($29)\t\t!literal!%#\;jmp $31,($27),%1\t\t!lituse_jsr!%#"
+  [(set_attr "type" "jsr")
+   (set_attr "length" "*,8")])
+
 (define_insn "*sibcall_value_osf_1"
   [(set (match_operand 0 "" "")
        (call (mem:DI (match_operand:DI 1 "symbolic_operand" "R,s"))
              (match_operand 2 "" "")))
    (use (reg:DI 29))]
-  "TARGET_ABI_OSF"
+  "! TARGET_EXPLICIT_RELOCS && TARGET_ABI_OSF"
   "@
    br $31,$%1..ng
    lda $27,%1\;jmp $31,($27),%1"