/* copy the source to a register */
operands[1] = copy_to_mode_reg (mode, operands[1]);
}
- if ((mode == DImode || mode == SImode || mode == HImode || mode == QImode)
+ if ((mode == SImode || mode == HImode || mode == QImode)
&& GET_CODE (operands[1]) == CONST_INT)
{
return synth_constant (operands, mode);
}
return 0;
}
+
+/* Turn this on to recognise shift insns which aren't supported in the
+ hardware. This will allow the combiner to notice more patterns,
+ but the down side is that the asm outputter will have to emit
+ several instructions for each shift which isn't possible in the
+ hardware, this makes scheduling perform badly .*/
+
+int fake_shift()
+{
+ return 0;
+}
(ashift:SI (match_operand:SI 1 "arith_reg_operand" "0")
(match_operand:SI 2 "immediate_operand" "n")))
(clobber (reg:SI 18))]
- ""
+ "fake_shift()"
"*return output_shift(\"shll\", operands[0], operands[2], ASHIFT);"
[(set_attr "length" "12")
(set_attr "in_delay_slot" "no")
(lshiftrt:SI (match_operand:SI 1 "arith_reg_operand" "0")
(match_operand:SI 2 "immediate_operand" "n")))
(clobber (reg:SI 18))]
- ""
+ "fake_shift()"
"* return output_shift (\"shlr\", operands[0], operands[2], LSHIFTRT);"
[(set_attr "length" "12")
(set_attr "in_delay_slot" "no")
-LIBGCC1 = libgcc1.null
-CROSS_LIBGCC1 = libgcc1.null
-T_CFLAGS = -DDONT_HAVE_STDIO -DDONT_HAVE_SETJMP -Dinhibit_libc
-LIBGCC2_CFLAGS=-g -O5 $(GCC_CFLAGS)
+CROSS_LIBGCC1 = libgcc1-asm.a
+LIB1ASMSRC = sh/lib1funcs.asm
+LIB1ASMFUNCS = _ashiftrt _movstr _mulsi3 _sdivsi3 _udivsi3
+
+LIBGCC2_CFLAGS=-g -O5 $(GCC_CFLAGS)
+
+# CYGNUS LOCAL sh
+LANGUAGES=c c++ proto
+
+# CYGNUS LOCAL sh
+# These are really part of libgcc1, but this will cause them to be
+# built correctly, so... [taken from t-ose68k]
+
+LIB2FUNCS_EXTRA = fp-bit.c dp-bit.c ashlsi3.c ashrsi3.c lshrsi3.c
+
+ashlsi3.c: $(srcdir)/config/sh/ashlsi3.c
+ cp $(srcdir)/config/sh/ashlsi3.c ashlsi3.c
+
+ashrsi3.c: $(srcdir)/config/sh/ashrsi3.c
+ cp $(srcdir)/config/sh/ashrsi3.c ashrsi3.c
+
+lshrsi3.c: $(srcdir)/config/sh/lshrsi3.c
+ cp $(srcdir)/config/sh/lshrsi3.c lshrsi3.c
+
+dp-bit.c: $(srcdir)/config/fp-bit.c
+ cat $(srcdir)/config/fp-bit.c > dp-bit.c
+
+fp-bit.c: $(srcdir)/config/fp-bit.c
+ echo '#define FLOAT' > fp-bit.c
+ cat $(srcdir)/config/fp-bit.c >> fp-bit.c