* config/m32c/addsub.md (addqi3): Disparage a0/a1. (addpsi3): Expand to include memory operands. Remove reload-specific splits. * config/m32c/bitops.md (bset_qi, bset_hi, bclr_qi): New. (andqi3_16, andhi3_16, iorqi3_16, iorhi3_16): New. (andqi3_24, andhi3_24, iorqi3_24, iorhi3_24): New. (andqi3, andhi3, iorqi3, iorhi3): Convert to expanders. (shift1_qi, shift1_hi, insv): New. * config/m32c/cond.md (cbranchqi4, cbranchhi4): Remove. (cbranch<mode>4, stzx_16, stzx_24_<mode>, stzx_reversed, cmp<mode>, b<code>, s<code>, s<code>_24, movqicc, movhicc, cond_to_int): New. * config/m32c/m32c-protos.h: Update as needed. * config/m32c/m32c.c (m32c_reg_class_from_constraint): Don't default the Rcr, Rcl, Raw, and Ral constraints. Add Ra0 and Ra1. Fail for unrecognized R* constraints. (m32c_cannot_change_mode_class): Be more picky about pseudos. (m32c_const_ok_for_constraint_p): Add Imb, Imw, and I00. (m32c_extra_constraint_p2): Allow (mem (plus (plus fb int) int)). Add Sp constraint. (m32c_init_libfuncs): New. (m32c_legitimate_address_p): Add debug wrapper. (m32c_rtx_costs): New. (m32c_address_cost): New. (conversions): Add 'B' prefix. (m32c_print_operand): 'h' and 'H' pick lower and upper halves of operands, or word regnames for QI operands. 'B' prints bit position. (m32c_expand_setmemhi): New. (m32c_expand_movmemhi): New. (m32c_expand_movstr): New. (m32c_expand_cmpstr): New. (m32c_prepare_shift): Shift counts are limited to 16 bits at a time. (m32c_expand_neg_mulpsi3): Handle non-ints. (m32c_cmp_flg_0): New. (m32c_expand_movcc): New. (m32c_expand_insv): New. (m32c_scc_pattern): New. * config/m32c/m32c.h (reg classes): Add AO_REGS and A1_REGS. Take a0/a1 out of SIregs. (STORE_FLAG_VALUE): New. * config/m32c/m32c.md: Add unspecs for string moves. Define various mode and code macros. (no_insn): New. * config/m32c/mov.md: Make constraints more liberal. (zero_extendqihi2): Optimize r0/r1 case. * config/m32c/muldiv.md (mulpsi3): Check for intvals. * config/m32c/predicates.md (m32c_any_operand): New. (m32c_nonimmediate_operand): New. (m32c_hl_operand): New. (m32c_r3_operand): New. (ap_operand): New. (ma_operand): New. (memsym_operand): New. (memimmed_operand): New. (a_qi_operand): New. (m32c_eqne_operator): New. (m32c_1bit8_operand): New. (m32c_1bit16_operand): New. (m32c_1mask8_operand): New. (m32c_1mask16_operand): New. * config/m32c/blkmov.md: New file. * config/m32c/t-m32c (MD_FILES): Add blkmov. From-SVN: r111859
71 lines
2.0 KiB
Plaintext
71 lines
2.0 KiB
Plaintext
# Target Makefile Fragment for R8C/M16C/M32C
|
|
# Copyright (C) 2005
|
|
# Free Software Foundation, Inc.
|
|
# Contributed by Red Hat.
|
|
#
|
|
# This file is part of GCC.
|
|
#
|
|
# GCC is free software; you can redistribute it and/or modify it
|
|
# under the terms of the GNU General Public License as published
|
|
# by the Free Software Foundation; either version 2, or (at your
|
|
# option) any later version.
|
|
#
|
|
# GCC is distributed in the hope that it will be useful, but WITHOUT
|
|
# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
|
|
# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
|
|
# License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with GCC; see the file COPYING. If not, write to the Free
|
|
# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
|
|
# 02110-1301, USA.
|
|
|
|
LIB1ASMSRC = m32c/m32c-lib1.S
|
|
|
|
LIB1ASMFUNCS = \
|
|
__m32c_memregs \
|
|
__m32c_eh_return \
|
|
__m32c_mulsi3 \
|
|
__m32c_cmpsi2 \
|
|
__m32c_ucmpsi2 \
|
|
__m32c_jsri16
|
|
|
|
LIB2FUNCS_EXTRA = $(srcdir)/config/m32c/m32c-lib2.c
|
|
|
|
# floating point emulation libraries
|
|
|
|
FPBIT = fp-bit.c
|
|
DPBIT = 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
|
|
|
|
dp-bit.c: $(srcdir)/config/fp-bit.c
|
|
cat $(srcdir)/config/fp-bit.c > dp-bit.c
|
|
|
|
# target-specific files
|
|
|
|
md_file = md
|
|
|
|
MD_FILES = m32c predicates addsub bitops blkmov cond jump minmax mov muldiv prologue shift
|
|
|
|
# Doing it this way lets the gen* programs report the right line numbers.
|
|
|
|
md : $(MD_FILES:%=$(srcdir)/config/m32c/%.md) $(srcdir)/config/m32c/t-m32c
|
|
for md in $(MD_FILES); do \
|
|
echo "(include \"$(srcdir)/config/m32c/$$md.md\")"; \
|
|
done > md
|
|
|
|
m32c-pragma.o: $(srcdir)/config/m32c/m32c-pragma.c $(RTL_H) $(TREE_H) $(CONFIG_H)
|
|
$(CC) -c $(ALL_CFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $<
|
|
|
|
# We support four CPU series, but R8C and M16C share one multilib, and
|
|
# M32C and M32CM share another.
|
|
|
|
MULTILIB_OPTIONS = mcpu=m32cm
|
|
MULTILIB_DIRNAMES = m32cm
|
|
MULTILIB_MATCHES = mcpu?m32cm=mcpu?m32c mcpu?r8c=mcpu?m16c
|
|
|
|
EXTRA_MULTILIB_PARTS = crtbegin.o crtend.o
|