alpha.md (unaligned_extendhidi_be): Fix.
authorRoman Lechtchinsky <rl@cs.tu-berlin.de>
Fri, 14 Sep 2001 16:25:26 +0000 (16:25 +0000)
committerRichard Henderson <rth@gcc.gnu.org>
Fri, 14 Sep 2001 16:25:26 +0000 (09:25 -0700)
        * config/alpha/alpha.md (unaligned_extendhidi_be): Fix.
        * config/alpha/unicosmk.h (INIT_TARGET_OPTABS): New.

From-SVN: r45600

gcc/ChangeLog
gcc/config/alpha/alpha.md
gcc/config/alpha/unicosmk.h

index fe050c8a3ee21528d1c2e59a6d2731ba8d8b15c6..5855c43a3763a7405e04ba4ac72659d43adc091e 100644 (file)
@@ -1,3 +1,8 @@
+2001-09-14  Roman Lechtchinsky  <rl@cs.tu-berlin.de>
+
+       * config/alpha/alpha.md (unaligned_extendhidi_be): Fix.
+       * config/alpha/unicosmk.h (INIT_TARGET_OPTABS): New.
+
 2001-09-14  Nick Clifton  <nickc@cambridge.redhat.com>
 
        * rtlanal.c (subreg_regno_offset): Add semicolon to end of
index 9a25ef48c9db66bcf6e30c2b2d59a75d5ea1ca1e..494a997754fc357379cfc9e580e1d34dde59077f 100644 (file)
@@ -1848,8 +1848,10 @@ fadd,fmul,fcpys,fdiv,fsqrt,misc,mvi,ftoi,itof,multi"
    (set (match_dup 6)
        (ashift:DI (match_dup 4)
                   (ashift:DI
-                    (and:DI (match_dup 5) (const_int 7))
-                    (const_int 8))))
+                    (and:DI
+                      (plus:DI (match_dup 5) (const_int 1))
+                      (const_int 7))
+                    (const_int 3))))
    (set (subreg:DI (match_operand:QI 0 "register_operand" "") 0)
        (ashiftrt:DI (match_dup 6) (const_int 48)))]
   "WORDS_BIG_ENDIAN"
index 6ecc3d2e0fe5de0e8e048810e5e7622502fa22f7..62ce020c21242aac80fc0cdc966c3b5498a4f30e 100644 (file)
@@ -648,6 +648,14 @@ ssib_section ()                    \
 #define UDIVDI3_LIBCALL        "$uldiv"
 #define DIVDI3_LIBCALL "$sldiv"
 
+/* This is necessary to prevent gcc from generating calls to __divsi3.  */
+
+#define INIT_TARGET_OPTABS                                     \
+  do {                                                         \
+    sdiv_optab->handlers[(int) SImode].libfunc = NULL_RTX;     \
+    udiv_optab->handlers[(int) SImode].libfunc = NULL_RTX;     \
+  } while (0)
+
 #undef ASM_OUTPUT_SOURCE_LINE
 
 /* We don't need a start file.  */