2021-06-09  Mike Frysinger  <vapier@gentoo.org>

	* gen-itable.c (NULL): Delete.
	* gen-model.c (NULL): Likewise.
	* ld-cache.c (NULL): Likewise.
	* ld-decode.c (NULL): Likewise.

2021-06-05  Mike Frysinger  <vapier@gentoo.org>

	* local.mk (all-recursive): Delete rule.
	(SIM_ALL_RECURSIVE_DEPS): Append.

2021-05-04  Mike Frysinger  <vapier@gentoo.org>

	* local.mk (igen/libigen.a): New target.

2021-05-02  Mike Frysinger  <vapier@gentoo.org>

	* lf.h: Include ansidecl.h.
	(lf_printf): Change __attribute__((printf)) to ATTRIBUTE_PRINTF.

2021-04-02  Mike Frysinger  <vapier@gentoo.org>

	* local.mk: New file.
	* aclocal.m4, Makefile.in, configure.ac, configure: Removed.

2021-04-02  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Call SIM_AC_TOOLCHAIN and AC_CONFIG_FILES.
	(AC_PROG_INSTALL, AC_PROG_CC, AC_CANONICAL_SYSTEM, CC_FOR_BUILD,
	CFLAGS_FOR_BUILD): Delete.
	* aclocal.m4: New file.
	* configure: Regenerate.

2021-03-13  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (LDFLAGS_FOR_BUILD): Define.
	(BUILD_LDFLAGS): Delete.
	(LINK_FOR_BUILD): Change BUILD_LDFLAGS to LDFLAGS_FOR_BUILD.
	* configure.ac (LDFLAGS_FOR_BUILD): Define.
	* configure: Regenerate.

2021-03-13  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (COMPILE_FOR_BUILD, LINK_FOR_BUILD): Define.
	(.c.o, igen.o): Call COMPILE_FOR_BUILD.
	(igen, tmp-table, tmp-filter, tmp-ld-decode, tmp-ld-cache, tmp-ld-insn,
	tmp-gen): Call LINK_FOR_BUILD.

2021-03-08  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (tmp-table, tmp-filter, tmp-ld-decode, tmp-ld-cache,
	tmp-ld-insn, tmp-gen): Delete $(BUILD_LIBS).

2021-03-07  Mike Frysinger  <vapier@gentoo.org>

	* gen.c (main): Delete options arg to INIT_OPTIONS.
	* ld-decode.c (main): Likewise.
	* ld-insn.c (main): Likewise.

2021-03-07  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (check): Define.

2021-02-28  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (filter_filename.o): Delete unused target.
	(distclean): Remove config.h.
	(config.h, stamp-h): Delete targets.
	* configure.ac (AC_CONFIG_HEADER): Delete call.
	(AC_CHECK_HEADERS, AC_HEADER_DIRENT): Likewise.
	(AC_OUTPUT): Remove 2nd arg.
	* filter.c: Remove config.h include.
	* filter_host.c, igen.c, lf.c, misc.c, misc.h: Likewise.
	* table.c: Likewise.  Remove HAVE_UNISTD_H check.
	* configure: Regenerate.
	* config.in: Removed.

2021-02-28  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (program_transform_name, AR, RANLIB): Delete.
	* configure.ac (AC_ARG_PROGRAM, AC_PROG_RANLIB): Delete calls.
	(AC_SUBST): Delete AR & CFLAGS calls.
	* configure: Regenerate.

2021-02-28  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (AR_FOR_BUILD, AR_FLAGS_FOR_BUILD,
	RANLIB_FOR_BUILD): Delete.
	* configure.ac: Likewise.
	* configure: Regenerate.

2021-02-21  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (AC_CONFIG_MACRO_DIRS): Replace common with m4.
	* configure: Regenerate.

2021-02-13  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Replace sinclude with AC_CONFIG_MACRO_DIRS.
	* configure: Regenerate.

2021-02-06  Mike Frysinger  <vapier@gentoo.org>

	* Makefile.in (LIBIBERTY_LIB): Delete.
	(igen): Delete $(LIBIBERTY_LIB).
	* configure.ac (LIBIBERTY_LIB): Delete.
	* configure: Regenerate.

2021-02-06  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Delete bfd/configure.host sourcing.
	* configure: Regenerate.

2021-01-11  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac (AC_CHECK_HEADERS): Delete stdlib.h, string.h, and
	strings.h.
	* configure, configure.ac: Regenerate.

2021-01-11  Mike Frysinger  <vapier@gentoo.org>

	* filter.c, if.c, misc.c, misc.h, table.c: Delete HAVE_STRING_H,
	HAVE_STRINGS_H, HAVE_STDLIB_H, and strings.h include.

2021-01-09  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2021-01-04  Mike Frysinger  <vapier@gentoo.org>

	* gen-icache.c, igen.c: Include stdlib.h.

2021-01-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2020-07-03  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	PR sim/26194
	* lf.h (lf_get_file_type): Declare.
	* lf.c (lf_get_file_type): Define.
	* gen-idecode.c (print_idecode_issue_function_header): Use
	lf_get_file_type() to issue an extern variable declaration in
	case of header files.

2019-12-19  Tom Tromey  <tromey@adacore.com>

	PR build/24572:
	* Makefile.in (install-strip): New target.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-10  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2016-01-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-06-12  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2015-04-24  David Binderman  <dcb314@hotmail.com>
	    Nick Clifton  <nickc@redhat.com>

	PR 18273
	* misc.c (a2i): Fix typos checking for uppercase letters.

2015-04-17  Mike Frysinger  <vapier@gentoo.org>

	* gen-engine.c (print_run_body): Change CIA_GET to CPU_PC_GET and
	CIA_SET to CPU_PC_SET.

2015-03-31  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2014-11-23  Joel Sherrill  <joel.sherrill@oarcorp.com>

	* igen/ld-cache.h, igen/table.h: Change immediatly to immediately.

2014-03-04  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2013-11-25  Steve Ellcey  <sellcey@mips.com>

	* igen/Makefile.in (igen): Use BUILD_CFLAGS in link.

2013-05-10  Freddie Chopin  <freddie_chopin@op.pl>

	* configure: Rebuild.

2012-03-24  Mike Frysinger  <vapier@gentoo.org>

	* configure: Regenerate.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change include to common/acinclude.m4.

2011-10-17  Mike Frysinger  <vapier@gentoo.org>

	* configure.ac: Change AC_PREREQ to 2.64.  Delete AC_CONFIG_HEADER
	call.  Replace common.m4 include with SIM_AC_COMMON.
	* configure: Regenerate.

2011-07-08  Hans-Peter Nilsson  <hp@axis.com>

	* ld-insn.c (print_insn_words): For fields, print conditionals.

	Correct handling of constant named fields.
	* gen.c (insn_field_cmp): Tweak comment about neither field
	being an insn_field_string with a cond_eq-to-value condition.
	(insns_bit_useless) <case insn_field_string, case
	decode_find_mixed>: Handle cond_eq-to-value fields as
	insn_field_int.
	* gen-idecode.c (print_idecode_validate): Handle
	insn_field_string cond-equal-to-value fields as insn_field_int.
	* gen-icache.c (print_icache_body): Add comment why constant
	string fields are handled.

	Remove all #if 0'd code.
	* filter.c: Remove #if 0'd function it_is.
	(main): Remove #if 0'd code.
	* gen-engine.c: Remove #if 0'd functions print_jump,
	print_jump_insn, print_jump_definition,
	print_jump_internal_function, print_jump_body.
	(gen_engine_c): Remove #if 0'd code.
	* gen-idecode.c: Remove #if 0'd functions print_jump print_jump,
	print_jump_insn, print_jump_definition,
	print_jump_internal_function, print_jump_until_stop_body.
	* gen-model.c: Remove #if 0'd functions model_c_or_h_data,
	model_c_or_h_function, gen_model_h, model_c_insn,
	model_c_function, gen_model_c and types model_c_passed_data
	and struct _model_c_passed_data.
	* gen.c: Remove #if 0'd type constant_field_types and function
	insn_field_is_constant.
	(gen_entry_find_opcode_field): Remove #if 0'd code.
	* ld-insn.c (parse_insn_model_record): Remove #if 0'd code.
	* misc.h (STRDUP, STRNDUP): Remove #if 0'd macros.

2011-02-14  Mike Frysinger  <vapier@gentoo.org>

	* table.c (table_push): Change zfree to free.

2009-08-22  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* config.in: Regenerate.
	* configure: Likewise.

	* configure: Regenerate.

2009-07-30  Ralf Wildenhues  <Ralf.Wildenhues@gmx.de>

	* Makefile.in (datarootdir): New variable.

2008-08-28  Joel Brobecker  <brobecker@adacore.com>

	* compare_igen_models: Change license to GPL version 3.

2007-08-27  Joel Brobecker  <brobecker@adacore.com>

	* lf.c (lf_print__gnu_copyleft): Change license to GPL version 3.

2006-12-21  Hans-Peter Nilsson  <hp@axis.com>

	* acconfig.h: Remove.
	* config.in: Regenerate.

2005-01-11  Andrew Cagney  <cagney@localhost.localdomain>

	* configure.ac: Delete AC_CONFIG_AUX_DIR.
	* configure: Re-generate.

2005-01-07  Andrew Cagney  <cagney@gnu.org>

	* configure.ac: Rename configure.in, require autoconf 2.59.
	* configure: Re-generate.

2003-05-03  Chris Demetriou  <cgd@broadcom.com>

	* compare_igen_models: Tweak attribution slightly.

2002-11-22  Andrew Cagney  <cagney@redhat.com>

	* gen.c (name_cmp): Rename format_name_cmp.
	(insn_list_insert): When a merge, compare the format name and
	instruction name.  Add trace messages.

2002-11-21  Andrew Cagney  <ac131313@redhat.com>

	* filter.c: Re-indent.
	* filter.h, filter_host.h, gen-engine.c, gen-engine.h: Ditto.
	* gen-icache.c, gen-icache.h, gen-idecode.c: Ditto.
	* gen-idecode.h, gen-itable.c, gen-itable.h: Ditto.
	* gen-model.c, gen-model.h, gen-semantics.c: Ditto.
	* gen-semantics.h, gen-support.c, gen-support.h: Ditto.
	* gen.c, gen.h, igen.c, igen.h, ld-cache.c, ld-cache.h: Ditto.
	* ld-decode.c, ld-decode.h, ld-insn.c, ld-insn.h, lf.c: Ditto.
	* lf.h, misc.c, misc.h, table.c, table.h: Ditto.

2002-11-21  Andrew Cagney  <ac131313@redhat.com>

	* Makefile.in: Update copyright.  IGEN contributed to the FSF.
	* filter.c, filter.h, filter_host.c, filter_host.h: Ditto.
	* gen-engine.c, gen-engine.h, gen-icache.c, gen-icache.h: Ditto.
	* gen-idecode.c, gen-idecode.h, gen-itable.c: Ditto.
	* gen-itable.h, gen-model.c, gen-model.h, gen-semantics.c: Ditto.
	* gen-semantics.h, gen-support.c, gen-support.h, gen.c: Ditto.
	* gen.h, igen.c, igen.h, ld-cache.c, ld-cache.h: Ditto.
	* ld-decode.c, ld-decode.h, ld-insn.c, ld-insn.h, lf.c: Ditto.
	* lf.h, misc.c, misc.h, table.c, table.h: Ditto.

2002-11-06  Richard Sandiford  <rsandifo@redhat.com>

	* gen-engine.c (print_engine_issue_prefix_hook): Don't add the
	global prefix to ENGINE_ISSUE_PREFIX_HOOK.
	(print_engine_issue_postfix_hook): Likewise ENGINE_ISSUE_POSTFIX_HOOK.

2002-08-28  Dave Brolley  <brolley@redhat.com>

	* gen-support.c (gen_support_h): Generate
	'#define semantic_illegal <PREFIX>_semantic_illegal'.

2002-08-22  Chris Demetriou  <cgd@broadcom.com>

	* compare_igen_models: New script.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* gen.c (gen_entry_expand_opcode): Initialize ``value'' to -1 and
	``t'' to NULL.
	* igen.c (main): Add default case to switch.
	* gen-icache.c (print_icache_extraction): Ditto.

2002-06-17  Andrew Cagney  <cagney@redhat.com>

	* Makefile.in (BUILD_CFLAGS): Remove -O0.

2002-06-16  Andrew Cagney  <ac131313@redhat.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2002-06-03  Richard Henderson  <rth@redhat.com>

	* gen-engine.c (print_run_body): Avoid multi-line strings.
	* lf.c (lf_print__gnu_copyleft): Likewise.

2002-05-01  Chris Demetriou  <cgd@broadcom.com>

	* igen.c: Use 'deprecated' rather than 'depreciated.'

2002-03-23  Andrew Cagney  <ac131313@redhat.com>

 	* gen.c (format_name_cmp): New function.
	(insn_list_insert): Use the instruction field name as an
	additional key.  Different field names indicate different
	semantics.

2002-03-07  Chris Demetriou  <cgd@broadcom.com>

	* igen.c (print_itrace_format): Add support for a new "%#lx" format.

Tue May 23 21:39:23 2000  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

2000-04-12  Frank Ch. Eigler  <fche@redhat.com>

	* gen-semantics.c (print_semantic_body): Use GPR_CLEAR(N) instead
	of GPR_SET(N,0) for gen-zero-rN.

Thu Sep  2 18:15:53 1999  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SIM_WARNINGS): Replace this with.
	(IGEN_WERROR_CFLAGS, IGEN_WARN_CFLAGS, WERROR_CFLAGS,
 	WARN_CFLAGS): With these.
	(BUILD_CFLAGS): Update.

	* configure: Regenerated to track ../common/aclocal.m4 changes.

1999-05-08  Felix Lee  <flee@cygnus.com>

	* configure: Regenerated to track ../common/aclocal.m4 changes.

Fri Dec  4 15:14:09 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (main): Fix -Pitable=.

	* gen-engine.c (print_run_body): Prefix instruction_address.

Wed Oct 28 18:12:43 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* Makefile.in (SIM_WARNINGS): Update to match ../common/aclocal.m4
 	changes.

Wed Aug 12 10:55:28 1998  Frank Ch. Eigler  <fche@cygnus.com>

	* gen-icache.c (print_icache_extraction): #undef a generated
 	symbol before #define'ing it, to remove conflict with system
 	macros.

Wed Jul 29 10:07:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.c (gen_entry_expand_opcode): For conditional, fields.  Fix
 	the extraction of the value from its source - both table and bit
 	cases were wrong.

Tue Jul 28 11:19:43 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_word): For constant conditional strings,
 	encode their bit value.

	* ld-insn.c (parse_insn_word, parse_insn_words): Allow conditional
 	operands to refer to fields in earlier instruction words.

	* gen.c (sub_val): Replace field argument with val_last_pos.
	(gen_entry_expand_opcode): Look in previous tables for a value for
 	a conditional field as well as the bits from the current table.
	(insn_list_insert): Add sort key of instructions where
 	their operand fields have different conditionals.
	(insn_field_cmp): New function.

Sun Apr 26 15:31:55 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Sun Apr 26 15:20:08 1998  Tom Tromey  <tromey@cygnus.com>

	* acconfig.h: New file.
	* configure.in: Reverted change of Apr 24; use sinclude again.

Fri Apr 24 14:16:40 1998  Tom Tromey  <tromey@creche>

	* configure: Regenerated to track ../common/aclocal.m4 changes.
	* config.in: Ditto.

Fri Apr 24 11:19:33 1998  Tom Tromey  <tromey@cygnus.com>

	* configure.in: Don't call sinclude.

Fri Apr 24 19:45:00 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_extraction): Do not type cast
 	pointers.

	* ld-insn.c (load_insn_table): Terminate error with NL.

	* gen.c (insns_bit_useless): Perform unsigned bit comparisons.

	* filter.c (is_filtered_out, filter_parse): Pacify GCC, len is
 	unsigned.

Wed Apr 22 14:27:39 1998  Michael Meissner  <meissner@cygnus.com>

	* configure: Reconfigure to pick up ../common/aclocal.m4 changes
	to suppress inlining by default.

Tue Apr 21 01:37:54 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_extraction): When generating #define
 	force the expression to the correct type.

Thu Apr 16 08:50:29 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* misc.c (name2i): strlen returns an unsigned.

Tue Apr 14 19:04:28 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h (struct igen_warn_options): Add unimplemented option.
	* igen.c (main): Update

	* ld-insn.c (load_insn_table): Report unimplemented functions.

Tue Apr 14 10:57:26 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_word): Treat `!' and `=' as valid
 	separator tokens when parsing a conditional.

	* igen.h (main): Add option -S so that suffix can be specified.

Tue Apr 14 08:44:53 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h (struct igen_trace_options): Add members insn_expansion
 	and insn_insertion.

	* igen.c (main): Add options -Gtrace-insn-expansion,
 	-Gtrace-insn-insertion and -Gtrace-all.

	* gen.c (gen_entry_expand_insns): Trace each instruction as it is
 	selected for expansion.
	(gen_entry_expand_opcode): Trace each expanded instruction as it
 	is inserted into the table.

Mon Apr 13 19:21:47 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_word): Parse conditional operators.
	(parse_insn_word): Verify field conditionals.

	* ld-insn.h: Extend syntax to allow macros and field equality.
	(struct insn_field_cond): Rename insn_field_exclusion, add type.

	* gen.c (gen_entry_expand_opcode): Check type of conditional.
	(insns_bit_useless): Ditto.

	* ld-insn.c (parse_macro_record): New function.

Mon Apr 13 22:37:47 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.h (enum insn_field_type): Add insn_field_invalid.

	* ld-insn.c (parse_insn_word): Check instruction field type
 	correctly initialized.
	(print_insn_words): Ditto.
	(insn_field_type_to_str): Ditto.
	(dump_insn_field): Ditto.

	* gen.c (insns_bit_useless): Ditto.

Fri Apr  3 18:08:16 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.h, igen.c (print_include_inline, print_includes,
 	print_includes): New functions.  Generate include list.  For for
 	semantics et.al. generate CPP code to inline when
 	C_REVEALS_MODULE_P.

	* igen.c (gen_semantics_c): Call print_includes.
	* gen-engine.c (gen_engine_c): Ditto.

Sat Apr  4 21:09:11 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h: (struct _igen_name_option): Replace with struct
 	igen_module_option. Contains both module prefix and suffix.
	(INIT_OPTIONS): Initialize.

	* igen.c (main): Update -P option to fill in full module info.
	(gen-engine.c, gen-icache.c, gen-itable.c, gen-semantics.c,
 	gen-support.c): Update.

Sat Apr  4 02:15:35 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Use TRACE_ANY_P macro to determine if any
 	tracing is needed.

Thu Mar 26 20:51:23 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* table.c (table_push):  Redo, using stdio.  Fixes NT native
	problem with <CRLF>=><LF> translation...

Tue Mar 24 23:30:07 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Re-extract the CIA after
 	processing any events.

Tue Mar 24 17:46:08 1998  Stu Grossman  <grossman@bhuna.cygnus.co.uk>

	* Makefile.in:  Get SHELL from configure.
	* configure:  Regenerate with autoconf 2.12.1 to fix shell issues for
	NT native builds.

Mon Mar 16 12:51:31 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c: Pass sim_cia to trace_prefix.

Thu Feb 26 19:25:02 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_function_record): Check models are valid.
	(parse_function_record): Only discard function when no model is
 	common.

Tue Feb 24 01:42:03 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Always wrap generated idecode
 	body in ENGINE_ISSUE_PREFIX_HOOK / ENGINE_ISSUE_POSTFIX_HOOK.

Fri Feb 20 16:22:10 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_function_record): When -Wnodiscard, suppress
 	discarded function warning.

	* igen.c (main): Clarify -Wnodiscard.

	* ld-insn.c (parse_function_record): For functions, allow use of
 	instruction style function model records

	* ld-insn.h (nr_function_model_fields): Define.

Tue Feb 17 16:36:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace_prefix): Generate call to trace_prefix
 	instead of trace_one_insn.
	(print_itrace): Generate trace_prefix call if any tracing enabled,
	(print_itrace): Nest generated call to trace_generic inside
 	conditional for any tracing enabled.
	(print_itrace_prefix): Do not pass PHASE to trace_prefix.

Tue Feb  3 14:00:32 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Add bitsize suffix to IMEM macro.
	* gen-icache.c (print_icache_body): Ditto.
	* gen-idecode.c (print_idecode_ifetch): Ditto.

	* gen-icache.c (print_icache_body): Mark successive instruction
 	words as unused.

	* ld-insn.c (parse_insn_word): Only report insn-width problems
 	when warning enabled.

	* igen.h: Add flag for warning about invalid instruction widths.
	* igen.c: Parse -Wwidth option.

	* gen-support.c (gen_support_h): Map instruction_word onto
 	<PREFIX>_instruction_word when needed.
	(print_support_function_name): Use support prefix.
	(gen_support_h): Ditto for <PREFIX>_idecode_issue.

Sun Feb  1 11:08:48 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-support.c (gen_support_h): Generate new macro CPU_.

Sat Jan 31 14:50:27 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (gen_engine_h): Don't assume a model is present.
	(gen_engine_c): Ditto.

	* igen.c (gen_run_c): Ditto.

	* gen-engine.c (print_run_body): Use CIA_GET & CIA_SET instead of
 	CPU_CIA.  Parameterize with CPU argument.

Fri Jan 30 09:09:39 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.h (struct _gen_list): Replace processor with model.

	* igen.c (gen_idecode_h): Update.
	(gen_run_c): For generated switch, use model->full_name.

	* gen.c (print_gen_entry_path): Ditto.
	(make_table):  Ditto.
	(gen_entry_expand_insns):  Ditto.
	(make_gen_tables):  Ditto.

	* igen.c (gen_run_c): Add extra argument `nr_cpus' to generated
 	function sim_engine_run.  Pass argument on to engine_run.

	* gen-engine.c (print_engine_run_function_header): Add extra
 	argument `nr_cpus' to generated function engine_run.
	(print_run_body): Fix SMP case.

	* gen-support.c (support_c_function): Call sim_engine_abort when
 	internal function fails to long jump.

Wed Jan 21 18:00:22 1998  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Use GPR_SET to zero
 	hardwired register.

Wed Dec 17 14:49:03 1997  Jeffrey A Law  (law@cygnus.com)

	* gen-semantics.c (print_semantic_body): Fix handling of
	hardwired zero register.

Tue Dec  9 12:45:00 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h (struct _igen_gen_options): Add member default_model.

	* igen.c (gen_run_c): Default to the first machine in the
 	multi-sim list.
	(main): Add MODEL parameter to gen-multi-sim option.

	* gen.h (function_decl_type): Declare enum.

	* gen-engine.c (print_engine_run_function_header), gen-engine.h:
 	Make global, pass function_decl_type as argument.
	(gen_engine_h, gen_engine_c): Update call.

	* gen-idecode.c (print_idecode_issue_function_header),
 	gen-idecode.h: Pass function_decl_type as argument.

	* igen.c (gen_idecode_h): For multi-sim, delcare global variable
 	idecode_issue.

	* igen.c (gen_run_c): For multi-sim, initialize globals
 	idecode_issue and engine_run.

Fri Nov 14 10:51:44 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (parse_insn_model_record): Allow multiple model names
 	to be specified in a single instruction model record.
	(dump_insn_model_entry): Update.

	* ld-insn.h (struct _insn_model_entry): Replace member name with
 	the filter names.  Document syntax change.

Wed Nov 12 15:45:40 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-engine.c (print_run_body): Add hooks for adding code before
 	and after an instruction has been issued.

1997-11-04  Brendan Kehoe  <brendan@lisa.cygnus.com>

	* gen-idecode.c (print_jump_until_stop_body): Use `#if 0' instead of
	`#ifdef 0' around this.

Tue Nov  4 08:18:29 1997  Michael Meissner  <meissner@cygnus.com>

	* ld-decode.c (load_decode_table): Don't assume NULL is an integer
	constant.

Wed Oct 29 13:17:17 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.h: Document mnemonic string format.

Tue Oct 28 10:50:35 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_extraction): Force result of atol to
 	unsigned.

	* ld-insn.c (parse_function_record): Separate handling of old and
 	ney fynction records.
	(load_insn_table): For %s record, hack function name & type after
 	it has been parsed.

	* filter.h (filter_is_subset): Reverse argument names, wrong
 	order.

	* ld-insn.c (load_insn_table): Move include code to.
	(parse_include_record): New function.  Check for filtering of
 	include statement by both flags and models.
	(load_insn_table): Check for model filtering of cache and model
 	records.
	(parse_model_data_record): Check for model & flag filtering of
 	model data records.
	(parse_function_record): Check for model & flag filtering of
 	function records.

	* ld-insn.h: Define record_filter_models_field.  Add filter-models
 	field to all but instruction records.
	(struct _function_entry, struct _cache_entry): Add models field.
	(nr_function_fields): Make parm field mandatory.

Mon Oct 27 15:14:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (main): Change -I option to -I<directory>.  Add optional
 	size to -Ggen-icache option.  Add -Gno-... support.

	* igen.h (struct _igen_options): Add include field.

	* ld-insn.c (enum insn_record_type, insn_type_map): Add
 	include_record.
	(load_insn_table): Call table_push when include record.

	* table.c (struct _open table, struct table): Make table object an
 	indirect ptr to the current table file.
	(current_line, new_table_entry, next_line): Make file arg type
 	open_table.
	(table_open): Use table_push.
	(table_read): Point variable file at current table, at eof, pop
 	last open table.

	* table.h, table.c (table_push): New function.

Thu Oct 16 11:03:27 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Use CIA not
 	cia.ip. Escape newlines at end of generated call to
 	sim_engine_abort.

Tue Oct 14 11:13:27 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Output line-ref to igen source file when
 	generating trace statements.
	(print_itrace_prefix, print_itrace_format): Escape newline at end
 	of each line of generated call to trace function.

Mon Oct 13 11:27:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-support.c (gen_support_h): Generate #define NIA. Definition
 	dependant on gen-delayed-branch mode.

	* ld-insn.c (parse_insn_mnemonic_record): Check for opening and
 	closing double quote in mnemonic field.
	(parse_option_record): Add gen-delayed-branch option.

Wed Oct  8 13:10:16 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.c (insn_list_insert): Missing \n in warning.

	* ld-insn.c (load_insn_table): Only notify of discarded
 	instrctions when warn.discard enabled.

	* igen.h: Add option.warn.discard, default enabled.

	* igen.c (main): Add -Wnodiscard option.

	* ld-insn.c (record_type): For old record type, check the number
 	of fields is correct.
	(load_insn_table): Allow insn assembler and insn model records to
 	appear in any order.
	(parse_insn_model_record): Rename from parse_insn_model_records.
  	Parse only one record.
	(parse_insn_mnemonic_record): Rename from
 	parse_insn_mnemonic_records.  Parse only one record.

Tue Sep 23 15:52:06 1997  Felix Lee  <flee@yin.cygnus.com>

	* gen-itable.c (gen_itable_h): [nr_itable_* + 1] to avoid
 	illegal zero-sized array.
	(itable_print_set): likewise, avoid empty initializers.

Mon Sep 22 18:49:07 1997  Felix Lee  <flee@cygnus.com>

	* configure.in: i386-windows is a cross, so don't expect
 	libiberty to be there.
	* configure: updated.

Fri Sep 19 10:36:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_function_name): Put the format name after the
 	function / instruction name, not before.
	(print_itrace): Better format trace code.

Tue Sep 16 11:01:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen.c (insns_bit_useless): Don't treat string fields restricted
 	to a range of values as useless.

Mon Sep 15 15:47:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (gen_run_c): Handle non-multi-sim case.

	* gen-support.c (gen_support_h): Define SD_ - to replace _SD.
  	Define CIA from cia.

Thu Sep 11 10:27:39 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Trace the instruction
 	after it has been validated.
	(print_semantic_body): Count the instruction using sim-profile.

Wed Sep 10 13:35:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-itable.c (gen_itable_h): Collect summary info on instruction
 	table when traversing it.
	(gen_itable_h): Output an enum defining the max size of each of
 	the itable string members.

Tue Sep  9 03:30:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (gen_run_c): New function. Generate sim_engine_run that
 	looks at the currently selected architecture.

	* gen-engine.c, gen-idecode.c: Add multi-sim support - generate
 	one engine per model.

	* gen-semantics.c, gen-icache.c gen-support.c:
 	Update.

	* ld-insn.h, ld-insn-h (load_insn_table): Rewrite.  table.h only
 	returns a line at a time.  Parse multi-word instructions.  Add
 	multi-sim support.

	* table.h, table.c: Simplify.  Only parse a single line at a time.
  	ld-insn can handle the rest.

	* filter.h, filter.c (filter_parse, filter_add, filter_is_subset,
 	filter_is_common, filter_is_member, filter_next): New filter
 	operations.
	(dump_filter): Ditto.

	* gen.h, gen.c: New file.  Takes the insn table and turns it into
 	a set of decode tables and semantic functions.

	* ld-insn.c: Copy generator code from here.
	* gen.c: To here.

Fri Aug  8 11:43:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* misc.h (NZALLOC): Allocate an N element array of TYPE.

	* table.h, table.c: Simplify table parser so that it only
 	understands colon delimited lines and code blocks.
	(table_read): Parse '{' ... '}' as a code block.
	(table_print_code): New function, print out a code block to file.
	(main): Add suport for standalone testing.

	* ld-insn.h, ld-insn.c:


Mon Sep  1 11:41:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-idecode.c (error_leaf_contains_multiple_insn): Make static.
	(print_jump_definition, print_jump, print_jump_internal_function,
 	print_jump_insn, print_jump_until_stop_body): Delete, moved to
 	sim-engine.c

	* igen.c (print_itrace_format): Delete unused variable chp.
	(gen-engine.h): Include.

	* table.c (current_file_name, current_line_entry,
 	current_line_entry): Make static.

Wed Aug  6 12:31:17 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* configure.in: Define AR_FOR_BUILD, AR_FLAGS_FOR_BUILD,
 	RANLIB_FOR_BUILD and CFLAGS_FOR_BUILD.
	* configure.in: Include simulator common/aclocal.m4.
	* configure.in: Add --enable-sim-warnings option.
	* configure: Re-generate.

	* Makefile.in: Use.

	* Makefile.in (tmp-filter): New rule.
	(igen.o, tmp-table, tmp-ld-decode, tmp-ld-cache, tmp-ld-insn,
 	ld-decode.o, ld-cache.o, ld-insn.o): Fix dependencies.

	* gen.h, gen.c: New files.

	* Makefile.in (gen.o, tmp-gen): New rules, update all
 	dependencies.

Tue Jun 24 11:46:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (load_insn_table): Accept %s as a function type.

Thu Jun  5 17:14:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace_prefix): Move printing of insn prefix to
 	here.
	(print_itrace_format): Drop printing of MY_NAME in instruction
 	trace.  Printing of insn prefix moved.
	(print_itrace): Ditto.

Fri May 30 11:27:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_function_header): Pass
 	table_line_entry instead of separate file and line.

	* table.c (table_entry_read): Set assembler source file/line-nr to
 	the current not initial file.
	(table_entry_read): Fix line numbering of source files.

	table.h (table_line_entry): New structure.  Exactly specifies a
 	source file/line-nr.
	(table_*_entry): Add this to all.

	table.c (table_entry_print_cpp_line_nr): Change to use values from
 	a table_line_entry struct.
	(table_entry_read): Save table_line_entry in all structures read.

	gen-icache.c, gen-support.c, gen-idecode.c, gen-semantics.c,
 	gen-model.c: Update all references.

Thu May 29 10:29:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_my_defines): Define MY_NAME - a string.  For
 	MY_PREFIX, undefine the name of the function incase some dumb
 	header defined it.  it.
	(print_itrace): Use MY_NAME not MY_PREFIX.

	* lf.c (lf_write): New function write an N character buffer to the
 	file.

	* igen.c (print_itrace): When available, use the assembler to
 	print the insn-trace.
	(print_itrace_prefix): New function, print first part of call to
 	print_one_insn.
	(print_itrace_format): New function, print fmt argument for
 	print_one_insn.

	* table.c (table_entry_read): Save any assembler lines instead of
 	discarding them.

Wed May 28 09:55:29 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-icache.c (print_icache_body): Process immeds.

	* gen-semantics.c (print_semantic_body): When computing NIA, skip
 	any immed words that follow the instruction word.

	* ld-insn.c (parse_insn_format): Parse immeds appended to an
 	instruction.

	* igen.c (main): Allow any register to be specified as the zero
 	register.
	(semantic_zero_reg): Global, index to zero register.

	* gen-semantics.c (print_semantic_body): Zero selected register.

Tue May 27 14:12:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.h: Stop options and code gen type bit masks overlaping.

Fri May 23 12:01:08 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Incorrect test for
 	zero-r0 code.

Fri May 16 14:32:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Use common sim-engine
 	interface.

Fri May 16 11:48:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-semantics.c (print_semantic_body): Add code to clear r0.

	* igen.c (main): Add new option zero-r0, which adds code to clear
 	GPR(0) each cycle.

Wed May  7 12:31:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Fix so line-nr is passed to trace
 	function.

	* gen-idecode.c (print_idecode_validate): Correct FP code.

	* gen-support.c (gen_support_h): Always pass MY_INDEX to support
 	functions.
	(print_support_function_name): Ditto.

Tue May  6 06:12:04 1997  Mike Meissner  <meissner@cygnus.com>

	* igen.c (print_itrace): Call trace_one_insn to trace
	instructions, rather than doing it directly.

Mon May  5 14:11:46 1997  Mike Meissner  <meissner@cygnus.com>

	* gen-engine.c (engine_switch_leaf): Remove extra %s.
	(print_engine_floating_point_unavailable): Wrap in #ifdef
	UNUSED/#endif, until somebody uses it.

	* gen-idecode.c (error_leaf_contains_multiple_insn): Remove unused
	variable.
	(print_jump_until_stop_body): Wrap in #ifdef UNUSED/#endif, until
	somebody uses it.
	(print_idecode_validate): Use long formats to print long values.

	* gen-semantics.c (print_idecode_invalid): Set name to "unknown"
	if we get an unexpected type.

Fri May  2 13:28:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_itrace): Pass SD as well as CPU to calls to
 	trace_printf.

	* gen-support.c (gen_support_h): Always pass sim_cia cia to
 	support functions.
	(print_support_function_name): Ditto.

Wed Apr 30 17:35:51 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* gen-support.c (support_c_function): Remove unnecessary memset of
 	cia.
  	* gen-semantics.c (print_semantic_body): Wasn't closing
 	generated comment.

Tue Apr 29 11:11:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (load_insn_table): Report instructions that do not
 	have at least a format and name.
	(insn_table_find_opcode_field): Check progress is being made.

	* gen-support.c (support_c_function): Report empty function body.

Thu Apr 24 11:43:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* ld-insn.c (insn_table_expand_opcode): Allow reserved fields to
 	be broken up.
	(insn_table_expand_insns): Allow special rules to apply to groups
 	of instructions when all members of the group match the special
 	mask/value.

	* gen-semantics.c (print_c_semantic): Ditto.
	* igen.c (print_semantic_function_formal): Ditto.
	(print_semantic_function_type): Ditto.
	* igen.c (print_icache_function_formal): Ditto.
	* gen-idecode.c (print_idecode_issue_function_body): Ditto.

	* gen-idecode.c (gen_idecode_h): Prepend the global_prefix to the
 	instruction_address type.

	* gen-semantics.c (print_semantic_body): Call cpu_error when an
 	unimplemented instruction is encountered - gives the interpreter
 	the chance to stop correctly.

Wed Apr 23 20:06:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (print_function_name): Allow dot's in instruction names.

Tue Apr 22 21:46:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>

	* igen.c (main), igen.h: Support new option - delayed-branch -
 	generate code to drive a delayed branch processor.

	* gen-idecode.c (gen_idecode_h): Define instruction_address type.

	* igen.c (print_icache_function_formal): Replace address_word with
 	instruction_address.
	(print_semantic_function_formal): Ditto.
	(print_semantic_function_type): Ditto.
	* gen-idecode.c (print_idecode_issue_function_body): Ditto.

	* gen-semantics.c (print_semantic_body): Ditto.
	(print_c_semantic): Ditto.

	* gen-support.c (support_c_function): Return a zeroed CIA instead
 	of just zero - works with any cia type.

	* igen.c (print_itrace): For delayed branch case, print just the
 	current instruction.

Thu Apr 17 07:02:33 1997  Doug Evans  <dje@canuck.cygnus.com>

	* igen.c (print_itrace): Use TRACE_FOO_P and trace_printf.

Tue Apr 15 15:20:31 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Set to @INSTALL@.
	(INSTALL_XFORM, INSTALL_XFORM1): Remove.

Mon Apr 14 16:29:34 1997  Ian Lance Taylor  <ian@cygnus.com>

	* Makefile.in (INSTALL): Change install.sh to install-sh.

Wed Apr  2 18:51:20 1997  Doug Evans  <dje@canuck.cygnus.com>

	* gen-support.c (gen_support_c): sim-state.h renamed to sim-main.h.
	* gen-idecode.c (gen_idecode_c): Likewise.
	* igen.c (gen_semantics_c): Likewise.

Mon Mar 24 10:10:08 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-icache.c (print_icache_body): No longer define cpu/sd,
 	support.h now defines CPU/SD globally.

	* gen-model.c (gen_model_h): Ditto.

	* gen-idecode.c (print_idecode_issue_function_body): Ditto.
	(print_jump): Ditto.
	(print_jump_until_stop_body): Ditto.
	(print_idecode_validate): Ditto.

	* gen-icache.c (print_icache_body): Ditto.

	* gen-semantics.c (print_semantic_body): Ditto.

	* igen.c (print_semantic_function_formal): Rename cpu to sim_cpu,
 	processor to cpu.
	(print_icache_function_formal): Ditto.

	* gen-support.c (print_support_function_name): Include sd/cpu arg
 	in support function argument list.
	(support_c_function): Generate code to cpu/sd from sd/cpu.
	(gen_support_h): Define _SD the argument prefix for all support
 	functions.  Define SD/CPU to determine sd/cpu from value of _SD
	macro.

Tue Mar 18 15:52:24 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-support.c (gen_support_c): Update for renaming of engine to
 	sim-state.

	* igen.c: Ditto.
	* gen-idecode.c (gen_idecode_c): Ditto.

Mon Mar 17 15:17:07 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-decode.c (load_decode_table): Rename slash to reserved.
	(dump_decode_rule): Ditto.

	* ld-insn.c (parse_insn_format): Differentiate between a `/' -
 	reserved bit - and a `*' - wild card.
	(parse_insn_format): Change is_slash to more informative reserved.
	(dump_insn_field): Ditto.
	(insn_field_is_constant): Ditto.
	(insn_table_expand_opcode): Ditto.

	* gen-idecode.c (print_idecode_validate): Make check_mask and
 	check_val the correct integer size.
	(print_idecode_validate): Fix reserved bit check for 64 bit
 	targets.

Fri Mar 14 11:24:06 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-insn.c (parse_insn_format): Accept '*' as an alternative of
 	`/' in bit fields.  `/' denotes a wild bit.

Fri Mar  7 18:20:38 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* igen.h, igen.c (main): New options. Control generation of
 	conditional issue and slot verification code.

Fri Mar  7 18:17:25 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-support.c (print_support_function_name): Prepend the global
 	name prefix when applicable.  Provide #define to map the user
 	specified name the generated globaly unique one.

Fri Mar  7 18:07:45 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-idecode.c (print_idecode_validate): Wrap each of the checks
 	- reserved bits, floating point and slot validation - with a
 	#ifdef so that they are optional.

Fri Mar  7 16:35:13 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* gen-idecode.c (error_leaf_contains_multiple_insn): New function
 	- report the error of a leaf node in the decision tree containing
 	several instructions.
	(print_idecode_table_leaf): Detect a leaf with multiple instructions.
	(print_idecode_switch_leaf): Ditto.

	* gen-semantics.h, gen-semantics.c (print_idecode_illegal,
 	print_idecode_invalid): Rename former to latter.  Add argument so
 	that one function can generate all invalid instruction cases -
 	illegal, fp-unavailable, wrong-slot.
	* gen-engine.c: Update.

	* gen-idecode.c: Use print_idecode_invalid to generate a function
 	call for cases when fp-unavailable and the slot is wrong.

	* gen-idecode.c (print_idecode_validate): New check, generate code
 	to verify that the instruction slot is correct.

	* igen.c (main): Simplify options.

Wed Mar  5 09:55:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* igen.c (print_itrace): Remove source line reference for trace
 	code - let the user see the generated file.
	(print_itrace): Print the trace code rather than reference a
	macro.

Tue Mar  4 17:31:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* igen.c (print_semantic_function_actual): Pass either the
 	processor - smp - or the engine - mono - into semantic functions.
  	Don't pass in both.

	* gen-icache.c (print_icache_body): Dependant on smp, derive
 	processor from engine or engine from processor, and hence ensuring
 	that both are defined in all semantic functions.

Mon Mar  3 17:11:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-insn.c (parse_insn_format): Make the width field optional.
  	If missing assume that the number of characters in the value
 	determines the number of bits in the field.

Thu Feb 27 11:27:48 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* ld-insn.c (insn_table_expand_opcode): Replace assertion with
 	more useful error message.

Tue Feb 25 16:43:27 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>

	* misc.c (error): Output errors on stderr.

	* ld-insn.c (parse_insn_format): Skip any leading spaces.
  	Verify the width of instructions being parsed.

	* table.c (table_entry_read): Parse CPP's convention for
 	specifying original file name/line-nr.

Wed Feb 19 12:30:28 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* ld-insn.c (parse_insn_format): Allow trailing spaces in
 	instruction fields.

	* Makefile.in: Create using ../ppc/Makefile.in as a starting
 	point.
	* configure.in: Ditto vis ../ppc/configure.in

Mon Feb 17 10:44:18 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* gen-support.c (gen_support_c): Always include engine.h instead
 	of cpu.h
	* gen-idecode.c (gen_idecode_c): Ditto.

	* words.h (instruction_word): Remove instruction_word - now
 	generated by igen.
	(address_word): New.  Used by igen.

	* lf.c (lf_print_function_type_function): New, pass a function to
 	print out the type instead of a constant string.

	* igen.h, igen.c (print_semantic_function_formal,
 	SEMANTIC_FUNCTION_FORMAL): Relace macro with function.
	(print_semantic_function_actual, SEMANTIC_FUNCTION_ACTUAL): Ditto.
	(print_semantic_function_type, SEMANTIC_FUNCTION_TYPE): Ditto.
	(print_icache_function_type, ICACHE_FUNCTION_TYPE): Ditto.
	(print_icache_function_formal, ICACHE_FUNCTION_FORMAL): Ditto.
	(print_icache_function_actual, ICACHE_FUNCTION_ACTUAL): Ditto.
	* gen-idecode.c (print_idecode_table): Update.
	(idecode_switch_leaf): Update.
	(print_idecode_switch_function_header): Ditto.
	(print_idecode_floating_point_unavailable): Ditto.
	(print_idecode_issue_function_header): Ditto.
	* igen.c (gen_icache_h): Ditto.
	* gen-engine.c (print_engine_table): Ditto.
	(engine_switch_leaf): Ditto.
	* gen-support.c (print_support_function_name): Ditto.
	* gen-semantics.c (print_semantic_function_header): Update.
	Update.
	* gen-icache.c (print_icache_function_header): Update.
	(print_icache_function): Update.
	(print_icache_internal_function_declaration): Update.
	(print_icache_internal_function_definition): Update.

	* gen-idecode.c (gen_idecode_h): Drop including of idecode_*.h
 	files, will at some stage need to move it into support.

	* igen.h, igen.c (main): New option -e <engine> - generate a full
 	simulation engine.  Previously this was the -d <idecode-file>
 	option.
	* gen-engine.h, gen-engine.c: Copies of gen-idecode.*.  Will need
 	to clean these up so that that call upon the updated gen-idecode
	code.

	* gen-idecode.h, gen-idecode.c: Prune out any code not relevant to
 	generating a decode table.

	* Makefile.in (igen): Add dependencies for new gen-engine.* files.

	* igen.h, igen.c (main): New option -M - Control what is returned
 	by semantic functions - -1/NIA vs CIA+N/NIA.  Add
 	generate_semantic_returning_modified_nia_only to igen_code enum.
	* gen-semantics.c (print_semantic_body): As an alternative, make
 	NIA == -1 instead of CIA+insn_size by default.

	* igen.h, igen.c (main, global_name_prefix, global_uname_prefix):
 	New option -P <prefix> - Prepend all generated functions with the
 	specified prefix.
	(gen_idecode_c): Adjust.
	* gen-icache.c (print_icache_struct): Ditto.
	* gen-support.c (gen_support_c): Ditto.

Sun Feb 16 15:23:15 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* igen.c (main): Correct usage. Missleading message about ucase
 	options dumping internal tables.  -F now includes rather then
 	excludes instructions.

	* misc.h, misc.c (a2i): Make 64bit.

	* ld-insn.h (max_insn_bit_size, default_insn_bit_size): Increase
 	max to 64bits, expect trouble.  Make the default 32 bits.
	* gen-idecode.c (print_idecode_table): Change EXTRACTED*
 	et.al. macro's to use the insn_bit_size instead of assuming 32
 	bits.
	* gen-icache.c (print_icache_extraction): Ditto.
	* gen-idecode.c (idecode_switch_start): Ditto.
	* gen-idecode.c (gen_idecode_c): Ditto

	* igen.h (insn_specifying_widths), igen.c (main): New option -W.
  	Indicates that the instruction field of the table is specifying
 	bit widths instead of bit offsets.
	* ld-insn.c (parse_insn_format): Parse instruction fields
 	specifying widths.

	* misc.c (a2i): Allow binary numbers to be specified using the
 	syntax 0bNNNN.
	* ld-insn.c: Allow such numbers to appear in the instruction
 	format.

	* table.c (table_entry_read): Make // a valid comment character.
	(table_entry_read): Skip lines containing a leading " - these may
 	eventually be used in a disasembler.

Fri Feb 14 15:23:15 1997  Andrew Cagney  <cagney@critters.cygnus.com>

	* filter.c, filter.h, gen-engine.c, gen-engine.h, gen-icache.c,
 	gen-icache.h, gen-idecode.c, gen-idecode.h, gen-itable.c,
 	gen-itable.h, gen-model.c, gen-model.h, gen-semantics.c,
 	gen-semantics.h, gen-support.c, gen-support.h, igen.c, igen.h,
 	ld-cache.c, ld-cache.h, ld-decode.c, ld-decode.h, ld-insn.c,
 	ld-insn.h, lf.c, lf.h, misc.c, misc.h, table.c, table.h: Copy in
 	from the ../ppc directory.

	* filter_host.c, filter_host.h: Copy in from the ../ppc directory
 	renaming from filter_filename.[hc]
