2017-04-13  Alan Modra  <amodra@gmail.com>

	PR 20946
	* desc-cpu.scm (lookup_mach_via_bfd_name): Return NULL if the name
	could not be matched.
	(@arch@_cgen_cpu_open): Allow for lookup_mach_via_bfd_name returning
	NULL.

2017-04-08  Alan Modra  <amodra@gmail.com>

	* utils.scm: Update emitted copyright dates.

2016-07-18  Trevor Saunders <tbsaunde@tbsaunde.org>

	* desc-cpu.scm, opc-itab.sbm: Emit extern "C" { ... } wrappers to
	make generated code usable by C++.

2016-05-09  Stafford Horne  <shorne@gmail.com>

	* cgen/sim-cpu.scm (cgen-semantics.c, cgen-sem-switch.c): Rename
	TRACE_RESULT to CGEN_TRACE_RESULT.
	* cgen/sim-model.scm (gen-cpu-imp-properties): Rename
	SIM_MACH_IMP_PROPERTIES to SIM_MACH_IMP_PROPERTIES.
	(gen-mach-model-table): Rename MODEL to SIM_MODEL.
	(gen-mach-defns): Rename MACH to SIM_MACH.
	* cgen/sim.scm (op-gen-set-trace, op-gen-set-trace-parallel): Rename
	TRACE_RESULT to CGEN_TRACE_RESULT.
	(gen-mach-decls, gen-mach-data): Rename MACH to SIM_MACH.

2016-04-22  Alan Modra  <amodra@gmail.com>

	* utils.scm: Update emitted copyright dates.

2016-04-14  Trevor Saunders  <tbsaunde@tbsaunde.org>

	* opc-itab.scm (asm_hash_insn_p): Stop using old style arguments.
	(dis_hash_insn_p): Likewise.
	(asm_hash_insn): Likewise.
	(dis_hash_insn): Likewise.
	* opc-opinst.scm (@arch@_cgen_init_opinst_table): Likewise.

2016-03-02  Alan Modra  <amodra@gmail.com>

	* enum.scm (gen-enum-decl): Emit large numbers as hex.  Tidy
	start-sanitize.  Upcase just the identifiers.

2014-05-19  Peter Gavin  <pgavin@gmail.com>

        * sim-arch.scm (WI, UWI, AI, IAI): Define.
        * rtl-c.scm (mul-o1flag, mul-o2flag, rem): New.
        * rtx-funcs.scn (mul-o1flag, mul-o2flag, rem): New.

2012-12-17  Nick Clifton  <nickc@redhat.com>

	* AUTHORS: Add copyright notice.
	* INSTALL: Likewise.
	* Makefile.am: Likewise.
	* NEWS: Likewise.
	* co-for-gen-all: Likewise.
	* configure.in: Likewise.
	* gen-all: Likewise.
	* gen-all-desc: Likewise.
	* gen-all-doc: Likewise.
	* gen-all-intrinsics: Likewise.
	* gen-all-opcodes: Likewise.
	* gen-all-sid: Likewise.
	* gen-all-sim: Likewise.
	* doc/Makefile.am: Likewise.
	* testsuite/Makefile.am: Likewise.
	* Makefile.in: Regenerate.
	* configure: Regenerate.
	* doc/Makefile.in: Regenerate.
	* testsuite/Makefile.in: Regenerate.

2012-10-29  Mike Stump  <mikestump@comcast.net>

	* Makefile.am: Add install-html and install-pdf.
	* Makefile.in: Regenerate.

2011-08-22  Nick Clifton  <nickc@redhat.com>

	* cpu/fr30.cpu: Delete.  Move to top level cpu directory.
	* cpu/fr30.opc: Likewise.
	* cpu/ip2k.cpu: Likewise.
	* cpu/ip2k.opc: Likewise.
	* cpu/mep-avc.cpu: Likewise.
	* cpu/mep-avc2.cpu: Likewise.
	* cpu/mep-c5.cpu: Likewise.
	* cpu/mep-core.cpu: Likewise.
	* cpu/mep-default.cpu: Likewise.
	* cpu/mep-ext-cop.cpu: Likewise.
	* cpu/mep-fmax.cpu: Likewise.
	* cpu/mep-h1.cpu: Likewise.
	* cpu/mep-ivc2.cpu: Likewise.
	* cpu/mep-rhcop.cpu: Likewise.
	* cpu/mep-sample-ucidsp.cpu: Likewise.
	* cpu/mep.cpu: Likewise.
	* cpu/mep.opc: Likewise.
	* cpu/openrisc.cpu: Likewise.
	* cpu/openrisc.opc: Likewise.
	* cpu/xstormy16.cpu: Likewise.
	* cpu/xstormy16.opc: Likewise.

2010-10-28  Nick Clifton<nickc@redhat.com>

	* cpu/xstormy16.cpu (alignfix-mem-far): New macro.  Like
	alignfix-mem, but works with 32-bit addresses.
	(set-alignfix-mem-far): New macro.  Like set-alignfix-mem but
	works with 32-bit addresses.
	(movfgrgri, movfgrgripostinc, movfgrgripredec, movfgrgrii,
	movfgrgriipostinc, movfgrgriipredec): Use alignfix-mem-far.
	(movfgrigr, movfgripostincgr, movfgripredecgr): Use
	set-alignfix-mem-far.
	(movfgrgriipostinc, movfgriipostincgr): Propagate addition to
	source register into base register.
	(movfgrgriipredec, movfgriipredecgr): Propagate subtraction from
	source register into base register.

2010-10-09  Matt Rice  <ratmice@gmail.com>

	* utils-cgen.scm (gen-attr-accessors): Rename bool attribute to bool_.
	* cpu/mep.opc (mep_cgen_insn_supported): Ditto.

2010-08-30  Doug Evans  <dje@sebabeach.org>

	* rtl-c.scm (s-float-predop): New function.
	(nan, qnan, snan): Call it.

2010-06-28  Alan Modra  <amodra@gmail.com>

	* cpu/mep.opc (mep_examine_ivc2_insns): Delete set but unused var.

2010-06-01  DJ Delorie  <dj@redhat.com>

	* cpu/xstormy16.cpu (movgriipostincgr, movgriipredecgr,
	movfgriipredecgr): Fix increment/decrement amount.

2010-02-12  Doug Evans  <dje@sebabeach.org>

	* iformat.scm (/sfmt-search-key): Use iformat key instead of list
	of ifields.

2010-02-11  Doug Evans  <dje@sebabeach.org>

	* testsuite/location-1.test: Use %pmacros.

	* desc-cpu.scm (/gen-cpu-open): Remove comment on K&R support.
	* utils-cgen.scm (gen-define-with-symcat): Remove K&R support.

	* utils-sim.scm (compute-sformat-argbufs!): Use more consistent name
	for name of empty sbuf.

	* iformat.scm (/sfmt-search-key, /ifmt-lookup-sfmt!): Add assert.

	* insn.scm (<insn>): Add initial value for members fmt-desc, ifmt,
	sfmt, tmp.
	(/sub-insn-ifields): Delete old commented out code.
	(/sub-insn-make!, /parse-insn-format-symbol): Ditto.
	* operand.scm (/anyof-merge-setter, anyof-merge-semantics): Ditto.

	* sim-decode.scm (/gen-decode-insn-globals): Tweak formatting of
	generated code.

2010-02-10  Doug Evans  <dje@sebabeach.org>

	* gen-all: Print options.

2010-01-28  Doug Evans  <dje@sebabeach.org>

	* pmacros.scm (pmacros-init!): New arg rtl-version, all callers
	updated.  Use %-prefix if rtl-version >= 0.9.
	* read.scm (/supported-rtl-versions): Add (0 9).
	(/rtl-version-valid?): New function.
	(/cmd-define-rtl-version): If new rtl version, reinvoke pmacros-init!.
	(/reader-expr): New function.
	(reader-process): New function.
	(/reader-process-with-loc!): Renamed from /reader-process!.
	Don't pre-expand `if' commands.
	(/cmd-if): Simplify.  Pmacro-expand test, then, else clauses here.
	Handle rtl-version-equal?, rtl-version-at-least?.
	* testsuite/Makefile.am (clean-test-files): Remove *.test.cpu*.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/pmacros-1.test: Test both . and % as prefixes.
	* testsuite/testsuite.cpu (/begin, /print, /dump): New pmacros.
	(newline, print-match, print-expr, print-thunk): Use them.
	(internal-verify): Update definition.
	* doc/rtl.texi (define-rtl-version): Document rtl version 0.9.
	(Top level conditionals): New node.

	* read.scm (rtl-version-at-least?): Fix typo.

2010-01-27  Doug Evans  <dje@sebabeach.org>

	* read.scm: Follow commenting convention.
	* mach.scm: Follow commenting convention.

	* pmacros.scm: Follow commenting convention.  Replace change to
	$pmacro to %pmacro.  $pmacro is confusing with $ in assembler syntax.
	(/pmacro-orig-prefix, /pmacro-prefix): New globals.

2010-01-25  Doug Evans  <dje@sebabeach.org>

	* co-for-gen-all: Simplify a bit.

2010-01-24  Doug Evans  <dje@sebabeach.org>

	* desc-cpu.scm (cgen-desc.h): Don't print virtual enums.
	* sid-cpu.scm (cgen-desc.h): Ditto.
	* enum.scm (enum-builtin!): New function.
	* read.scm (reader-install-builtin!): Call it.
	* rtl-c.scm (s-convop): Delete, replaced with ...
	(s-int-convop, s-float-convop): ... new fns.
	(ext, zext, trunc): Update.
	(fext, ftrunc, float, ufloat, fix, ufix): Update.
	* rtx-funcs.scm (fext, ftrunc, float, ufloat, fix, ufix): New parameter
	`how'.
	* cpu/mep-fmax.cpu (fcvtsw): Update.
	* cpu/sh.cpu (h-fsd, h-fmov): Update.
	* doc/rtl.texi (float-convop): Update.

	* gen-all: Be more consistent with intrinsic generation.

	* utils-cgen.scm (<location>): Define using new define-class.
	(<ident>, <source-ident>, <context>): Ditto.

	* cos.scm (/object-string): New function.
	(/object-error): Use it.
	(/object-count-true): New function
	(object-copy-top): Delete.  All callers changed to call object-copy.
	(/parse-member-list, /build-getter-defs, /build-setter-defs): New fns.
	(define-class, define-interface, define-method): New macros.
	(define-getters, define-setters, vmake): Moved here ...
	* utils-cgen.scm: ... from here.

	* cos.scm: Follow commenting convention.  Why did a single ; have to
	get indented like it does? :-(
	* utils-cgen.scm: Ditto.

2010-01-23  Doug Evans  <dje@sebabeach.org>

	* gen-all: Move build-configuration related parameters to an
	external file.  Add usage info.  Add "force" option.
	Be smarter about what diffs to generate.

	* doc/rtl.texi (Expressions): Add more docs on conversion functions.

2010-01-21  Doug Evans  <dje@sebabeach.org>

	* doc/rtl.texi (Expressions): Fix docs on `subword'.

2010-01-20  Doug Evans  <dje@sebabeach.org>

	* rtx-funcs.scm (nan,qnan,snan): New rtl functions.
	* rtl-c.scm (nan,qnan,snan): New rtl functions.
	* doc/rtl.texi (Expressions): Add docs for them.

	* rtl-traverse.scm (/rtx-canon-anycexprmode): New function.
	(/rtx-make-canon-table): Add entry for ANYCEXPRMODE.
	(/rtx-canon-operands): Print expr-mode if /rtx-canon-debug?
	Do final error check on mode assigned to expression.
	(/rtx-make-traverser-table): Add entry for ANYCEXPRMODE.
	* rtl-xform.scm (/rtx-trim-args): Handle ANYCEXPRMODE.
	* rtl.scm (/rtx-valid-mode-types): Add ANYCEXPRMODE.
	* rtx-funcs.scm (c-code, c-call, c-raw-call): Use ANYCEXPRMODE.
	(if, cond, case): Use ANYEXPRMODE.

2010-01-19  Doug Evans  <dje@sebabeach.org>

	* testsuite/pmacros-1.test: Add more .splice tests.

	* read.scm (/cmd-include): Fix absolute path handling.

2010-01-05  Doug Evans  <dje@sebabeach.org>

	* mode.scm (<mode>) Rename member non-mode-c-type to c-type.
	All uses updated.
	(mode:non-mode-c-type): Delete.
	(mode:c-type): Update.
	* rtl-c.scm (s-shop): Fix casting of DI mode values.

2010-01-04  Doug Evans  <dje@sebabeach.org>

	* gen-all (all_cgen_cpus): Add sh.

2010-01-02  Doug Evans  <dje@sebabeach.org>

	* utils.scm (copyright-fsf, copyright-red-hat): Update copyright year.

2009-12-17  Doug Evans  <dje@sebabeach.org>

	* mep.opc: Apply patches from opcodes to compile with -Wshadow.
	mep-asm.c now regenerates correctly again.
	
	* gen-all: Add support for building gcc/newlib.
	Specify --prefix and install all built tools.

2009-12-16  Doug Evans  <dje@sebabeach.org>

	* sim.scm (/op-gen-written-update): Disable operand number is too
	large warning, for now.

2009-12-11  Nick Clifton  <nickc@redhat.com>

	* cpu/fr30.opc: Fix shadowed variable warnings.

2009-12-10  Doug Evans  <dje@sebabeach.org>

	* gen-all: Rewrite.  Build more ports.  Split out building of sid.

2009-11-23  Doug Evans  <dje@sebabeach.org>

	* hardware.scm (hw-pc?): New function.
	* ifield.scm (ifld-signed?): New function.
	* iformat.scm (ifmt-analyze): Call insn-cti-attr? instead of insn-cti?.
	* insn.scm (insn-cti-attr?): Renamed from insn-ctl?.
	(insn-cti?): New function.
	* rtl.scm (/hw): Create <pc> object for pcs.
	* semantics.scm (/build-reg-operand!): New args ref-type, sem-attrs.
	All callers updated.  Watch for sets to the pc.
	(semantic-attrs): Watch for sets to the pc.
	* sid.scm (<pc> cxmake-get): Handle raw-reg.
	* sim.scm (<pc> cxmake-get): Handle raw-reg.
	(<operand> cxmake-get): Add debugging printf.
	* utils-gen.scm (/gen-ifld-extract-base): Emit calls to
	EXTRACT_[LM]SB0_LG[SU]INT for values > 32 bits.
	(/gen-extract-word): Ditto.

	* utils.scm (gen-c-hex-constant): New function.
	* utils-sim.scm (/gen-decode-insn-entry): Call it.

2009-11-22  Doug Evans  <dje@sebabeach.org>

	* insn.scm (/parse-insn-format): Watch for duplicate ifields.
	* read.scm (parse-error-continuable): New function.
	(define /continuable-error-found?): New variable.
	(/init-reader!): Initialize it.
	(/finish-reader!): New function.
	(cpu-load): Call it.
	* utils-cgen.scm (obj-list-nub): New function.

	* mach.scm (<derived-arch-data>): New member large-insn-word?.
	(/adata-set-derived!): Set it.
	(adata-large-insn-word?): New function.
	* sim-arch.scm (/gen-cpuall-includes): Don't #include cgen-engine.h
	here.
	* sim-cpu.scm (cgen-cpu.h): #include it here.
	(/gen-cpu-defines): Define CGEN_INSN_WORD.
	(/gen-no-scache-semantic-fn): Use CGEN_INSN_WORD instead of
	CGEN_INSN_INT.
	* sim-decode.scm (/gen-idesc-decls): Ditto.
	(/gen-extract-case, /gen-decode-fn): Ditto.
	* sim-model.scm (/gen-model-insn-fn): Ditto.
	* sim.scm (gen-argbuf-type): Ditto.

	* rtl-c.scm (/use-gcc-stmt-expr?): New function.
	(s-sequence): Call it.

2009-11-21  Doug Evans  <dje@sebabeach.org>

	* rtl-c.scm (s-sequence): Use gcc's statement expressions for
	non-VOID-mode expressions with multiple statements.

	* sim.scm (/operand-number-elaboration-written?): New variable.
	(/op-gen-written-update op): New function.
	(/op-gen-set-trace, /op-gen-set-trace-parallel): Call it.

	* read.scm (/cmd-define-rtl-version): Only log rtl version if changed.

	* operand.scm (op-nub): Delete.

	* dev-utils.scm: New file.
	* dev.scm (srcdir, load-doc, load-opc, load-gtest, load-sid,
	load-sim, load-stest, load-testsuite): Moved to dev-utils.scm.
	* read.scm (CHECK-LOADED?, libcpu.so, /loaded-file-list, /loaded-file?,
	/loaded-file-record!, maybe-load): Delete.
	Load cgen files directly instead of via maybe-load.

2009-11-14  Doug Evans  <dje@sebabeach.org>

	* rtl-traverse.scm (/rtx-canon): Flag an error for non-void
	expressions used in a void context.

	* gen-all: Explicitly build binutils, gas, ld, gdb, sid.

	* cpu/xc16x.cpu: Delete, use copy in ../cpu.
	* cpu/xc16x.opc: Ditto.

2009-11-12  Doug Evans  <dje@sebabeach.org>

	* rtl-c.scm (s-parallel): Use map-in-order instead of map.

	* rtl-xform.scm (/rtx-trim-for-doc): Handle set-quiet, nop,
	eq, ne, lt, le, gt, ge, ltu, leu, gtu, geu, index-of.

2009-11-11  Doug Evans  <dje@sebabeach.org>

	* html.scm (gen-insn-docs): Add logging message.

2009-11-05  Doug Evans  <dje@sebabeach.org>

	* utils-cgen.scm (gen-set-macro2): New function.
	* sim.scm (<hw-register> gen-get-macro): Call it.

	* co-for-gen-all: New file.

	* testsuite/name-comments-1.test: Update call to current-insn-lookup.

	* utils.scm (reduce): Delete.

	* rtl-traverse.scm (/rtx-canon-rtx-enum): Tweak local name.

	* enum.scm (gen-enum-sym): Make consistent with gen-enum-decl
	regarding PREFIX attribute handling.

	* operand.scm (<hw-index>): Add enum to possible types, all uses
	updated.
	(hw-index-constant?, hw-index-constant-value): New functions.
	(make-enum-hw-index, hw-index-enum-name, hw-index-enum-value,
	hw-index-enum-obj): New functions.
	(/operand-parse): Handle enum indices.
	* intrinsics.scm (md-operand:fixed-register): Use hw-index-constant?,
	hw-index-constant-value.
	* rtl.scm (rtx-constant-value): Fix handling of enums.
	* rtx-funcs.scm (enum): Ditto.
	* sid.scm (<hardware-base> cxmake-get): Only ifield indices are
	currently supported here.

2009-11-02  Doug Evans  <dje@sebabeach.org>

	Specify isa(s) when doing ifield, operand, insn lookups.
	ACU = all callers updated.
	* attr.scm (/attr-eval): Call rtx-value instead of rtx-eval-with-estate.
	* enum.scm (define-full-insn-enum): Pass isa-name-list to
	current-ifld-lookup.
	* html.scm (get-insn-properties): Pass isa-name-list to
	current-op-lookup.
	* ifield.scm (/ifld-parse-follows): New arg isas, ACU.
	* insn.scm (/parse-insn-format-symbol): New arg isa-name-list, ACU.
	(/parse-insn-format-list, /parse-insn-iformat-iflds): Ditto.
	(/parse-insn-format, syntax-break-out): Ditto.
	* mach.scm (obj-filter-by-isa): New function.
	(current-ifld-lookup): New optional arg maybe-isa-name-list.
	(/ifld-already-defined?, /op-already-defined?): Simplify.
	(current-op-lookup): New optional arg maybe-isa-name-list.
	(current-insn-lookup): New arg isa-name-list, ACU.
	(/insn-already-defined?, /minsn-already-defined?): Simplify.
	(current-minsn-lookup): New arg isa-name-list, ACU.
	* minsn.scm (/minsn-compute-iflds): Pass isa-name-list to
	current-op-lookup.
	* opc-itab.scm (compute-syntax): New arg isa-name-list, ACU.
	(gen-syntax-entry): Ditto.
	* operand.scm (/operand-parse): Pass isa-name-list to
	current-ifld-lookup.
	(/derived-parse-encoding): New arg isa-name-list, ACU.
	(/derived-parse-ifield-assertion): Ditto.
	(/derived-operand-parse): Pass isa-name-list to current-op-lookup.
	(/anyof-parse-choice): Ditto.
	(anyof-satisfies-assertions?): Pass context to rtx-solve.
	(/anyof-merge-syntax): New arg container, ACU.
	(operand-builtin!): Add pc to all isas.
	* rtl-c.scm (estate-make-for-rtl-c): Delete arg extra-vars-alist, ACU.
	(estate-make-for-rtl-c++, rtl-c-expr-parsed): Ditto.
	(rtl-c-parsed, rtl-c++-parsed): Ditto.
	(rtl-c): New arg isa-name-list, ACU.
	(rtl-c-expr, rtl-c++): Ditto.
	(closure): New arg isa-name-list, ACU.
	* rtl-traverse.scm (/make-cstate): New arg isa-name-list, ACU.
	(/cstate-isas): New function.
	(/rtx-canon-symbol-list): New function.
	(/rtx-canon-env-stack): Renamed from /rtx-canon-env, ACU.
	updated.
	(/rtx-make-canon-table): Rename ENV to ENVSTACK, new entry SYMBOLLIST.
	(/rtx-canon-rtx-operand): Pass isa list to current-op-lookup.
	(/rtx-canon-rtx-ref, /rtx-canon): Ditto.
	(rtx-canonicalize): New arg isa-name-list, ACU.
	(rtx-canonicalize-stmt): Delete.
	(tstate-make): New arg isas, ACU.
	(tstate-isas, tstate--set-isas!): New functions.
	(tstate-env-stack): Renamed from tstate-env, ACU.
	(tstate-set-env-stack!): Renamed from tstate-set-env!, ACU.
	(tstate-make-closure): Renamed from tstate-new-env, new arg
	isa-name-list, ACU.
	(/rtx-traverse-env): Delete.
	(/rtx-make-traverser-table): Rename ENV to ENVSTACK, new entry
	SUMBOLLIST.
	(/rtx-traverse): Include conditional flag in dump output.
	Update isa,envstack for closures.  Pass isa list to current-op-lookup.
	(<eval-state>): New member isas.  Rename env to env-stack.
	(<eval-state> vmake!): Handle #:isas.  #:env renamed to #:env-stack.
	(<eval-state>): New getter/setter for isas.  Rename env getter/setter
	to env-stack.
	(estate-make-for-eval): Provide #:isas.
	(estate-make-closure): Renamed from estate-new-env.  New arg
	isa-name-list, ACU.
	* rtl-xform.scm (/rtx-simplify-expr-fn): Handle closures.
	(/rtx-trim-args): ENV renamed to ENVSTACK.  Ad ITERATION, SYMBOLLIST.
	(/rtx-trim-for-doc): Handle closures.
	* rtl.scm (/rtx-valid-types): Rename ENV to ENVSTACK.  Add ITERATION,
	SYMBOLLIST.
	(rtx-env-var-list): Delete.
	(rtx-env-make): Handle already-compiled environments.
	(rtx-var-alist-to-env): New function.
	(rtx-var-alist-to-closure-env-stack, rtx-make-env-stack): New functions.
	(rtx-env-stack-dump): Renamed from rtx-env-dump, ACU.
	(rtx-operand-obj): New arg isa-name-list, ACU.
	(rtx-closure-isas, rtx-closure-env-stack, rtx-closure-expr): New
	functions.
	* rtx-funcs.scm (closure): New arg isa-name-list, reorder args, ACU.
	* sem-frags.scm (<sfrag>): Delete member compiled-semantics.
	(/frag-compute-desired-frags): Minor simplification.
	(/frag-pick-best): Ditto.
	* sid-cpu.scm (gen-semantic-code): Require canonical rtl.
	(/gen-sfrag-code): Update.
	* sim-cpu.scm (gen-semantic-code): Require canonical rtl.
	* utils-cgen.scm (sanitize): New arg isa-name-list, ACU.
	* utils.scm (non-null-intersection?): New function.

	* gen-all (do_src): Manually run cgen-all for sid.

2009-11-01  Doug Evans  <dje@sebabeach.org>

	* gen-all: New file.

	* rtl-traverse.scm (/rtx-canon): Issue better error message for
	invalid rtx function names.

2009-10-28  Doug Evans  <dje@sebabeach.org>

	* cos.scm (object-assign!): New function.
	* mode.scm (/mode-set-word-params!): Call it.

2009-10-25  Doug Evans  <dje@sebabeach.org>

	Record bitset attributes internally as a list.
	Record rtx attribute values internally as ((rtx-expr)).
	* attr.scm (bitset-attr?): Delete, unused.
	(<bitset-attribute> parse-value): Rewrite.
	(/attr-parse): Rewrite bitset default value processing.
	(/attr-read): Pick out values of scalar attributes to distinguish
	them from bitset values which are a list.
	Fix spelling errors for processing of default values.
	Handle string attributes.
	(bitset-attr->list): Delete, all callers updated.
	(/bitset-attr->charmask): Renamed from bitset-attr->charmask.
	All callers updated.
	(atlist-source-form): Rewrite.
	* hardware.scm (<hardware-base> 'get-isas): Update recognition
	of all isas.
	(hardware-builtin!): Update spec of ISA attribute, (ISA foo,bar)
	-> (ISA foo bar).
	* intrinsics.scm (target:belongs-to-group?): Update, bitset attribute
	values are now lists.
	* mach.scm (def-isa-attr!): Update, bitset attribute values,
	including the default, are now lists.
	(all-isas-attr-value): Result is now a list.
	* doc/rtl.texi: Clean up pass over attribute docs.

	Change internal representation of rtx attribute values.
	* attr.scm (/attr-val-is-rtx?): New function.
	(attr-value): Call it.
	(atlist-attr-value-no-default, attr-lookup-default): Ditto.
	(/attr-parse): Use /attr-val-is-rtx? to detect rtx values.
	Disallow rtx values for bitset attributes.
	(/attr-read): Record rtx in default value as ((rtx-expr)).
	(/attr-eval): Update.

2009-10-24  Doug Evans  <dje@sebabeach.org>

	* gen-all-doc: Add sh.cpu.
	* gen-all-desc: Use cpu/sh.cpu instead of ../cpu/sh.cpu
	(until ../cpu/sh.cpu is updated and cpu/sh.cpu is deleted).

	* sid-cpu.scm (/gen-sem-case): Tweaking debugging printf.
	(/gen-sfrag-case): Ditto.
	* sim-cpu.scm (/gen-sem-case): Ditto.

	* doc/rtl.texi: Add note that different ifields, operands, insns,
	and minsns may occur with the same name in different isas.
	Add note on the canonical form of rtl expressions.

2009-10-23  Doug Evans  <dje@sebabeach.org>

	* desc-cpu.scm (/gen-hash-defines): Remove #include of cgen-bitset.h.
	* sid-cpu.scm (cgen-desc.h): Update location of cgen's bitset.h.

	* decode.scm: Tweak various comments.
	(/opcode-slots): Add FIXME.
	(/build-decode-table-guts): Add assert.
	* utils-sim.scm (/gen-set-itype-and-extract): New function.
	(/gen-bracketed-set-itype-and-extract): New function.
	(/gen-decode-default-entry): Rewrite.
	(/table-guts-to-mask, /all-opcode-bits-used?): New functions.
	(/gen-decode-insn-entry): New arg table-guts-thus-far, all callers
	updated.  Don't unnecessarily emit check for whether all opcode bits
	have been examined.
	(/gen-decode-expr-set-itype): Delete.
	(/gen-decode-expr-entry): Update.
	(/gen-decode-table-entry): New arg table-guts-thus-far, all callers
	updated.  Keep track of decoder tables used thus far.
	(/gen-decoder-switch): Ditto.
	* utils.scm (word-bit-value): New function.

2009-10-14  Doug Evans  <dje@sebabeach.org>

	* ifield.scm (<ifield>, value): Provide default initial value.
	(ifield-encode-mode): Delete
	(ifield-decode-mode): Delete duplicate definition.
	(<derived-ifield>, 'make!): Initialize members encode, decode.
	* opcode.scm (<ifield>, 'gen-insert): Use ifld-decode-mode instead of
	ifld-encode-mode.
	(<multi-ifield>, 'gen-insert): Ditto.
	
2009-10-05  Dave Korn  <dave.korn.cygwin@googlemail.com>

	* sim-model.scm (@cpu@_prepare_run): Use @prefix@, not @cpu@,
	for @foo@_init_idesc_table.

2009-09-30  Doug Evans  <dje@sebabeach.org>

	* doc/intro.texi: Mention SID.
	* doc/sim.texi: Ditto.
	* doc/porting.text (Doing a simulator port): Add some text.

2009-09-27  Doug Evans  <dje@sebabeach.org>

	* cos.scm (/class-table): New global.
	(/class-uid, /class-set-uid!): New functions.
	(/class-parent-name): Renamed from /class-parents.
	(/class-make!): Change parents arg to parent-name, all callers updated.
	Assign uid to class.
	(/class-lookup-uid): New function.
	(/class-parent-classes): Rewrite.
	(/class-mi?): Delete.
	(/class-desc-mi?, /class-desc-offset-case, /class-desc-offset-case):
	Delete.
	(/class-desc-offset, /class-desc-child, /class-desc-parents): Update.
	(/class-compute-class-desc, class-desc-dump): Update.
	(/object-make!): Update.
	(/object-make-with-values!): Delete arg class-desc, all callers
	updated.
	(/object-copy): Delete arg top?, all callers updated.
	(/object-specialize): Delete.
	(/object-elements, /object-top-class): Delete.
	(/object-class-name, /object-class-desc): Update.
	(/object-class-uid): New function.
	(/object-elm-get, /object-elm-set!, object?, /class-check-init!,
	class-make, /class-subclass? /class-lookup-element,
	Update.
	(/elm-delta, elm-list): Delete.
	(/elm-make-method-getter, elm-get, elm-xget): Update.
	(/elm-make-method-setter, elm-set!, elm-xset!): Update.
	(elm-make-getter, elm-make-setter): Update.
	(/method-lookup-next): Update.
	(send): Don't specialize class passed to method.
	(send-next): New arg class-name, all callers updated.
	(/class-parent, /class-parent-via-path, object-parent): Delete.
	(class-cons-parent!, class-append-parent!): Delete.
	(object-reset!): Init /class-table.

	* cos.scm (/object-debug-classes): Delete.
	(/object-debug-elements, /object-debug-methods): Delete.

	* cos.scm (/method-lookup): Delete arg virtual?, all callers updated.
	(method-proc): Delete.
	(method-make-virtual!, method-make-virtual-forward!): Delete.
	* ifield.scm (<ifield> field-start): Update.
	(<ifield> field-length, pretty-print): Update.
	(<multi-ifield> field-length, field-start, pretty-print): Update.
	* sid-cpu.scm (/gen-hardware-struct): Use gen-defn instead of gen-decl.
	* sid.scm (<scalar> gen-sym-defn): Renamed from gen-sym-decl.
	(<array> gen-sym-defn): Ditto.
	(<hardware-base> gen-defn): Renamed from gen-defn.
	(<hw-register> gen-type): Update.
	(<hw-register> gen-defn): Renamed from gen-sym-decl, rewrite.
	(<hw-memory>, <hw-address>, <hw-iaddress> gen-type): Update.
	(<hw-memory>, <hw-address> gen-defn): Renamed from gen-sym-decl.
	(<hw-immediate> gen-type): Update.
	(<hw-immediate> gen-defn): Renamed from gen-sym-decl, rewrite.
	* sim-cpu.scm (/gen-hardware-struct): Use gen-defn instead of gen-decl.
	* sim.scm (<scalar> gen-sym-defn): Renamed from gen-sym-decl.
	(<array> gen-sym-defn): Ditto.
	(<hardware-base> gen-defn): Renamed from gen-defn.
	(<hw-register> gen-type): Update.
	(<hw-register> gen-defn): Renamed from gen-sym-decl, rewrite.
	(<hw-memory>, <hw-address>, <hw-iaddress> gen-type): Update.
	(<hw-memory>, <hw-address> gen-defn): Renamed from gen-sym-decl.
	(<hw-immediate> gen-type): Update.
	(<hw-immediate> gen-defn): Renamed from gen-sym-decl, rewrite.

2009-09-25  Doug Evans  <dje@sebabeach.org>

	* operand.scm (/anyof-merge-setter): Handle set-quiet.
	* rtl.scm (rtx-single-set?): Handle set-quiet.

	* rtl-c.scm (estate-make-for-rtl-c): Delete args context, owner,
	rtl-cover-fns?, macro?.  All callers updated.
	(estate-make-for-normal-rtl-c): Delete, have all callers call
	estate-make-for-rtl-c directly.
	(rtl-c-parsed): Pass #:outer-expr to estate-make-for-rtl-c.
	(rtl-c, rtl-c-expr-parsed, rtl-c-expr, rtl-c++-parsed, rtl-c++): Ditto.

	* rtl-c.scm (/par-replace-set-dest-expr-fn): New function,
	replaces /par-replace-set-dests.
	(/par-replace-set-src-expr-fn): New function, replaces
	/par-replace-set-srcs.
	(s-parallel): Rewrite.

	* rtl.scm (rtx-pretty-strdump): New function.
	* rtl-traverse.scm (/rtx-canon-error): Use it.
	(<eval-state>): New member outer-expr.
	(estate-error): Include outer expression in error message if present.

2009-09-23  Doug Evans  <dje@sebabeach.org>

	* xc16x.cpu (h-cr): New hardware.
	(muls): Comment out parts that won't compile, add fixme.
	(mulu, divl, divlu, jmpabs, jmpa-, jmprel, jbc, jnbs, callr): Ditto.
	(scxti, scxtmg, scxtm, bclear, bclr18, bset19, bitset, bmov): Ditto.
	(bmovn, band, bor, bxor, bcmp, bfldl, bfldh): Ditto.

	Rewrite rtl processing to require it to be "canonicalized" first,
	and write a full canonicalizer / expression checker.
	Remove all appearances of DFLT in canonical rtl.
	* attr.scm (/attr-eval atval owner): Call rtx-canonicalize,
	then rtx-simplify.
	* iformat.scm (ifmt-analyze) Use canonical semantics.
	* insn (<insn>): New member canonical-semantics.
	* mach.scm (<arch>): New member multi-insns-instantiated?.
	(/instantiate-multi-insns!): New function.
	(/canonicalize-insns!): New function.
	(arch-analyze-insns!): Canonicalize insn semantics before processing
	them.
	* mode.scm (/mode-set-word-params!): New function.
	(mode-void?): New function.
	(mode-compatible?): VOID is compatible with VOID.
	(/mode-word-sizes-defined?): New global.
	(mode-set-word-modes!): Use/set it.
	(mode-ensure-word-sizes-defined): Update.
	(mode-builtin!): New builtin "modes" SYM, INSN, MACH.
	Redo WI/UWI/AI/IAI handling.
	(op:new-mode): No longer accept DFLT.
	(<derived-operand> constructor): Ensure all fields are initialized.
	(<anyof-operand> constructor): Ditto.
	(/derived-parse-ifield-assertion): Delete arg `args'.
	All callers updated.
	* rtl-c.scm (<rtl-c-eval-state>): New member `for-insn?'.
	(rtl-c): Call rtx-canonicalize instead of rtx-compile.
	(rtl-c-expr, rtl-c++): Ditto.
	(/rtl-c-get): Use mode of operand, not containing expression.
	(rtl-c-set-quiet, rtl-c-set-trace): Remove DFLT support.
	(/rtx-use-sem-fn?): Don't check for (insn? owner), check
	estate-for-insn? instead.
	(s-unop): Use mode of expression, not first operand.
	(s-binop, s-binop-with-bit, s-shop, s-cmpop): Ditto.
	(s-sequence): Remove DFLT support.
	(ifield): Use mode of expression, not UINT.
	(pc): Comment out, unused.
	(int-attr): New rtx kind.
	(attr): Deprecate.
	(set, set-quiet): Pass src to rtl-c-set-{trace,quiet} for expansion.
	* rtl-traverse.scm (/rtx-canon-debug?): New global.
	(/make-cstate): New function.
	(/cstate-context, /cstate-outer-expr): New functions.
	(/rtx-canon-error): New function.
	(/rtx-lookup-hw, /rtx-pick-mode, /rtx-pick-mode3, /rtx-pick-op-mode,
	/rtx-get-last-cond-case-rtx): New functions.
	(/rtx-canon-*): New functions.
	(/rtx-canner-table, /rtx-operand-canoners): New globals.
	(/rtx-make-canon-table, /rtx-special-expr-canoners): New functions.
	(/rtx-option, /rtx-option-list?): Rewrite.
	(rtx-munge-mode&options): Replaces /rtx-munge-mode&options.
	Rewritten, all callers updated.
	(/rtx-canon-expr, /rtx-canon): New functions.
	(rtx-canonicalize): Move here from rtl-xform.scm and rewrite.
	(rtx-canonicalize-stmt): New function.
	(tstate-make): Remove arg `set?'.  All callers updated.
	(tstate-new-set?): Delete.
	(/rtx-traverse-options, /rtx-traverse-*mode): Delete,
	moved to /rtx-canon-*.
	(/rtx-traverse-normal-operand): New function.
	(/rtx-traverse-rtx-list): Delete arg `mode', all callers updated.
	(/rtx-traverse-rtx, /rtx-traverse-setrtx,, /rtx-traverse-testrtx,
	/rtx-traverse-condrtx, /rtx-traverse-casertx, /rtx-traverse-locals,
	/rtx-traverse-iteration, /rtx-traverse-env, /rtx-traverse-attrs):
	Ditto.
	(/rtx-traverse-symbol, /rtx-traverse-string, /rtx-traverse-number,
	/rtx-traverse-symornum, /rtx-traverse-object): Delete.
	(/rtx-make-traverser-table): Update.
	(/rtx-traverse-operands): Remove mode processing, now done during
	canonicalization.
	(/rtx-traverse-expr): Delete arg `mode', all callers updated.
	(/rtx-traverse): Ditto.
	(rtx-init-traverser-tables!): New function.
	* rtl-xform (/rtx-verify-no-dflt-modes-expr-fn): New function.
	(rtx-verify-no-dflt-modes): New function.
	(/rtx-simplify-expr-fn): Update, `arg' mode deleted.
	(rtx-simplify-insn): Use insn-canonical-semantics.
	(rtx-canonicalize): Moved to rtl-traverse.scm.
	(/compile-expr-fn, rtx-compile): Delete.
	(/rtx-trim-rtx-list): New function.
	(/rtx-trim-for-doc): Handle set, if.
	* rtl.scm (<rtx-func>): New members result-mode, matchexpr-index.
	(/rtx-valid-mode-types): Update.
	(/rtx-valid-matches): Update.
	(/rtx-find-matchexpr-index): New function.
	(rtx-lookup): Require rtx-kind to be the rtx name.
	(def-rtx-node): New arg result-mode, all callers updated.
	(def-rtx-syntax-node, def-rtx-operand-node): Ditto.
	(rtx-lazy-sem-mode): Delete.
	(/rtx-closure-make): New arg `mode', all callers updated.
	(rtx-make-ifield, rtx-make-operand, rtx-make-local): Ditto.
	(rtx-operand-obj): Rewrite.
	(rtx-make-xop): New functions.
	(/hw): Renamed from `hw', all callers updated.
	Use the correct mode instead of DFLT for the index.
	(rtl-builtin!): Call rtx-init-traversal-tables!.
	(rtl-finish!): Update.
	* rtx-funcs.scm (all rtx functions): New parameter: result-mode.
	Update mode arg-type.
	(pc): Comment out.
	(int-attr): New rtx kind.
	(attr): Deprecate.
	* sem-frags.scm (/frag-hash-compute!): Update, mode arg deleted.
	(/frag-cost-compute!): Ditto.
	* semantics.scm (/build-operand!): Delete args op-name, op.
	New arg op-expr.  All callers updated.
	(/build-mem-operand!): Remove DFLT support.
	(semantic-compile): Update process-expr!, mode arg deleted.
	* sid-cpu.scm (gen-semantic-code): Specify #:for-insn? in
	rtl-c++ calls.
	(/gen-sem-case, /gen-sfrag-code): Ditto.
	* sid.scm (/op-gen-set-trace1): Renamed from /op-gen-set-trace.
	(/op-gen-set-trace): New function.  If not doing profiling, or using
	the pbb engine, call /op-gen-set-quiet.
	* sim-cpu.scm (gen-semantic-code): Specify #:for-insn? in rtl-c calls.
	* utils-gen.scm (/gen-ifld-extract-base): Update call to rtl-c.
	(/gen-ifld-extract-beyond, gen-multi-ifld-extract): Ditto.
	* utils.scm (find-first-index): New function.
	* doc/rtl.texi: Delete docs for `attr'.  Add `int-attr'.

	* rtx-funcs.scm (eq,ne,lt,gt,le,ge,ltu,leu,gtu,geu): Change class
	to COMPARE.
	* sem-frags.scm (/frag-cost-compute!): Add COMPARE.

2009-09-21  Doug Evans  <dje@sebabeach.org>

	* rtl-c.scm (/rtl-c-build-table): Renamed from rtl-c-build-table.
	All callers updated.  Add FIXME.
	(all rtx functions): Rename local estate to *estate*.  It's an
	artificial argument added to the rtx, so make it stand out.

	* openrisc.cpu (or32 isa): Fix setup-semantics.

	* rtl.scm (rtx-class-*?): Delete, unused.
	(rtx-style-function?, rtx-style-operand?, rtx-style-macro?): Ditto.

	* read.scm (/CGEN-RTL-VERSION): Initialize to #f.
	(init-reader!): Set /CGEN-RTL-VERSION to default.

	* read.scm (cpu-load): Print load parameters.

	* dev.scm (load-doc): Set verbose-level to 2.

2009-09-20  Doug Evans  <dje@sebabeach.org>

	* rtl.scm (rtx-strdump): Use write instead of display.

2009-09-17  Doug Evans  <dje@sebabeach.org>

	* utils-cgen.scm (obj-csv-names): New function.
	* utils-sim.scm (/sfmt-contents): Use it in logging message.

2009-09-12  Doug Evans  <dje@sebabeach.org>

	Clean up pass of mode handling.
	Make use of mode name vs <mode> object more consistent and clear.
	* hardware.scm (/keyword-read): Default mode to the mode name,
	not the <mode> object.
	(/hw-parse-indices): Parse mode name and pass mode object to
	<hw-asm> constructor.
	(/hw-parse-values): Ditto.
	(<hw-register> parse!): Pass mode name to /hw-parse-indices
	and /hw-parse-values.
	(<hw-memory> parse!): Ditto.
	(<hw-address> parse!): Ditto.
	* mode.scm (/mode-table): New global, replaces mode-list.
	Modes stored in hashtable instead of list.
	(/mode-class-table): New global.
	(mode-list-non-alias-values): Update.
	(mode:eq?, mode-compatible?, mode:add!): Update.
	(mode:lookup): Restrict arg to the mode's name.  All callers updated.
	(mode-maybe-lookup): New function.
	(mode-real-name): Restrict arg to a <mode> object.  All callers updated.
	(mode-real-mode, mode-sem-mode, mode-bigger?): Ditto.
	(mode-find, mode-set-word-modes!): Update
	(mode-ensure-word-sizes-defined): Update.
	(/sort-mode-classes!): New function.
	(mode-builtin!): Update.  Sort mode classes here.
	(mode-finish!): Sort mode classes here too.
	* rtl-c.scm (/rtl-c-get): Restrict mode arg to a <mode> object.
	All callers updated.
	(rtl-c-set-quiet): Allow mode to be name of object.
	(rtl-c-set-trace): Ditto.
	* rtl-traverse.scm (rtl-eval-with-estate): Restrict mode arg to
	<mode> object.  All callers updated.
	* rtl.scm (rtx-sem-mode): Restrict arg to <mode> object.
	(rtx-lazy-sem-mode): Ditto.
	(<rtx-temp> make!): Assert mode arg is a <mode> object.
	(rtx-env-make): Allow var-list modes to be name or object.
	* sem-frags.scm (/frag-expr-assq-locals): New function.
	(/frag-compute-locals!): Call it.
	(/sfrag-create-cse-mapping): Renamed from sfrag-create-cse-mapping.
	All callers updated.
	* semantics.scm (/build-mem-operand!): Handle mode aliases.

	* sim-test.scm (*): Symbols no longer can be passed to string-append.

2009-09-10  Doug Evans  <dje@sebabeach.org>

	* insn.scm (/parse-insn-format): New arg `verify?', all callers updated.
	Improve error message for missing or too many bits.
	(/insn-parse): Don't verify iformat for virtual insns.
	
	* sid-decode.scm (cgen-decode.cxx): Remove redundant call to
	non-multi-insns.
	* sid-model.scm (/gen-model-insn-fn-decls): Ditto.
	(/gen-model-insn-fns, /gen-model-class-decls): Ditto.
	* sid.scm (pbb-engine-insns): Ditto.
	* sim-decode.scm (cgen-decode.c): Ditto.

2009-09-09  Doug Evans  <dje@sebabeach.org>

	* rtl-traverse.scm: Comment tweaks.
	* rtl-xform.scm: Comment and reformatting tweaks.
	* doc/rtl.texi: Add text to docs on ifield-assertions.

	* insn.scm (/insn-parse): Canonicalize the ifield-assertion before
	saving.

	Add support for controlling warnings/errors.
	Add tests for iformat description errors.
	* dev.scm (cload): New option #:diag.
	* read.scm (<reader>): New member verify-iformat?.
	(/parse-diagnostic, parse-warning): New functions.
	(parse-error): Guts moved to /parse-diagnostic.
	(/set-diagnostic-options!): New function.
	(cpu-load): New arg diagnostic-options, all callers updated.
	Recognize -w diagnostic-option-list.
	* ifield.scm (ifields-base-ifields): Move here from iformat.scm.
	(ifld-simple-ifields, ifields-simple-ifields): New function.
	* insn.scm (/parse-insn-format-iflds): New function.
	(/parse-insn-format): Guts moved to /parse-insn-format-iflds.
	New arg isa, all callers updated.  Do some basic validation of the
	ifield list if requested.
	* mach.scm (/sanity-check-insns): Improve error message text.
	* doc/running.texi: Document -w option.
	* doc/porting.texi: Document #:trace, #:diag options to cload.

	* ifield.scm (/multi-ifield-parse): Initialize bitrange.

	* dev.scm (*): Change default verbosity level to 2.

	* ifield.scm (<ifield> pretty-print): New method.
	(ifld-pretty-print): New function.
	(<multi-ifield> pretty-print): New method.

	* ifield.scm (<ifield> field-start): Delete word-len arg.
	All callers updated.
	(ifld-start): Ditto.
	(<multi-ifield> field-start): Ditto.
	* operand.scm (<hw-index> field-start): Ditto.

	* ifield.scm (ifld-beyond-base?): Remove args base-bitsize,
	total-bitsize.  All callers updated.
	* insn.scm (<insn>): Rename member ifld-values to /insn-value.
	New member /insn-base-value.
	(insn-base-value): New function.
	* mach.scm (/sanity-check-insns): New function.
	(arch-analyze-insns!): Call it.

2009-09-08  Doug Evans  <dje@sebabeach.org>

	* iformat.scm (ifields-base-ifields): Simplify.
	(compute-insn-length): Simplify, call ifields-base-ifields.
	(compute-insn-base-mask): Ditto.
	* ifield.scm (ifld-known-values): Ditto.
	(ifld-base-ifields): Ditto.
	* insn.scm (insn-value): Ditto.
	* pgmr-tools.scm (pgmr-pretty-print-insn-format): Ditto.

2009-09-08  DJ Delorie  <dj@redhat.com>

	* cpu/mep.opc (mep_cgen_insn_supported_asm): Change the test to a
	preprocessor macro, not an enum.

2009-09-08  Doug Evans  <dje@sebabeach.org>

	* rtl-c.scm (/rtl-c-get): Convert symbols to strings before passing
	to string-append.
	(*): Remove trailing ":" from error messages passed to estate-error.

2009-09-07  Doug Evans  <dje@sebabeach.org>

	* types.scm (<struct>): Delete.

	* pmacros.scm (/pmacro-env-make): New argument `loc', all callers
	updated.
	(/pmacro-loc-error): New function.

	* mach.scm (/isa-parse-decode-assist): New function.
	(/isa-parse): Call it.

	* decode.scm (/get-subopcode-value): New function.
	(/opcode-slots): Call it.
	(/fill-slot!): Add logging message.

	* cos.scm (/object-error): Convert symbols to strings before passing
	to string-append.

	* read.scm (rtl-version-equal?): New function.
	(rtl-version-at-least?, rtl-version-older?): New functions.

	* *.scm: Use / to prefix "local" vars/fns, for r6rs compliance.
	* pmacros.scm (/pmacro-builtin-splice): Refer to $unsplice for
	rtl versions >= 0.9.
	(pmacros-init!): Tweak to prepare for $<pmacro> for builtin pmacros.

2009-09-03  Doug Evans  <dje@sebabeach.org>

	* rtl.scm (rtx-pretty-name): Fix thinko, don't assume (car rtx)
	is simple.

2009-09-01  DJ Delorie  <dj@redhat.com>

	* cpu/mep.opc (parse_signed16_range): Mark as potentially unused.
	(parse_unsigned16_range): Likewise.
	(mep_cgen_insn_supported_asm): Make BSR12 check dependent on VLIW
	isa.

2009-09-01  Doug Evans  <dje@sebabeach.org>

	Pmacro .equals -> .equal?
	* pmacros.scm (-pmacro-builtin-equal?): Renamed from
	-pmacro-builtin-equals.  All callers updated.
	(pmacros-init!): Rename .equals to .equal?.
	* doc/pmacros.texi: Update.
	* testsuite/pmacros-1.test: Update.

	* doc/porting.texi: Work around texi2html bug where it doesn't
	properly escape <> inside double-quotes inside @code.

	* doc/porting.texi (Doing an opcodes port): Add step to specify
	the .opc file.

2009-08-29  Doug Evans  <dje@sebabeach.org>

	* hardware.scm (-keyword-parse): Fix `enum-prefix' default for
	rtl version 0.7.
	* doc/rtl.texi: Improve docs on rtl 0.7 vs 0.8 differences.

2009-08-27  Doug Evans  <dje@sebabeach.org>

	Add do-count rtl function.
	* rtl-c.scm (s-do-count): New function.
	(do-count): New rtl handler.
	* rtl-traverse.scm (-rtx-traverse-iteration): New function.
	(-rtx-make-traverser-table): Add ITERATION.
	* rtl.scm (rtx-make-iteration-limit-var): New function.
	(rtx-env-make-iteration-locals): New function.
	* rtx-funcs.scm (do-count): New rtl function.
	* cpu/play.cpu: Add do-count-test insn.
	* doc/rtl.texi: Add docs on do-count.

2009-08-26  Doug Evans  <dje@sebabeach.org>

	* read.scm (parse-error): Change error message output format
	to match context-owner-error.
	* rtl-c.scm (-rtl-c-get): Call estate-error instead of error.
	(rtl-c-set-quiet, rtl-c-set-trace): Ditto.
	(s-if, s-cond, -gen-non-vm-case-test): Ditto.
	(operand): Call estate-error instead of context-error.
	(local, delay): Ditto.
	(ref, attr): Call estate-error instead of error.
	* rtl-traverse.scm (tstate-error): New function.
	(-rtx-traverse-error): Call tstate-error instead of context-error.
	(-rtx-traverse-operands, -rtx-traverse): Ditto.
	(estate-error): New function.
	* rtl.scm (rtx-lvalue-mode-name): Handle locals.  Call estate-error
	instead of error.
	(e-if): Call estate-error instead of error.
	* rtx-funcs.scm (error): Call estate-error instead of context-error.
	(member): Ditto.
	* utils-cgen.scm (context-error): New arg `intro', all callers updated.
	Rewrite to call context-owner-error.
	(context-owner-error): New function.

	* ifield.scm (<ifield> constructor): New arg `location',
	all callers updated.
	* insn.scm (<insn> constructor): Ditto.
	(<multi-insn> constructor): Ditto.
	* minsn.scm (<macro-insn> constructor): Ditto.
	* operand.scm (<operand> constructor): Ditto.
	* utils-cgen.scm (builtin-location): New function.
	(<source-ident>): Fix default value of member `location'.
	(source-ident?): New function.

	* rtl-traverse.scm (estate-new-env): Rename arg state -> estate.
	(estate-push-env, estate-with-modifiers): Ditto.
	(estate-deepen): New function.

2009-08-25  Dave Korn  <dave.korn.cygwin@googlemail.com>

	* sim-model.scm (-gen-mach-defns): Use @PREFIX@_INSN__MAX instead of
	@CPU@_INSN__MAX.  Use @prefix@ instead of @cpu@ for engine_run
	routines.

2009-08-25  Doug Evans  <dje@sebabeach.org>

	* doc/pmacros.texi (pmacro default argument values): Add text.

2009-08-23  Doug Evans  <dje@sebabeach.org>

	* hardware.scm (<keyword>): Rename member print-name -> enum-prefix.
	Rename member prefix -> name-prefix.
	(<keyword> getters): Update.
	(-keyword-parse): Update.  Default enum-prefix to NAME-.
	(-keyword-read): Update.  Don't compute default value for
	enum-prefix here.
	(define-keyword): Update.
	(-hw-parse-keyword): Pass "UNUSED" for enum-prefix to -keyword-parse.
	* read.scm (cgen-rtl-version): New function.
	(-supported-rtl-versions): Add (0 8).
	* desc-cpu.scm (-gen-hw-decl): Remove cruft.
	* desc.scm (<keyword> gen-defn): prefix -> name-prefix.
	* gas-test.scm (<keyword> test-data): prefix -> name-prefix.
	* cpu/arm.cpu (gr-names, shift-type): Call define-rtl-version.
	Update, print-name -> enum-prefix, make uppercase.
	Remove unnecessary name-prefix spec.
	* cpu/fr30.cpu (gr-names, cr-names, dr-names): Ditto.
	* cpu/ip2k.cpu (register-names): Ditto.
	* cpu/m68k.cpu (dr-names, ar-names): Ditto.
	* cpu/sparc.cpu (gr-names): Ditto.
	* cpu/xc16x.cpu (gr-names, ext-names,psw-names): Ditto.
	(grb-names, conditioncode-names, extconditioncode-names): Ditto.
	(grb8-names, r8-names, regmem8-names, regdiv8-names): Ditto.
	(reg0-name, reg0-name1, regbmem8-names, memgr8-names): Ditto.
	* cpu/ia32.cpu (gr8-names, gr16-names, gr-names): Call
	define-rtl-version.  Update, print-name -> enum-prefix, make uppercase,
	prefix -> name-prefix.
	* cpu/sh64-compact.cpu (frc-names): Call define-rtl-version.
	Update, print-name -> enum-prefix, make uppercase.
	(drc-names, xf-names): Ditto.
	* cpu/xstormy16.cpu (gr-names, gr-Rb-names): Ditto.
	* doc/rtl.texi (Keywords): New section.
	(hardware indices): Update text.
	(rtl versions): Add 0.8.

	Add define-rtl-version.
	* read.scm (-CGEN-RTL-VERSION): Renamed from -CGEN-LANG-VERSION.
	(cgen-rtl-major, cgen-rtl-minor): Similarly renamed.
	(cgen-lang-fixlevel): Delete.
	(-supported-rtl-versions): New variable.
	(-cmd-define-rtl-version): New function.
	(init-reader!): New command define-rtl-version.
	(-cgen): Add rtl version to --version output.
	* doc/rtl.texi: Document rtl version support.
	* cpu/play.cpu: Add define-rtl-version.

2009-08-22  Doug Evans  <dje@sebabeach.org>

	* Makefile.am (OPTIONS): Define.
	(desc): Just generate <arch>-desc.[ch] files.
	* Makefile.in: Regenerate.
	* desc-cpu.scm (cgen-desc.h): Skip call to gen-extra-cpu.h if there's
	no .opc file.
	(cgen-desc.c): Similarly.
	* gen-all-desc: New file.
	* opcodes.scm (opc-file-provided?): New function.

	* mach.scm (current-*-add!): Update calls to parse-error.
	* operand.scm (op:new-mode): Update call to parse-error.
	* utils-cgen.scm (make-obj-context): New function.

	* NEWS: Copy over entries from 1.1 branch.

2009-08-20  Doug Evans  <dje@sebabeach.org>

	* gas-test.scm (<keyword> test-data): Catch invalid requests,
	flag a warning and compensate.
	(<hw-address test-data): Tweak for readability.
	(<hw-iaddress test-data): Ditto.
	(cgen-build.sh): Convert symbols to strings before passing to
	string-append.
	(cgen-allinsn.exp): Ditto.

	* doc/pmacros.texi (.splice): Add more text.

2009-08-19  Doug Evans  <dje@sebabeach.org>

	* configure.in (AM_INIT_AUTOMAKE): Change version to 1.1.50 to
	distinguish from 1.1.
	* configure: Regenerate.
	* read.scm (-CGEN-VERSION): Update.
	* doc/version.texi: Update.

	New builtin .pmacro?.
	* pmacros.scm (-pmacro-builtin-pmacro?): New function.
	(pmacros-init!): Add .pmacro?.
	* doc/pmacros.text: Document .pmacro?.
	* testsuite/pmacros-1.test: Test .pmacro?.

	* pmacros.scm (scan-list1): Reorganize tracing so that the tracing
	of a pmacro begins before its arguments are evaluated, improves
	readability.

	* pmacros.scm (.sll, .srl, .sra): Fix thinko.
	* testsuite/pmacros-1.test: Ditto.  Add better tests.

	* doc/rtl.texi (Instructions): Improve docs of when ${...} is needed
	in assembler syntax.
	(Operands): Similarly.

2009-08-18  Doug Evans  <dje@sebabeach.org>

	* ifield.scm (ifld-encode-mode): Add FIXME.
	* opcodes.scm (<ifield> gen-insert): Handle encode parameters with
	modes.
	(<ifield> gen-extract): Similarly.

	* read.scm (parse-error): Handle #f for context-location.
	* utils-cgen.scm (unspecified-location): Fix building of
	single-location.

	* doc/rtl.texi: Document how to write hex and boolean values.

	* gas-test.scm (<hw-asm> test-data): Handle () values.
	(<keyword> test-data): Convert symbols to strings before passing
	to string-append.
	(<hw-index> test-data): Enumerate all cases.  Emit correctly sized
	result for scalars.

	* operand.scm (hw-index-scalar): Set `name'.
	(hw-index-anyof, hw-index-derived): Ditto.

2009-08-17  Doug Evans  <dje@sebabeach.org>

	* pmacros.scm (-pmacro-builtin-internal-test): New function.
	(pmacros-init!): Add .internal-test.
	* testsuite/test-utils.sh.in (post_process): Tweak FAIL output.
	* testsuite/testsuite.cpu (internal-verify): New pmacro.
	* doc/pmacros.text: Document .internal-test.

	* utils-cgen.scm (parse-name): Handle (add 3) -> add3.
	(parse-comment): Allow numbers.
	* doc/porting.texi: Document that names and comments may be lists.

	* insn.scm (-insn-parse): Fix typo.

	Rename .eval -> .exec.  Add new .eval.
	* pmacros.scm (-pmacro-built-exec): Renamed from -pmacro-builtin-eval.
	(-pmacro-builtin-eval): New function.
	(pmacros-init!): Add .exec.
	* doc/pmacros.texi: Update, .exec -> .eval.  Document new .eval.
	* testsuite/location-1.test: Update.
	* testsuite/pmacros-1.test: Add test for .eval.

2009-08-16  Doug Evans  <dje@sebabeach.org>

	* doc/porting.texi: Remove support for Guile 1.4.

	* read.scm (current-reader-location): Return unspecified location
	if reader hasn't been initialized yet.

2009-08-13  Doug Evans  <dje@sebabeach.org>

	* dev.scm: Document tracing options.

	* pmacros.scm (pmacro-dump): New function.
	(check-pmacro): Tweak debugging output.
	* doc/cgenint.texi: Mention pmacro-dump, pmacro-debug.
	* doc/pmacros.texi (.splice): Use pmacro-dump instead of pmacro-expand.

	Add .let* pmacro builtin.
	* pmacros.scm (-pmacro-builtin-let*): New function.
	(pmacros-init!): Add .let*.
	* doc/pmacros.texi: Document .let*.
	* testsuite/pmacros-1.test: Test .let*.

2009-08-12  Doug Evans  <dje@sebabeach.org>

	Clean up cpu file parsing, pass context consistently instead of the
	old "errtxt" argument.
	NOTE: ACU == "All Callers Updated".
	* attr.scm (-parse-simple-attribute): Renamed from
	parse-simple-attribute, ACU.
	(-attr-parse): Change errtxt argument to context, ACU.
	(-attr-read): Ditto.
	(atlist-parse): Ditto.  Put context arg first.
	(attr-parse): Use parse-error instead of context-error.
	* enum.scm (parse-enum-vals): Change errtxt argument to context, ACU.
	(-enum-parse-prefix, -enum-parse, -enum-read): Ditto.
	* hardware.scm (-keyword-parse): Renamed from keyword-parse.
	`context' arg is now a <context> object.  ACU.
	(-keyword-read): `context' arg is now a <context> object.  ACU.
	(-hw-parse-indices): Change errtxt argument to context, ACU.
	(-hw-parse-values, -hw-parse-handlers): Ditto.
	(-hw-parse-getter, -hw-parse-setter, -hw-parse, -hw-read): Ditto.
	(-hw-validate-layout, -hw-create-getter-from-layout,
	-hw-create-setter-from-layout): Ditto.
	(<hw-register>:parse!, <hw-pc>:parse!): Ditto.
	(<hw-memory>:parse!, <hw-immediate>:parse!): Ditto.
	(<hw-address>:parse!): Ditto.
	* ifield.scm (-ifield-parse, ifield-read): Ditto.
	(-ifld-parse-follows, -ifld-parse-encode-decode): Ditto.
	(-ifld-parse-encode, -ifld-parse-decode): Ditto.
	(-multi-ifield-parse, -multi-ifield-read): Ditto.
	* insn.scm (-insn-parse, -insn-read): Ditto.
	(parse-syntax): Ditto.  Put context arg first.
	(-parse-insn-format-symbol): Change errtxt argument to context, ACU.
	(-parse-insn-format-ifield-spec, -parse-insn-format-list): Ditto.
	(-parse-insn-format): Ditto.
	* mach.scm (-arch-parse-alignment, -arch-parse-machs): Ditto.
	(-arch-parse-isas): Ditto.
	(-isa-read): Add context arg, ACU.
	(-cpu-parse, -cpu-read, -mach-read): Ditto.
	* minsn.scm (-minsn-parse-expansion): Change errtxt argument to
	context, ACU.
	(-minsn-parse, -minsn-read, -minsn-compute-iflds): Ditto.
	(minsn-make-alias): Ditto.
	* mode.scm (-mode-parse): Ditto.
	(parse-mode-name): Ditto.  Put context arg first.
	* model.scm (-prefetch-parse, -retire-parse, -pipeline-parse): Change
	errtxt argument to context, ACU.
	(-unit-parse, -model-parse, -model-read): Ditto.
	* operand.scm (-operand-parse-getter): Use parse-error instead of
	context-error.
	(-operand-parse-setter): Ditto.
	(-operand-parse): Change errtxt argument to context, ACU.
	(-operand-read, -derived-operand-parse, -derived-operand-read): Ditto.
	(-anyof-operand-parse, -anyof-operand-read): Ditto.
	* read.scm (reader-error): Delete.  Use parse-error instead.
	(parse-error): Change errtxt argument to context, ACU.  Split args
	argument into expr and maybe-help-text.
	(-reader-process-expanded-1!): Reorganize.
	* rtl.scm (-subr-read): Change errtxt argument to context, ACU.
	* types.scm (parse-type): Ditto.
	* utils-cgen.scm (single-location->simple-string): New function.
	(<context>): Replace members file,lineno with location.
	(make-prefix-context): Renamed from context-make-prefix, ACU.
	(make-current-context): New function.
	(context-append, context-append-name): New functions.
	(context-make-reader): Delete.
	(parse-name): Change errtxt argument to context, ACU.
	Put context arg first.
	(parse-comment): Ditto.
	(parse-number): Change errtxt argument to context, ACU.
	(arg-list-validate-name, arg-list-check-no-args,
	arg-list-symbol-arg): Ditto.

	* read.scm (-cmd-if): Don't assume test is a list.

	* html.scm (get-insn-properties): Delete errtxt, unused.

2009-08-11  Doug Evans  <dje@sebabeach.org>

	* doc/rtl.texi (hardware types): Add pc.

2009-08-07  Doug Evans  <dje@sebabeach.org>

	Add -t option for tracing things like commands, pmacro expansion.
	* dev.scm (cload): New arg #:trace.
	* pmacros.scm (-pmacro-expand): Rewrite pmacro tracing.
	(pmacro-trace): New arg `loc'.  Rewrite pmacro tracing.
	(pmacro-debug): Call pmacro-trace instead of -pmacro-expand.
	* read.scm (<reader>): New members trace-commands?, trace-pmacros?.
	(-reader-process-expanded-1!): Trace commands if requested.
	(-reader-process!): Call pmacro-trace of pmacro tracing requested.
	(-set-trace-options!): New function.
	(-init-reader!): New function.
	(cpu-load): New arg trace-options, all callers updated.
	Call -init-reader! and -set-trace-options!.
	(cgen-usage): Improve output formatting.
	(common-arguments): New option -t.
	(-cgen): Process -t.
	* utils-cgen.scm (single-location->string): Renamed from
	pretty-print-single-location.  All callers updated.
	(location->string): Renamed from pretty-print-location.
	All callers updated.
	(source-properties-location->string): New function.
	* doc/running.texi: Document -t.

2009-08-06  Doug Evans  <dje@sebabeach.org>

	* read.scm (debug-env, debug-var-names, debug-var, debug-tty,
	debug-tty-port, debug-repl, debug-quit, debug-repl-env): Move to ...
	* utils.scm: ... here.

2009-08-05  Doug Evans  <dje@sebabeach.org>

	Track source location better, for better error messages.
	* pmacros.scm (-pmacro-eval): Delete, unused.
	(pmacro-expand, -pmacro-expand): New arg `loc', all callers updated.
	(-pmacro-expand-expr-list, -smacro-apply): Ditto.
	(scan-list, scan): Ditto.
	(-pmacro-builtin-pmacro, -pmacro-builtin-let, -pmacro-builtin-if,
	-pmacro-builtin-case, -pmacro-builtin-cond, -pmacro-builtin-begin,
	-pmacro-builtin-andif, -pmacro-builtin-orif): Ditto.
	(scan-list1): New function.
	(-pmacro-build-lambda): New arg `loc', all callers updated.  Rewrite.
	* read.scm (<reader>): New member `location'.
	(-reader-lookup-command): Renamed from reader-lookup-command,
	all callers updated.
	(reader-error): Rewrite to produce better source location info.
	(current-reader-location): New function.
	(-reader-process-expanded-1!): Renamed from -reader-process-expanded-1.
	All callers updated.  Record source location of expression.
	(reader-process-expanded!): Renamed from reader-process-expanded.
	All callers updated.
	(-reader-process!): Renamed from reader-process.  New arg `loc'.
	All callers updated.  Record source location of define-pmacro.
	* utils-cgen.scm (<location>): New class.
	(single-location): New (pseudo) class.
	(pretty-print-single-location, pretty-print-location): New functions.
	(location-top, location-push-single, location-push): New functions.
	(unspecified-location, current-input-location): New functions.
	(location-property): New object property.
	(location-property-set!): New function.
	(<source-ident>): Renamed from <ordered-ident>.  New member `location'.
	All uses updated.
	* testsuite/location-1.test: New testcase.
	* testsuite/run-tests.sh: Fix fail count handling.
	* testsuite/test-utils.sh.in (run_cgen): New option `-f'.  Allow tests
	to expect cgen to fail.

	* pmacros.scm (*): Use "pmacro" instead of "macro" more consistently.

	* read.scm (-cmd-include): Renamed from include.  All callers updated.
	(-cmd-if): Renamed from cmd-if.  All callers updated.
	Use reader-process-expanded! on then/else clauses instead of eval1.

2009-07-22  Doug Evans  <dje@sebabeach.org>

	* modes.scm (TI,OI): New modes.
	* types.scm (parse-type): Improve error checking.  Don't hardwire
	mode names here.
	* utils.scm (non-negative-integer?): New function.

	* pmacros.scm (-pmacro-builtin-find): New predicate.
	(pmacros-init!): Add .find.
	* doc/pmacros.tex: Document .find.
	* testsuite/pmacros-1.test: Test .find.

2009-07-20  Doug Evans  <dje@sebabeach.org>

	* insn.scm (multi-insn-instantiate!): Use logging messages instead of
	commented out printfs.
	* rtl.scm (rtl-finish!): Whitespace tweaks.
	* model.scm (parse-insn-timing): Tweak logging message.
	* operand.scm: Comment and whitespace tweaks.
	(op:type): Tweak error message.
	(op-ifield): Tweak logging message.
	(-derived-operand-parse, anyof-merge-semantics): Ditto.
	* read.scm: Whitespace cleanup.
	* utils.scm: Whitespace cleanup.

2009-07-19  Doug Evans  <dje@sebabeach.org>

	Fix binding of nested pmacro parameters.
	* pmacros.scm (-pmacro-env-make): New arg prev-env.
	All callers updated.
	(-pmacro-bulid-lambda): Ditto.
	* doc/pmacros.texi: Update.
	* testsuite/pmacros-1.test: Add testcase.

	* ifield.scm (-multi-ifield-make-default-insert): Fix shifts
	calculation.
	(-multi-ifield-make-default-extract): Ditto.

	* rtl-c.scm (addc-cflag, addc-oflag, subc-cflag, subc-oflag): Define.
	(add-cflag, add-oflag, sub-cflag, sub-oflag): Deprecate.
	* rtx-funcs.scm (addc-cflag, addc-oflag, subc-cflag, subc-oflag):
	Define.
	(add-cflag, add-oflag, sub-cflag, sub-oflag): Deprecate.
	* doc/rtl.texi: Update.

	* doc/pmacros.texi (.not): Emphasize (.not 0) is not 1.

	Rename builtin boolean pmacros, for consistency with rtl.
	* pmacros.scm: .and -> .andif, .or -> .orif, .bitand -> .and,
	.bitor -> .or, .bitxor -> .xor, .bitinv -> .inv.
	* doc/pmacros.texi: Update.
	* testsuite/pmacros-1.test: Update.

2009-07-17  Doug Evans  <dje@sebabeach.org>

	Use hash tables to record ifields, operands, insns, macro-insns.
	* attr.scm (attr-builtin!): Tweak some comments.
	* hardware.scm (hardware-builtin!): Call all-isas-attr-value.
	* ifield.scm (<ifield>): Subclass from <ordered-ident> instead of
	<ident>.
	(<multi-ifield>): New constructor.
	(ifield-builtin!): Add isa attr to f-nil, f-anyof.
	* insn.scm (<insn>): Subclass from <ordered-ident> instead of
	<ident>.
	(-sub-insn-make!): Add hack to avoid differences in generated code.
	(multi-insn-instantiate!): Add total number of multi-insns to
	logging message.
	* mach.scm (<arch>): Rename members ifld-list, op-list, insn-list,
	minsn-list to foo-table.  New member next-ordinal.
	Update getters/setters.
	(arch-ifld-list, arch-op-list, arch-insn-list, arch-minsn-list):
	New functions.
	(-get-next-ordinal!, -get-lowest-ordinal): New function.
	(-make-ident-object-table, -ident-object-table->list,
	-ident-object-table-add!, -ident-object-table-lookup): New functions.
	(current-ifld-list, current-ifld-add! current-ifld-lookup,
	-ifld-already-defined?): Rewrite.
	(current-op-list, current-op-add! current-op-lookup,
	-op-already-defined?): Rewrite.
	(current-raw-insn-list, insn-list-car, insn-list-splice!): Delete.
	(current-insn-list, current-insn-add! current-insn-lookup,
	-insn-already-defined?): Rewrite.
	(current-minsn-list, current-minsn-add! current-minsn-lookup,
	-minsn-already-defined?): Rewrite.
	(all-isas-attr-value, all-isas-attr, attr-isa-list): New functions.
	(MAX-VIRTUAL-INSNS): Define.
	(arch-analyze-insns!): Add hack to avoid differences in generated code.
	Update use of arch-insn-list.
	(mach-init!): Initialize ifld-table, op-table, insn-table, minsn-table.
	(arch-finish!): Delete references to ifld-list, op-list, insn-list,
	minsn-list.
	* minsn.scm (<macro-insn>): Subclass from <ordered-ident> instead of
	<ident>.  New constructor.
	* operand.scm (<operand>): Subclass from <ordered-ident> instead of
	<ident>.
	* sid.scm (-virtual-insn-add!): New function.
	(-create-virtual-insns!): Call it.
	(-fill-sim-insn-list!): Rewrite.
	* sim.scm (-virtual-insn-add!, -create-virtual-insns!): New functions.
	(sim-finish!): Move contents to -create-virtual-insns!, and call it.
	* utils-cgen.scm (<ordered-ident>): New class.
	(obj-ordinal, obj-set-ordinal!): New functions.
	(add-ident-methods!): Delete.

	* model.scm (parse-insn-timing): Change logging message to level 3.

2009-07-16  Doug Evans  <dje@sebabeach.org>

	* doc/rtl.texi (Enumerated constants): Add example, fix a typo,
	add a link to define-normal-insn-enum.

	* doc/porting.texi (Conventions): Add docs on writing integers.

	* cpu/simplify.inc (*): One line doc strings don't need \n.
	(df): Invoke define-full-ifield instead of claiming it's an alias.
	(dno): Define.
	(dnop): Mark as deprecated.

	* cpu/play.cpu: Add example of hardware `layout'.
	* doc/porting.tex: Add docs on simplify.inc.
	* doc/rtl.texi: Cleanup pass over "Simplification macros",
	and other things.

	* ifield.scm: Whitespace/formatting cleanup.

	* ifield.scm (-multi-ifield-parse): Watch for missing subfields.

	* read.scm (parse-error): Don't print single entry args as a list.
	(-reader-process-expanded-1): Convert symbol to string for
	string-append.

	* insn.scm (multi-insn-instantiate!): Tweak logging message.

2009-07-15  Doug Evans  <dje@sebabeach.org>

	* cpu/simplify.inc (dno): New pmacro.
	* doc/porting.texi: Add section on simplify.inc.
	* doc/rtl.texi (Instruction operands): Mention dno, dnop.

2009-07-15  Doug Evans  <devans@sourceware.org>

	* gen-all-doc: Generate index.html.

2009-07-13  Doug Evans  <dje@sebabeach.org>

	Extend pmacro language, add testsuite.
	* Makefile.am (SUBDIRS): Add testsuite.
	* Makefile.in: Regenerate.
	* configure.in (AC_OUTPUT): Create testsuite/Makefile,
	testsuite/test-utils.sh.
	* configure: Regenerate.
	* dev.scm (cload): Handle testsuite app.
	(load-testsuite): New function.
	* pmacros.scm: (-pmacro-debug?): New global.
	(-smacro-table): New global.
	(-smacro-lookup, -smacro-set!): New functions.
	(-pmacro-make): New argument `syntactic-form?', all callers updated.
	(-pmacro-syntactic-form?): New function.
	(-pmacro-expected-number, -pmacro-verify-number): New functions.
	(-pmacro-expected-integer, -pmacro-verify-integer): New functions.
	(-pmacro-expected-non-negative-integer): New function.
	(-pmacro-verify-non-negative-integer): New function.
	(-pmacro-expand-expr-list): New function.
	(-pmacro-process-args-1): Renamed from -pmacro-process-args.
	(-pmacro-process-args): Renamed from -pmacro-invoke.
	(-pmacro-apply, -smacro-apply): New functions.
	(-pmacro-expand): Rewrite syntactic form processing.
	(-pmacro-build-lambda): Reformat.
	(define-pmacro): Watch for more errors in definition.
	(pmacro-debug): New function.
	(pmacro-trace): Set/reset -pmacro-debug?.
	(all existing builtin pmacro helpers): Rename to -pmacro-builtin-foo.
	(-pmacro-builtin-substring): Fix.  Add support for `end' marker.
	(-pmacro-builtin-for-each, et.al.): New helpers for .for-each, .let,
	.if, .case, .cond, .begin, .print, .dump, .error, .list, .ref,
	.length, .replicate, .equals, .and, .or, .not, .eq, .ne, .lt, .gt,
	.le, .ge, .add, .sub, .mul, .div, .rem, .sll, .srl, .sra, .bitand,
	.bitor, .bitxor, bitinv, .car, .cdr, .caar, .cadr, .cdar, .cddr.
	(pmacros-init!): Initialize -smacro-table.
	Rewrite pmacro initialization.
	* read.scm (reader-process-expanded): Renamed from
	-reader-process-expanded.  All callers updated.
	Recognize () as a no-op.
	(cpu-load): Tweak logging messages.
	* utils.scm (message): Add comment.
	* cpu/play.cpu: Add some instructions to play with .let.
	* doc/cgenint.texi: Move some debugging related docs to here from
	cgen.texi.
	* doc/pmacros.texi: Reorganize.  Add docs for new builtin pmacros.
	* testsuite/Makefile.am: New file.
	* testsuite/Makefile.in: New file.
	* testsuite/test-utils.sh.in: New file.
	* testsuite/run-tests.sh: New file.
	* testsuite/testsuite.cpu: New file.
	* testsuite/pmacros-1.test: New file.

	* decode.scm: Comment and formatting tweaks.
	(-build-decode-table-guts): Add more data to logging message.

2009-07-12  Doug Evans  <dje@sebabeach.org>

	Delete files that now live in ../cpu.
	* cpu/iq10.cpu: Delete.
	* cpu/iq2000.cpu: Delete.
	* cpu/iq2000.opc: Delete.
	* cpu/iq2000m.cpu: Delete.
	* cpu/m32r.cpu: Delete.
	* cpu/m32r.opc: Delete.

2009-07-09  Doug Evans  <dje@sebabeach.org>

	* utils-sim.scm (-gen-decode-bits): New argument `entire-val'.
	All callers updated.  Work around -ve shifts by referencing the
	entire value.

	* utils.scm (message): Handle pairs.

2009-07-08  DJ Delorie  <dj@redhat.com>

	* cpu/mep-ivc2.cpu (cpmovtocsar0_C3, cpmovtocsar1_C3,
	cpmovtocc_C3, cpmovtocsar0_P0S_P1, cpmovtocsar1_P0S_P1,
	cpmovtocc_P0S_P1): Mark volatile.  Note which registers are
	written to.

2009-07-07  Doug Evans  <dje@sebabeach.org>

	* cpu/play.cpu (add): Use (ifield enum) for one format element.
	* cpu/play.opc: New file.

	Allow arbitrary enums in instruction formats, e.g. (f-op1 OP1_4).
	* insn.scm (-parse-insn-format-ifield-spec): Recognize (ifield enum).
	* doc/rtl.texi (Instructions): Update.

	* cgen-opc.scm (-opc-file-path,opc-file-path): Move to opcodes.scm
	(opc-arguments, -OPC): Call set-opc-file-path!.
	* opcodes.scm (-opc-file-path,opc-file-path): Moved here.
	(set-opc-file-path!): New function.
	* dev.scm: Mention set-opc-file-path!.  Mention doc options.

	* opc-ibld.scm (gen-insn-builder): Convert symbols to strings
	before passing to gen-c-args.

2009-07-06  DJ Delorie  <dj@redhat.com>

	* cpu/mep-core.cpu (fsft, ssarb): Mark as VOLATILE.
	* cpu/mep-ivc2.cpu (many): Add VOLATILE to more insns that make
	unspecified accesses to control registers.

2009-07-01  DJ Delorie  <dj@redhat.com>

	* cpu/mep-ivc2.cpu: Add VOLATILE to insns that make
	unspecified accesses to control registers.

	* cpu/mep-ivc2.cpu (cmov, cmovc, cmovh): Add intrinsic names to VLIW variants.
	(ivc2rm, ivc2crn): Make data type consistent with non-VLIW variants.

2009-06-27  Doug Evans  <dje@sebabeach.org>

	* gen-all-intrinsics: New file.

2009-06-24  Doug Evans  <dje@sebabeach.org>

	* All *.scm files: Update copyright year.
	* utils.scm (copyright-fsf, copyright-redhat): Ditto.

2009-06-23  DJ Delorie  <dj@redhat.com>

	* intrinsics.scm: Updates to support IVC2.
	(belongs-to-group?): Check IVC2 slots.
	(-slots-attribute): New.
	(targets::attributes): Add SLOTS.
	(target:add-well-known-intrinsics): Add CPMOV.
	(md-insn): Add CPTYPE and CRET?.
	(add-md-insn): Likewise.
	(add-intrinsic-for-isa): Disable the duplicate tests, as IVC2 has
	duplicate insns with different bit patterns.
	(write-cgen-insn?): Add cret? support.
	(intrinsics.h): Add vector types.
	(runtime-op): Add vector support.
	(intrinsic-protos.h): Let GCC define its types.  Add cret? support.

	* cpu/mep-core.cpu: Add CPTYPE and CRET attributes.
	* cpu/mep-ivc2.cpu: Update all insns to include type information.
	(h-cr-ivc2): Default to typeless.
	(h-ccr-ivc2): Fix register width.
	(SLOTS): Fix values and default.
	(ivc2_*): Add control register names.
	(crop, crqp, crpp, croc, crqc, crpc): Default to typeless.

	* cpu/mep.opc (mep_cgen_insn_supported_asm): New, skip the short
	version of BSR when assembling VLIW bundles.  Use it in mep-asm.c

2009-06-22  Doug Evans  <dje@sebabeach.org>

	* semantics.scm (insn-build-known-values): Fix typo in comment.

2009-06-21  Doug Evans  <dje@sebabeach.org>

	* rtl-xform.scm (rtx-simplify-insn): New function.
	* html.scm (gen-insn-docs): Call it.
	* sem-frags.scm (sem-find-common-frags, -frag-test-data): Ditto.
	* iformat.scm (ifmt-analyze): Minor simplification.

	* semantics.scm (semantic-compile): Change arg sem-code-list to
	sem-code.
	(semantic-attrs): Ditto.
	* iformat.scm (ifmt-analyze): Update.
	(ifmt-compute!): Update.
	* rtl-traverse.scm (-compile-expr-fn, rtx-compile): Move to
	rtl-xform.scm.
	(-rtx-trim-args, -rtx-trim-for-doc, rtx-trim-for-doc): Ditto.
	* rtl.scm (-rtx-canonicalize-expr, rtx-canonicalize): Ditto.
	* semantics.scm (rtx-simplify): Ditto.
	(rtx-const-equal, rtx-const-list-equal): Ditto, and make local.
	(rtx-simplify-eq-attr-mach, rtx-simplify-eq-attr-insn): Ditto.
	(-simplify-expr-fn): Move to rtl-xform.scm.
	(-solve-expr-fn, rtx-solve): Ditto.
	* rtl-xform.c: New file.
	* read.scm: Load it.

	* rtl-c.scm (delay): Add FIXME, tweak formatting.
	* rtl-traverse.scm (-rtx-traverse-expr): Tweak comments.
	(-rtx-traverse, rtx-traverse): Ditto.

2009-06-20  Doug Evans  <dje@sebabeach.org>

	* doc/rtl.texi (Expressions): Enhance docs of shift ops.

	* configure.in: Update version to 1.1.
	* configure: Regenerate.
	* read.scm (-CGEN-VERSION): Update to 1.1.0.

2009-06-20  Masaki Muranaka  <monaka@monami-software.com>
	    Doug Evans  <dje@sebabeach.org>

	* desc-cpu.scm (cgen-desc.h): Tweak logit message for consistency.
	(cgen-desc.c): Ditto.
	* sid-cpu.scm (cgen-desc.h, cgen-cpu.h, cgen-defs.h): Ditto.
	(cgen-write.cxx, cgen-semantics.cxx, cgen-sem-switch.cxx): Ditto.
	* sid-decode.scm (cgen-decode.h, cgen-decode.cxx): Ditto.
	* sid-model.scm (cgen-model.cxx, cgen-model.h): Ditto.
	* sim-arch.scm (cgen-arch.h, cgen-arch.c): Ditto.
	(cgen-cpuall.h, cgen-ops.c): Ditto.
	* sim-cpu.scm (cgen-cpu.h, cgen-defs.h, cgen-cpu.c): Ditto.
	(cgen-read.c, cgen-write.c, cgen-semantics.c): Ditto.
	(cgen-sem-switch.c): Ditto.
	* sim-decode.scm (cgen-decode.h, cgen-decode.c): Ditto.
	* sim-model.c (cgen-model.c): Ditto.

2009-06-18  Doug Evans  <dje@sebabeach.org>

	* gen-all-doc: Add fr30, ip2k, iq2000, lm32, mep, mt.

	* html.scm (doc-analyze!): Provide default IDOC attribute if missing.

	* dev.scm (cload): Change #:arch argument to take the path to the
	.cpu file instead of just the name of the architecture.
	* read.scm (arch-path): Remove trailing '/'.
	(cpu-load): Set `arch-path' to directory of .cpu file.
	(-cgen): Don't set `arch-path' here.
	(include): Update.
	* doc/porting.texi: Update.

2009-06-14  Doug Evans  <dje@sebabeach.org>

	* gen-all-doc: Use files in ../cpu where possible.

	* Makefile.am (ARCHFILE): Fix path.
	* Makefile.in: Regenerate.
	* html.scm: Use "pre" instead of "plaintext".

	* doc/cgenint.texi: Renamed from internals.texi.  Several cleanups.
	* doc/app.texi: Cleanup pass.
	* doc/cgen.texi: Cleanup pass.
	* doc/glossary.texi: Add entries for ifield, iformat, sformat, insn.
	* doc/intro.texi: Cleanup pass.
	* doc/mdate-sh: New file.
	* doc/opcodes.texi: Cleanup pass.
	* doc/pmacros.texi: Cleanup pass.
	* doc/porting.texi: Cleanup pass.
	* doc/rtl.texi: Cleanup pass.
	* doc/running.texi: Cleanup pass.  Document more runtime options.
	* doc/stamp-vti: Update.
	* doc/version.texi: Update.

	* Makefile.am (AUTOMAKE_OPTIONS): Add 1.9
	(GUILE): Fix definition.
	* Makefile.in: Regenerate with automake 1.9.6.
	* aclocal.m4: Regenerate with aclocal 1.9.6.
	* configure.in (AC_PREREQ): Set to 2.59.
	(GENINSRC_NEVER): Define.
	* configure: Regenerate with autoconf 2.59.
	* doc/Makefile.am (info_TEXINFOS): Add cgenint.texi.
	(cgen.info,cgen.dvi): Delete.
	(cgen_TEXINFOS,cgenint_TEXINFOS): Define.
	(noinst_TEXINFOS): Add cgenint.texi.
	(DOCFILES): Add missing files.
	(MAINTAINERCLEANFILES,DISTCLEANFILES): Define.
	* doc/Makefile.in: Regenerate with automake 1.9.6.

	* guile.scm: Add "." to %load-path if >= guile version 1.8.

	* attr.scm: Removing trailing whitespace.
	* cgen-intrinsics.scm: Ditto.
	* cgen-sim.scm: Ditto.
	* cos.scm: Ditto.
	* enum.scm: Ditto.
	* guile.scm: Ditto.
	* sim.scm: Ditto.

2009-05-28  DJ Delorie  <dj@redhat.com>

	* cpu/mep.opc (parse_signed16_range): New.
	(parse_unsigned16_range): New.
	* cpu/mep-ivc2.cpu (imm16p0, simm16p0): Use them.

2009-05-26  DJ Delorie  <dj@redhat.com>

	* cpu/mep-ivc2.cpu (h-ccr-ivc2): Enable for C3 slots, fix
	accumulator names.
	(f-ivc2-ccrn-c3hi): New.
	(f-ivc2-ccrn-c3lo): New.
	(f-ivc2-ccrn-c3): New.
	(ivc2c3ccrn): Use it.

2009-05-22  DJ Delorie  <dj@redhat.com>

	* cpu/mep.opc (mep_examine_ivc2_insns): Fix bug in ivc2 decoder.
	(mep_config_map): Regenerate.

	* cpu/mep-ivc2.cpu (h-ccr-ivc2): Add generic names as well as
	ivc2-specific names.
	(simm8p20): New.
	(cmovc): move to after field definitions, use ivc2-specific
	register names.
	(cpmovi_b_P0S_P1): New.
	
2009-05-19  DJ Delorie  <dj@redhat.com>

	* cpu/mep.opc: Regenerate configuration.
	(parse_cdisp10): Only check CPU flags, not COP flags.
	(check_configured_mach): Likewise.

2009-05-13  DJ Delorie  <dj@redhat.com>

	* intrinsics.scm (insns.md): Add RTL predicates.
	(intrinsics.h): Remove old C intrinsics.

2009-04-29  DJ Delorie  <dj@redhat.com>

	* mep-ivc2.cpu: New.
	* mep-core.cpu: Regenerated.  Add support for deferred register
	writes.
	(SLOT): Add IVC2 slot types.
	(sim-syscall): Rename to something more appropriate.
	* mep-ext-cop.cpu: Regenerate.
	* mep.opc: Regenerate.  Add "coprocessor supported" define area.
	(print_slot_insn): New.
	(mep_examine_ivc2_insns): New.
	(mep_print_insn_set_ivc2_mode): New.
	(mep_print_insn): Support IVC2 slotting.
	
2009-04-20  DJ Delorie  <dj@redhat.com>

	* intrinsics.scm (intrinsics-analyze!): Include aliases.
	(guess-mode): Drop COP* syntax.
	(need-insn): Add "--syscall--" to the list.
	(enum-type): Drop COP* syntax.
	(intrinsics.h): Likewise.
	(intrinsic-protos.h): Change file header to allow it to be
	included.

2009-04-17  DJ Delorie  <dj@redhat.com>

	* cpu/mep-c5.cpu (f-12s20): Change to signed.
	(lhucpm1): Limit to C5 mach.
	(dsp0,dsp1): Rewrite as aliases so that intrinsics are generated.
	* cpu/mep-core.cpu (extend-cdisp10): New.
	(f-cdisp10): Change to signed, use extend-cdisp10 to sign extend.
	
2009-04-08  DJ Delorie  <dj@redhat.com>

	* cpu/mep-c5.cpu: New.
	* cpu/mep-core.cpu: Add C5 support.
	* cpu/mep.opc: Likewise.

2009-02-18  Pierre Muller  <muller@ics.u-strasbg.fr>

	* opc-itab.scm (<>_cgen_init_opcode_table): Avoid compiler warning
	about calling memset with a zero length.

2009-02-03  DJ Delorie  <dj@redhat.com>

	* cpu/mep-core.cpu: Update to new MeP configuration.
	* cpu/mep-ext-cop.cpu: Likewise.
	* cpu/mep.opc: Likewise.

2008-12-23  Frank Ch. Eigler  <fche@redhat.com>

	* sim.scm (-op-gen-queued-write): Add needed symbol->string.

2008-06-17  Dave Brolley  <brolley@redhat.com>

	* cpu/xstormy16.cpu (h-pc): Add a set handler.
	(h-gr): Likewise.

2007-11-13  Dave Brolley  <brolley@redhat.com>

	* cgen-intrinsics.scm (load-files): Remove reference to fixup.scm.

2007-11-05  Dave Brolley  <brolley@redhat.com>

        * intrinsics.scm,cgen-intrinsics.scm: New application which
	generates code to support intrinsic functions for insns in the
	mep architecture in gcc.

2007-09-21  Dave Brolley  <brolley@redhat.com>

	* cpu/mep-core.cpu (rnc, rnuc, rns, rnus, rn3c, rn3uc, rn3s) 
	(rn3us): CDATA attribute now LONG.
	
2007-08-21  Dave Brolley  <brolley@redhat.com>

	* rtl-c.scm (const): Generate call to MAKEDI for integers larger
	than 32 bits.

2007-07-05  Nick Clifton  <nickc@redhat.com>

	* utils.scm (copyright-fsf): Update copyright notice to refer to
	the GPL version 3.

2007-05-22  Nick Clifton  <nickc@redhat.com>

	* doc/cgen.texi: Use @copying around the copyright notice.
	* doc/internals.texi: Likewise.

2007-02-05  Dave Brolley  <brolley@redhat.com>

	* *mep*: New cpu description for Toshiba Media Processor (MeP).

2007-02-05  Dave Brolley  <brolley@redhat.com>

	* opc-asmdis.scm (-gen-init-asm-fn): Include CGEN_ASM_INIT_HOOK
	in the generated code for @arch@_cgen_init_asm if it is defined.

	* Contribute the following changes:
	2005-04-05  Richard Sandiford  <rsandifo@redhat.com>

	* attr.scm (<string-attribute>): New attribute class.
	(attr-kind): Handle <string-attribute>.
	(parse-simple-attribute): New function.
	(<boolean-attribute> 'parse-value): Use parse-simple-attribute.
	(<bitset-attribute> 'parse-value): Likewise.
	(<boolean-attribute> 'parse-value): Likewise.
	(<enum-attribute> 'parse-value): Likewise.
	(<string-attribute> 'parse-value): New function.
	(-attr-parse): Handle <string-attribute>.
	(-attr-read): Likewise.
	(<string-attribute> 'gen-value-for-defn-raw): New function.
	(<string-attribute> 'gen-value-for-defn): New function.

2006-11-07  Dave Brolley  <brolley@redhat.com>

	* sid-model.scm (gen-model-unit-fn-decl): Use symbol->string where
	necessary.

2006-10-18  Dave Brolley  <brolley@redhat.com>

	* Contribute the following changes:

	2006-07-11  Dave Brolley  <brolley@redhat.com>

	* cpu/sh64-compact.cpu (movual, movual2): New insns.
	(movcol): New insn.
	* cpu/sh.cpu (sh4a-nofpu-models): New pmacro.
	* sid.scm (-op-gen-delayed-set-maybe-trace): If delay used, note the
	hardware or memory mode which was used.
	* sid-cpu.scm (hw-need-write-stack?): New function.
	(-gen-hw-stream-and-destream-fns): Compute stack-regs. Use it to
	identify hardware which uses write stacks.
	(useful-mode-names): Renamed to write-stack-memory-mode-names.
	Initialized to an empty list.
	(-gen-writestacks, -gen-reset-fn, -gen-unified-write-fn): Use
	hw-need-write-stack?.
	* hardware.scm (used-in-delay-rtl?): New member of <hardware-base>.
	(define-getters <hardware-base>): Define used-in-delay-rtl?.
	(used-in-delay-rtl?): New method of <hardware-base>.
	(hw-used-in-delay-rtl?): New function.

	2006-06-20  Dave Brolley  <brolley@redhat.com>

	* sid.scm (gen-attr-type): Removed.
	* cpu/sh.cpu (SH2a-nofpu-MACH): Add sh5.
	(SH2a-MACH): Add sh5.
	(sh2a-nofpu-models): Add units for sh5.
	(sh2a-fpu-models): Likewise.

	2006-06-15  Dave Brolley  <brolley@redhat.com>

	* cpu/sh-sim.cpu: New file.
	* cpu/sh-sid.cpu: New file.
	* cpu/sh64-media.cpu (dshci): Add xtiming argument and splice it in.
	(All fields): Remap for (insn-lsb0? #f)
	(All insns): Add timing specs.
	* cpu/sh64-compact.cpu (dshcf,dshcop): Replace 'ignored' argument with
	'xattrs' and .splice it in.
	(32-BIT-INSN,SH4-GROUP,SH4A-GROUP): New insn attributes.
	(h-frc,h-drc): Add PROFILE attribute.
	(h-fpccr): Removed.
	(h-vbr): New hardware.
	(All fields): Remap for (insn-lsb0? #f)
	(f-imm20-hi,f-imm20-lo,f-imm20): New fields.
	(fr0,fmovm,fmovn,imm20,imm12x4,imm12x8,vbr): New operands.
	(fpscr): Use h-fpscr.
	(fsdm,fsdn): Use h-fsd.
	(dshci): Add xtiming argument and splice it in.
	(dr,xd): pmacros removed.
	(All insns): Add timing specs, *-MACH attribibutes,
	SH4{A}-GROUP attributes.
	(divu,mulr,ldc-vbr,ldc-sr,ldcl-vbr,movl12,movl13,stcl-vbr): New insns.
	* cpu/sh.cpu): Include sh-sid.cpu or sh-sim.cpu depending on whether
	we're being processed for sim or sid.
	(define-arch): Change insn-lsb0? for #f. Add machs sh2e, sh2a-fpu,
	sh2a-nofpu, sh4-nofpu, sh4a-nofpu, sh4a, sh4al.
	(define-isa compact): Add (isa-parallel-insns 2).
	(define-isa media): Add (isa-parallel-insns 2). Add
	(default-insn-word-bitsize 32). Change base-insn-bitsize to 32.
	(define-mach): Add sh2e, sh2a-fpu, sh2a-nofpu, sh4-nofpu, sh4a-nofpu,
	sh4a, sh4al
	(SH2-MACH, SH2e-MACH, SH2a-nofpu-MACH, SH2a-MACH, SH3-MACH) 
	(SH3e-MACH, SH4-nofpu-MACH, SH4-MACH, SH4a-nofpu-MACH, SH4a-MACH) 
	(SH4al-MACH, SH5-MACH): New pmacros.
	(common-units, common-fp-units, sh2a-nofpu-units, sh2a-fpu-units) 
	(sh4-nofpu-units, sh4-common-fp-units, sh5-media-units) 
	(sh5-media-fp-units, common-model, common-model-with-fp) 
	(sh3-model, sh3e-model): New pmacros.
	(define-model sh2): New model.
	(define-model sh2e): New model.
	(define-model sh3): New model.
	(define-model sh3e): New model.
	(define-model sh2a-nofpu): New model.
	(define-model sh2a-fpu): New model.
	(define-model sh4-nofpu): New model.
	(define-model sh4): New model.
	(define-model sh4a-nofpu): New model.
	(define-model sh4a): New model.
	(define-model sh4al): New model.
	(define-model sh5-media): New model.
	(define-model sh5): Add all units.
	(all-models, sh2e-models, sh2a-nofpu-models, sh2a-fpu-models) 
	(sh3-models, sh3e-models, sh4-nofpu-models, sh4-models) 
	(sh5-media-models, shad-models, fsqrt-models): New pmacros.
	(h-pc): Add PROFILE attribute.
	(h-fr): Likewise.
	(h-tr): Likewise.
	(h-gr,h-grc): Likewise.
	(h-cr): Set h-sr in setter.
	(h-frbit): Get/Set h-fpscr.
	(h-szbit,h-prbit): Likewise.
	(h-fp): Add PROFILE attribute. Now indexed by even indices 0-62.
	Add getter and setter.
	(h-fc): Add PROFILE attribute. Now indexed by quad indices 0-60.
	Adjust getter and setter.
	(h-fmtx): Add PROFILE attribute. Now indexed by 0, 16, 32 and 48.
	Adjust getter and setter.
	(h-dr): Add PROFILE attribute. Now indexed by even indices 0-62.
	(h-fsd,h-fmov): New hardware.

2006-07-24  Ralk Wildenhues  <Ralf.Wildenhues@gmx.de>

	* doc/app.texi, doc/internals.texi, doc/intro.texi,
	doc/notes.texi, doc/porting.texi, doc/running.texi,
	doc/sim.texi: Fix some typos.

2006-07-14  Dave Brolley  <brolley@redhat.com>

	* sid.scm (-op-gen-delayed-set-maybe-trace): If delay used, note the
	hardware or memory mode which was used.
	* sid-cpu.scm (hw-need-write-stack?): New function.
	(-gen-hw-stream-and-destream-fns): Compute stack-regs. Use it to
	identify hardware which uses write stacks.
	(useful-mode-names): Renamed to write-stack-memory-mode-names.
	Initialized to an empty list.
	(-gen-writestacks, -gen-reset-fn, -gen-unified-write-fn): Use
	hw-need-write-stack?.
	* hardware.scm (used-in-delay-rtl?): New member of <hardware-base>.
	(define-getters <hardware-base>): Define used-in-delay-rtl?.
	(used-in-delay-rtl?): New method of <hardware-base>.
	(hw-used-in-delay-rtl?): New function.

2006-06-20  Dave Brolley  <brolley@redhat.com>

	* sid.scm (gen-attr-type): Removed.

2006-05-10  Dave Brolley  <brolley@redhat.com>

	* read.scm (cmd-if): Provide the correct argument to reader-error. Add
	support for (if (application-is? <appname>) (...) (...)).
	(-cgen): Add trailing "/" to arch-path.
	* utils.scm (dirname): Removed. dirname is a primitive function.

2006-05-09  Dave Brolley  <brolley@redhat.com>

	* utils-sim.scm (-gen-decode-insn-entry): Generated code should shift
	'entire_insn' not 'base_insn'.
	* sid-model.scm (-gen-model-class-decls): Handle the case where insn-timing
	is null.
	* sim.scm (-gen-arch-model-decls): Likewise.
	* sid-cpu.scm (-gen-scache-semantic-fn): Generate code to set
	abuf->written if profiling.
	(-gen-hw-stream-and-destream-fns): Use symbol->string instead of
	object->string om the mode.
	(-hw-gen-write-stack-decl): Likewise.
	* read.scm (include): Use arch-path as file location.
	(arch-path): Define it with a default setting.
	(-cgen): Update arch-path when "-a" option is specified.
	* utils.scm (dirname): New function.

2006-05-05  Steve Ellcey  <sje@cup.hp.com>

	* configure.in: Remove AC_ARG_PROGRAM.
	* configure: Regenerate with autoconf 2.59.

2006-03-14  Hans-Peter Nilsson  <hp@axis.com>

	* dev.scm (cload) <SID-SIMULATOR>: New case, duplicated from
	SIMULATOR.

2006-03-03 Shrirang Khisti <shrirangk@kpitcummins.com)

	* cpu/xc16x.opc (parse_hash): Return NULL if the input was parsed
	or an error message otherwise.
	(parse_dot, parse_pof, parse_pag, parse_sof, parse_seg): Likewise.
	Fix up comments to correctly describe the functions.

2006-02-17  Shrirang Khisti  <shrirangk@kpitcummins.com>
            Anil Paranjape   <anilp1@kpitcummins.com>
            Shilin Shakti    <shilins@kpitcummins.com>

	* cpu/xc16x.cpu: New file containing complete CGEN specific XC16X
	CPU description.
	* cpu/xc16x.opc: New file containing supporting XC16C routines.

2006-02-10  Nick Clifton  <nickc@redhat.com>

	* cpu/iq2000.opc (parse_hi16): Truncate shifted value to 16 bits.

2005-12-28  Nathan Sidwell  <nathan@codesourcery.com>

	* sid-cpu.scm (-gen-hw-stream-and-destream-fns): Stringize mode
	for concatenation.
	(-hw-gen-write-stack-decl): Likewise.

2005-12-05  Hans-Peter Nilsson  <hp@axis.com>

	* utils-sim.scm (-gen-decode-insn-entry): Correct last change for
	non-(adata-integral-insn? CURRENT-ARCH) case.

2005-10-28  Dave Brolley  <brolley@redhat.com>

	Contribute the following changes:
	2005-09-19  Dave Brolley  <brolley@redhat.com>

	* attr.scm (gen-value-for-defn-raw): New methods.
	(gen-value-for-defn): Don't test for 'SID-SIMULATOR. Call
	gen-value-for-defn-raw.
	* sid.scm (gen-obj-attr-sid-defn): Call gen-value-for-defn-raw.

	2002-12-13  Dave Brolley  <brolley@redhat.com>

	* utils-cgen.scm (gen-attr-type): Moved from sid.scm.
	(-gen-attr-accessors): New function.
	(gen-obj-attr-defn): Update terminating initializer.
	(gen-obj-attr-end-defn): New function.
	* sid.scm (gen-attr-type): Moved to utils-cgen.scm.
	* sid-cpu.scm (cgen-desc.h): Generate code to include
	"opcode/cgen-bitset.h"
	* intrinsics.scm (kept-insn-isas): Correct the extraction of the isa
	name.
	* desc.scm ('gen-defn): Update terminating initializer.
	* desc-cpu.scm (gen-ifld-decls): Call -gen-attr-accessors. Update
	terminatinig initializer.
	(gen-hw-decls): Ditto.
	(gen-operand-decls): Ditto.
	(gen-insn-decls): Ditto.
	(-gen-hash-defines): Generate code to include "opcde/cgen-bitset.h"
	(gen-insn-table): Update terminating initializer.
	(-gen-cpu-open): Update generation of @arch@_cgen_rebuild_tables,
	@arch@_cgen_cpu_open, @arch@_cgen_cpu_close.
	* attr.scm (charmask-bytes): New function.
	(bitset-attr->charmask): New function.
	(<bitset-attribute>): Handle isa-attributes specially. Also handle
	differences for SID-SIMULATOR.
	(<integer-attribute>): Handle differences for SID-SIMULATOR.
	(<enum-attribute>): Ditto.

2005-10-26  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* cpu/m32r.opc (parse_hi16): Do not assume a 32-bit host word size.

2005-10-24  DJ Delorie  <dj@redhat.com>

	* operand.scm (-anyof-merge-syntax): Print a more useful error
	message.

2005-10-19  Nick Clifton  <nickc@redhat.com>

	* cpu/m32r.opc (parse_slo16): Fix bad application of previous
	patch.

2005-10-18  Andreas Schwab  <schwab@suse.de>

	* cpu/m32r.opc (parse_slo16): Better version of previous patch.

2005-10-14  Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>

	* cpu/m32r.opc (parse_slo16): Do not assume a 32-bit host word
	size.

2005-08-02  Dave Brolley  <brolley@redhat.com>

	* rtl-c.scm (s-unop): Don't dereference
	CGEN_CPU_FPU (current_cpu)->ops->xxxxx in the generated code.
	(s-binop, s-convop, s-cmpop): Likewise.

2005-07-29  Dave Brolley  <brolley@redhat.com>

	* sid-cpu.scm (-gen-scache-semantic-fn): Generate a declation of 'written'
	if with-profile or with-parallel-write.
	(cgen-semantics.cxx): Make the @prefix@ namespace available if with-parallel.
	* operand.scm (op:new-mode): Convert (obj:name op) to a string for
	string-append.

2005-07-15  Alan Modra  <amodra@bigpond.net.au>

	* cpu/fr30.opc (print_register_list): Correct format strings.
	* cpu/ip2k.opc: Likewise.

2005-07-05  Nick Clifton  <nickc@redhat.com>

	* cpu/iq2000.opc (parse_lo16, parse_mlo16): Make value parameter
	unsigned in order to avoid compile time warnings about sign
	conflicts.

2005-07-01  Nick Clifton  <nickc@redhat.com>

	* desc-cpu.scm: Update to ISO C90 function declaration style.
	* opc-asmdis.scm: Likewise.
	* opc-ibld.scm: Likewise.
	* opc-itab.scm: Likewise.
	* cpu/fr30.opc: Likewise.
	* cpu/i960.opc: Likewise.
	* cpu/ip2k.opc: Likewise.
	* cpu/iq2000.opc: Likewise.
	* cpu/m32r.opc: Likewise.
	* cpu/openrisc.opc: Likewise.
	* cpu/sh.opc: Likewise.
	* cpu/sparc.opc: Likewise.
	* cpu/xstormy16.opc: Likewise.

2005-06-15  Dave Brolley  <brolley@redhat.com>

	* sid-cpu.scm (-gen-hw-stream-and-destream-fns): New function.
	(cgen-cpu.h): Call it.

	Contributed on behalf of Graydon Hoare
	2001-06-05  graydon hoare  <graydon@redhat.com>

	* utils.scm (foldl): Define.
	(foldr): Define.
	(filter): Define.
	(union): Define.
	(intersection): Simplify.
	* sid.scm : Set APPLICATION to SID-SIMULATOR.
	(-op-gen-delayed-set-maybe-trace): Define.
	(<operand> 'gen-set-{quiet,trace}): Delegate to
	op-gen-delayed-set-quiet etc. Note: this is still a little tangled
	up and needs cleaning.
	(-with-parallel?): Hardwire with-parallel to #t.
	(<operand> 'cxmake-get): Replace with lookahead-aware code
	* sid-decode.scm: Remove per-insn writeback fns.
	(-gen-idesc-decls): Redefine sem_fn type.
	* sid-cpu.scm (gen-write-stack-structure): Replace parexec stuff
	with write stack stuff.
	(cgen-write.cxx): Replace per-insn writebacks with single write
	stack writeback. Add write stack reset function.
	(-gen-scache-semantic-fn insn): Replace parexec stuff with write
	stack stuff.
	* rtl-c.scm (xop): Clone operand into delayed operand if #:delayed
	estate attribute set.
	(delay): Set #:delayed attribute to calculated delay, update
	maximum delay of cpu, check (delay ...) usage.
	* operand.scm (<operand>): Add delayed slot to <operand>.
	* mach.scm (<cpu>): Add max-delay slot to <cpu>.
	* dev.scm (load-sid): Set APPLICATION to SID-SIMULATOR.
	* doc/rtl.texi (Expressions): Add section on (delay ...).

2005-06-13  Jim Blandy  <jimb@redhat.com>

	* pmacros.scm (-pmacro-upcase, -pmacro-downcase): Handle symbols
	as well as strings.

2005-06-07  Zack Weinberg  <zack@codesourcery.com>

	* doc/porting.texi: Change all mention of md_apply_fix3 and
	gas_cgen_md_apply_fix3 to md_apply_fix and gas_cgen_md_apply_fix
	respectively.

2005-05-18  Dave Brolley  <brolley@redhat.com>

	* utils-sim.scm (-gen-decode-default-entry): New function.
	(-gen-decode-insn-entry): Now takes 'invalid-insn' argument. Generate
	code to check that all opcodes bits match.
	(-gen-decoder-switch): Use -gen-decode-default-entry.

2005-05-16  Jim Blandy  <jimb@redhat.com>

	* sid.scm (gen-ifetch): Require BITSIZE to be exactly the size
	fetched by one of our GETIMEM* methods.
	* utils-gen.scm (-extract-chunk-specs): Always fetch full
	base-insn-sized chunks.

2005-05-10  Nick Clifton  <nickc@redhat.com>

	* Update the address and phone number of the FSF organization in
	the GPL notices in the following files:
	COPYING.CGEN, utils.scm, cpu/iq2000m.cpu, cpu/openrisc.cpu,
	cpu/powerpc.cpu, slib/random.scm

2005-05-06  Jim Blandy  <jimb@redhat.com>

	* pprint.scm, cos-pprint.scm: Add documentation.

	* pprint.scm (pprint): Don't wipe out elide-table after each call.

	* pprint.scm, cos-pprint.scm: New files.

2005-04-04  Nick Clifton  <nickc@redhat.com>

	* opcodes.scm (-gen-parse-address): Initialise value to zero to
	avoid a compile time warning.

2005-03-18  Nick Clifton  <nickc@redhat.com>

	* cpu/ip2k.opc (parse_lit8): Change wording of error message to
	"percent-operand" from "%operand" as the latter confuses xgettext
	into thinking that it is a C printf formating directive, which
	prevents proper translation.

2005-02-23  Nick Clifton  <nickc@redhat.com>

	* opcodes.scm (gen-parse-number): Add a cast to the desired
	pointer signed'ness in order to prevent compile time warnings.
	* cpu/ip2k.opc: Fixed compile time warnings about differing
	signed'ness of pointers passed to functions.
	* cpu/iq2000.opc: Likewise.
	* cpu/m32r.opc: Likewise.
	* cpu/openrisc.opc: Likewise.
	* cpu/xstormy16.opc: Likewise.

2005-02-22  Alan Modra  <amodra@bigpond.net.au>

	* desc-cpu.scm (gen-ifld-decls): Move cgen_ifld_table from here..
	(cgen-desc.h): ..to here, after opcode/cgen.h include.

2005-02-16  Dave Brolley  <brolley@redhat.com>

	* utils.scm: Update copyright years.
	* utils-gen.scm (gen-ifld-extract): Pass base-length to -gen-ifld-extract-base.
	* sid.scm (gen-ifetch): Handle the case where bitsize == 24.
	* operand.scm (-derived-operand-parse): Move logit message from level 1
	to level 2.

2005-02-15  Nick Clifton  <nickc@redhat.com>

	* opc-itab.scm (-gen-ifmt-table-1): Add an ATTRIBUTE_UNUSED to
	prevent compile time warning messages.
	* opc-opinst.scm (-gen-operand-instance-table): Likewise.
	* utils-gen.scm (attr-int-gen-defn): Likewise.
	(attr-gen-defn): Likewise.
	* cpu/ip2k.opc (parse_addr16_p): Remove unused function.
	(print_dollarhex16): Remove unused function.

2005-02-15  Jim Blandy  <jimb@redhat.com>

	* guile.scm (cgen-call-with-debugging): Doc fix.

	Make backtraces work more reliably.
	* guile.scm: Set up debugging parameters, and enable debugging and
	source positions while loading.
	(cgen-call-with-debugging, cgen-debugging-stack-start): New
	functions.
	* read.scm: Don't set debugging parameters here.
	(catch-with-backtrace): Function deleted.
	(-cgen): Simply note the presence or absence of the -b option.
	Pass the flag to cgen-call-with-debugging, so debugging is turned
	off here if the user didn't request it, for faster computation.
	(cgen): Call cgen-debugging-stack-start here, instead of
	catch-with-backtrace.

	* Makefile.am (GUILE): Explicitly load guile.scm here, and leave a
	trailing -s.
	(desc, html, opcodes, sim-arch, sim-cpu, gas-test, sim-test):
	Don't write out the trailing -s here.
	* Makefile.in: Regenerated.
	* cgen-doc.scm, cgen-gas.scm, cgen-stest.scm): Don't load
	fixup.scm here; let the caller decide which Scheme's customization
	file to preload.
	* dev.scm: Load guile.scm, not fixup.scm.
	* fixup.scm: Deleted; contents have all moved to guile.scm.
	* README: Doc fix.

	* guile.scm (debug-write): New function.

2005-02-14  Jim Blandy  <jimb@redhat.com>

	* pmacros.scm (pmacros-init!): For .eval macros, use eval1 as the
	transformer procedure, not eval.  Transformer procedures take one
	argument.

2005-02-11  Nick Clifton  <nickc@redhat.com>

	* cpu/iq2000.opc (parse_jtargq10): Change type of valuep argument
	to 'bfd_vma *' in order avoid compile time warning message.

2005-02-09  Jim Blandy  <jimb@redhat.com>

	* cgen-sim.scm (load-files): Don't load fixup.scm.  (See
	corresponding change in the sim/common directory.)

2005-02-07  Jim Blandy  <jimb@redhat.com>

	* cgen-opc.scm: Don't load fixup.scm here.  (See corresponding
	changes in the opcodes directory.)

	* guile.scm: New file, containing Guile-specific definitions and
	adaptations.  This is loaded by the app-specific shell scripts.
	Initially identical to fixup.scm.
	* cgen-sid.scm: Don't load fixup.scm here.

	* cos.scm: Profile elm-xset! when requested, not elm-set!; the
	latter is a macro.

2005-01-27  Jim Blandy  <jimb@redhat.com>

	* utils.scm (string/symbol->append): Renamed from 'concat'.
	* opcodes.scm (gen-switch): Use new name.
	* insn.scm (-sub-insn-make!): Same.
	* rtl.scm (rtx-dump): Same.
	* semantics.scm (semantic-compile): Same.

2005-01-20  Jim Blandy  <jimb@redhat.com>

	* opcodes.scm (gen-switch): Use concat instead of string-map.

	* utils.scm (concat): New function.
	* insn.scm (-sub-insn-make!): Use concat instead of string-map.
	* rtl.scm (rtx-dump): Same.
	* semantics.scm (semantic-compile): Same.

2004-12-16  Jim Blandy  <jimb@redhat.com>

	* utils-cgen.scm (parse-name): Don't assume that string-map can be
	applied to symbols.  Process everything as strings, and then
	convert to a symbol at the end.

	* read.scm (debug-repl): Temporarily redirect input and output to
	/dev/tty while we debug, so we don't interfere with whatever CGEN
	is reading or writing.
	* utils.scm (setter-getter-fluid-let, with-input-and-output-to):
	New functions.

2004-11-15  Michael K. Lechner <mike.lechner@gmail.com>

	* cpu/iq2000.cpu: Added quotes around macro arguments so that they
	will work with newer versions of guile.

2004-10-27  Nick Clifton  <nickc@redhat.com>

	* cpu/iq2000m.cpu: Import latest version from cpu/ directory.
	* cpu/iq2000.cpu: Likewise.

2004-07-21  DJ Delorie  <dj@redhat.com>

	* cpu/xstormy16.cpu (movhmemgr): Use hmem8, not lmem8.

2003-03-14  Frank Ch. Eigler  <fche@redhat.com>

	* cpu/iq2000.opc (parse_jtargq10): Add ATTRIBUTE_UNUSED on unused args.
	(parse_jtargq10, iq2000_cgen_isa_register, parse_mlo16): Declare.

2004-03-30  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* cpu/m32r.opc (parse_hi16): Fixed shigh(0xffff8000) bug.

2004-03-22  Dave Brolley  <brolley@redhat.com>

	* utils.scm (copyright-fsf): Update copyright years.
	(copyright-red-hat): Ditto.
	* sid.scm (-op-gen-set-trace): Generate trace code before semantic
	code.
	(-op-gen-set-trace-parallel): Ditto.

2004-02-10  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.dot.com>

	* cpu/m32r.opc (my_print_insn): Fixed incorrect output when
	disassembling codes for 0x*2 addresses.

2004-01-29  Dave Brolley  <brolley@redhat.com>

	* decode.scm (-opcode-slots): For short insns, generate 'opcode' with
	zeroes in the extra bit positions and generate 'opcode-mask' with ones
	in the extra bit positions.

2003-12-15  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* cpu/m32r.cpu: Add PIPE_O attribute to "pop" instruction.

2003-12-04  Alan Modra  <amodra@bigpond.net.au>

	* cpu/openrisc.opc (openrisc_sign_extend_16bit): Don't rely on
	"short" being 16 bit.
	(parse_hi16): Likewise.  Fix type-punned pointer warnings too, and
	internationalize error message.
	(parse_lo16): Likewise.  Remove useless code.

2003-12-03  Kazuhiro Inaoka  <inaoka.kazuhiro@renesas.com>

	* cpu/m32r.cpu : Add new model m32r2.
	Add new instructions.
	Replace occurrances of 'Mitsubishi' with 'Renesas'.
	Changed PIPE attr of push from O to OS.
	Care for Little-endian of M32R.
	* cpu/m32r.opc (CGEN_DIS_HASH, my_print_insn):
	Care for Little-endian of M32R.
	(parse_slo16): signed extension for value.

2003-10-26  Dave Brolley  <brolley@redhat.com>

	* sid-decode.scm (-gen-record-profile-args): Test trace_counter_p
	and final_insn_count_p. Don't test WITH_PROFILE_MODEL_P.
	(-gen-extract-fn): Call -gen-record-profile-args.

2003-10-21  Dave Brolley  <brolley@redhat.com>

	* sid-model.scm (-gen-model-class-decls): Generate MAX_UNITS as
	a static const int.
	* decode.scm (-opcode-slots): Correct typo in logit call.

2003-10-09  Jim Blandy  <jimb@redhat.com>

	* desc-cpu.scm (gen-hw-table-decls): Emit an 'extern' declaration
	for @arch@_cgen_hw_table.  GDB needs to be able to find this.

	* mach.scm (def-isa-attr!): hardware can have ISA attributes, too.

2003-10-06  Dave Brolley  <brolley@redhat.com>

	* gen-all-doc: Add fr550.

2003-09-11  Doug Evans  <dje@sebabeach.org>

	* Makefile.am (ARCHFILE): New var.
	(desc): Pass $(ARCHFILE) for -a parm, not $(ARCH).
	(html,opcodes,sim-arch,sim-cpu,gas-test,sim-test): Ditto.
	* Makefile.in: Regenerate.

2003-09-08  Dave Brolley  <brolley@redhat.com>

	On behalf of Doug Evans <dje@sebabeach.org>
	Pass in paths to input files, instead of assuming they live in
	$srcdir/cpu.  Plus misc. option processing cleanup.
	* cgen-doc.scm (doc-arguments): Make options strings not symbols.
	Add pre-process pass to all options.
	* cgen-gas.scm (gas-arguments): Ditto.
	* cgen-sid.scm (sim-arguments): Ditto.
	* cgen-sim.scm (sim-arguments): Ditto.
	* cgen-stest.scm (stest-arguments): Ditto.
	* cgen-opc.scm (opc-arguments): Ditto.  New argument -OPC.
	(-opc-file-path): New global.
	(opc-file-path): New fn.
	* opcodes.scm (read-cpu.opc): Replace srcdir,cpu args with opc-file.
	All callers updated.
	(gen-extra-cpu.h,gen-extra-cpu.c,gen-extra-opc.h,gen-extra-opc.c,
	gen-extra-asm.c,gen-extra-dis.c,gen-extra-ibld.h,gen-extra-ibld.c):
	Replace srcdir arg with opc-file.  All callers updated.
	* read.scm (-opt-spec-update): Delete.
	(opt-get-first-pass,opt-get-second-pass): New fns.
	(-cgen): Process application-specific arguments in two passes.

2003-08-29  Dave Brolley  <brolley@redhat.com>

	* cpu/frv.cpu: Removed.
	* cpu/frv.opc: Removed.

2003-08-21  Nick Clifton  <nickc@redhat.com>

	* cpu/frv.cpu (mbtoh): Replace input parameter to
	u-media-dual-expand and u-media-dual-btoh with output parameter.
	(cmbtoh): Add profiling hack.

2003-08-19  Michael Snyder  <msnyder@redhat.com>

	* cpu/frv.cpu: Fix typo, Frintkeven -> FRintkeven

2003-08-07  Michael Meissner  <gnu@the-meissners.org>

	* opc-opinst.scm (-gen-operand-instance-table): Initialize all of
	the elements for the END record of CGEN_OPINST, silencing warnings.

2003-07-15  Doug Evans  <dje@sebabeach.org>

	Add guile 1.6.4 support.
	- empty list must be quoted
	- string functions have stricter type checking
	- eval now takes a second argument
	- symbol-bound? is deprecated
	* attr.scm (-attr-parse): Use stringsym-append to build errtxt.
	(bitset-attr->list): Ensure arg to string-cut is a string.
	(attr-parse): Ensure args to string-ref and string-drop1 are strings.
	(<enum-attribute>,gen-value-for-defn): Fetch string name of self.
	* cos.scm (-class-list): Must quote empty list.
	(-class-parent-classes,-class-compute-class-desc): Ditto.
	(class-make,make,object-reset!): Ditto.
	(method-make-make!): Call eval1 instead of eval.
	(method-make-forward!,method-make-virtual-forward!): Ditto.
	* decode.scm (subdtable-add): Use stringsym-append instead of
	string-append.
	(-gen-exprtable-name): Fetch string name of exprtable-entry-insn.
	(-build-decode-table-entry): Fetch string name of insn.
	* desc-cpu.scm (-gen-isa-table-defns): Fetch string name of isa.
	(-gen-mach-table-defns): Ditto for mach.
	(gen-ifld-defns): Ditto for ifld.
	(gen-hw-table-defns): Ditto for hw.
	(gen-operand-table): Ditto for op.
	(gen-insn-table-entry): Ditto for insn.
	* desc.scm (gen-attr-table-defn): Ditto for attr.
	(<keyword>,gen-defn): Don't pass symbols to string-append.
	* enum.scm (parse-enum-vals): Use symbolstr-append instead of
	symbol-append.
	(enum-vals-upcase): Use symbol-upcase to build result.
	(-enum-parse): Use stringsym-append to build errtxt.
	* fixup.scm (*guile-major-version*,*guile-minor-version*): New globals.
	(eval1): New function.
	(symbol-bound?): Provide own version if >= guile 1.6.
	* hardware.scm (define-keyword): Use string-append instead of
	symbol-append.
	* html.scm (gen-html-header,gen-table-of-contents,gen-arch-intro,
	cgen.html,cgen-insn.html): Convert current-arch-name to a string
	before using.
	(gen-list-entry): Handle either symbol or string `name' arg.
	(gen-obj-doc-header): Fetch string name of `o' arg.
	(define-cpu-intro): Ditto for cpu.
	(gen-mach-intro): Ditto for mach.
	(gen-model-intro): Ditto for model.
	(gen-isa-intro): Ditto for isa.
	(gen-machine-doc-1): Ditto for isa.
	(gen-reg-doc-1): Convert mach to string first.
	(gen-insn-doc-1): Ditto.  Convert model/unit names to strings first.
	(gen-insn-doc-list): Fetch string name of mach.  Convert insn name
	to string first.
	(gen-insn-categories): Fetch string name of mach.  Convert
	enum-val-name to string first.
	(gen-insn-docs): Fetch string name of mach.
	* ifield.scm (ifld-ilk): Result is a string.
	* iformat.scm (-ifmt-search-key): Convert attr value to string first.
	Fetch string name of ifld.
	(-sfmt-search-key): Similarily for ifld and op.
	* insn.scm (syntax-make): Fetch string name of syntax element.
	* mach.scm (-cpu-parse): Use stringsym-append to build errtxt.
	* minsn.scm (minsn-make-alias): Fetch string name of minsn.
	* mode.scm (mode:c-type): Result is a string.
	(mode:enum): Fetch string name of mode.
	(-mode-parse): Use stringsym-append to build errtxt.
	* model.scm (model:enum): Fetch string name of model.
	(-model-parse): Use stringsym-append to build errtxt.
	(parse-insn-timing): Must quote empty list.
	* opc-itab.scm (-gen-minsn-table-entry): Fetch string name of minsn.
	(-gen-minsn-opcode-entry): Ditto.
	* opcodes.scm (<operand>,gen-function-name): `what' arg is a symbol,
	convert to string.
	(read-cpu.opc): Convert current-arch-name to a string before using.
	* operand.scm (<operand>,gen-pretty-name): Ensure `name' is a string.
	(<derived-operand>): Must quote empty list.
	(op-sort): Simplify, call alpha-sort-obj-list to do sort.
	* pgmr-tools.scm (pgmr-pretty-print-insn-value): Fetch string name
	of ifld.
	* pmacros.scm (-pmacro-build-lambda): Use eval1 instead of eval.
	(-pmacro-sym): Must convert symbols to strings before passing to
	string-append.
	(-pmacro-str): Ditto.
	(pmacros-init!): Use eval1 instead of eval.
	* read.scm (keep-mach-atlist?): Simplify, use bitset-attr->list.
	(keep-isa-atlist?): Ditto.
	(cmd-if): Use eval1 instead of eval.
	* rtl-c.scm (<c-expr>,get-name): Fetch string name of self.
	(-rtl-c-get): Fetch string name of src.
	(s-unop): Ditto for mode.
	(s-binop,s-binop-with-bit,s-shop,s-convop,s-cmpop): Ditto.
	(-gen-par-temp-defns,subword): Ditto.
	(join): Use stringsym-append instead of string-append.
	* rtl-traverse.scm (rtx-option?): Convert option to string first.
	(rtx-traverse-debug): Fetch string name of rtx-obj.
	* rtl.scm (def-rtx-node): Use eval1 instead of eval.
	(def-rtx-syntax-node,def-rtx-operand-node,def-rtx-macro-node): Ditto.
	(rtx-pretty-name): Result is a string.
	(-rtx-hw-name): Use symbolstr-append instead of symbol-append.
	* semantics.scm (semantic-compile): Simplify, use alpha-sort-obj-list.
	* sid-cpu.scm (cgen-write.cxx): Convert current-arch-name to a string
	before using.
	(-gen-sfrag-case): Fetch string name of user.
	* sid-model.scm (unit:enum): Fetch string name of unit.
	* sid.scm (<hw-memory>,cxmake-get): Fetch string name of mode.
	(<hw-memory>,gen-set-quiet): Ditto.
	(gen-mode-defs): Ditto.
	(sim-finish!): Convert current-arch-name to a string before using.
	* sim-cpu.scm (-gen-scache-semantic-fn): Fetch string name of insn.
	(-gen-no-scache-semantic-fn): Ditto.
	(cgen-defs.h): Fetch string name of isa.
	(cgen-read.c): Convert current-arch-name to a string before using.
	(cgen-write.c): Ditto.
	* sim-model.scm (unit:enum): Fetch string name of unit.
	(gen-model-fn-decls): Use stringsym-append instead of string-append.
	(-gen-model-timing-table): Fetch string name of model.
	(-gen-mach-model-table): Ditto.
	(-gen-mach-defns): Fetch string name of mach.
	* sim.scm (gen-reg-access-defn): Fetch string name of hw.
	(<hw-memory>,cxmake-get): Fetch string name of mode.
	(<hw-memory>,gen-set-quiet): Ditto.
	(gen-mode-defs): Ditto.
	(sim-finish!): Must quote empty list.
	* utils-cgen.scm (<ident>): Must quote empty list.
	(obj:str-name): New fn.
	(parse-comment): Result is a string.
	(parse-symbol): Result is a symbol.
	(parse-string): Result is a string.
	(keyword-list?): Convert arg to string before calling string-ref.
	(keyword-list->arg-list): Ditto.
	(gen-attr-name): Convert attr-name to string first.
	(alpha-sort-obj-list): Use symbol<? instead of string<?.
	* utils-gen.scm (attr-gen-decl): Fetch string name of attr.
	(gen-define-ifmt-ifields): Ditto for fld.
	* utils.scm (gen-c-symbol): Ensure str is a string before calling
	map-over-string.
	(gen-file-name): Ditto.
	(symbol-downcase,symbol-upcase,symbol<?): New fns.
	(stringsym-append,symbolstr-append,->string,->symbol): New fns.
	(reduce): Call eval1 instead of eval.
	* cpu/m32r.cpu (addi): Don't use `#.'.

	* gen-all-sim: Fix some typos.

2003-07-08  Doug Evans  <dje@sebabeach.org>

	* gen-all-doc: Ensure run from cgen src dir.
	* gen-all-opcodes: Build in ./tmp-opcodes.  Don't delete dir when done.
	* gen-all-sid: Similarily, in ./tmp-sid.
	* gen-all-sim: Similarily, in ./tmp-sim.

2003-06-20  Doug Evans  <dje@sebabeach.org>

	* gen-all-sim: Add fr30,sh64 support.  Only generate m32r by default.

2003-06-19  Doug Evans  <dje@sebabeach.org>

	* mach.scm (-ifld-already-defined?): New proc.
	(current-ifld-add!): Use it.
	(-op-already-defined?): New proc.
	(current-op-add!): Use it.
	(-insn-already-defined?): New proc.
	(current-insn-add!): Use it.
	(-minsn-already-defined?): New proc.
	(current-minsn-add!): Use it.
	(obj-isa-list): New proc.
	(isa-supports?): Use it.

2003-06-10  Doug Evans  <dje@sebabeach.org>

	* insn.scm (insn-builtin!): RELAX renamed to RELAXABLE.
	* cpu/m32r.cpu (all insns): Ditto.

	* mach.scm (current-*-add!): Disallow redefinition.  Make result
	"unspecified".

	* gen-all-doc: Split arm and frv docs up a bit.

	* cpu/arm.cpu: Add IDOC attribute.
	* cpu/frv.cpu: Ditto.
	* cpu/i960.cpu: Ditto.
	* cpu/openrisc.cpu: Ditto.
	* cpu/xstormy16.cpu: Ditto.
	* cpu/m32r.cpu: Ditto.
	(all insns): Explicitly specify IDOC attribute.

	* Makefile.am (MACH,ISAS,INSN_FILE_NAME): New vars.
	(desc,opcodes,sim-arch,sim-cpu,gas-test,sim-test): Use MACH,ISAS.
	(html): Use MACH,ISAS,INSN_FILE_NAME.  Generate insn.html separately.
	* Makefile.in: Regenerate.
	* attr.scm (<integer-attribute>:parse-value-def): Implement.
	(-attr-read): Defer computing default value until we know the type.
	(attr-has-attr?): Delete, move contents to <attr-list>:has-attr?.
	(<attr-list>:attr-present?): New method.
	(atlist-attr-present?,obj-attr-present?): New fns.
	(obj-has-attr-value?,obj-has-attr-value-no-default?): New fns.
	(attr-builtin!): New insn attr IDOC.
	* cgen-doc.scm (doc-arguments): New args -I,-N.
	* enum.scm (parse-enum-vals): New arg errtxt, all callers updated.
	Support comment as fourth element of enum value.
	(enum-val-name,enum-val-value,enum-val-attrs,enum-val-comment): New fns.
	* html.scm (gen-html-header): New arg kind, all callers updated.
	(gen-table-of-contents): New arg insn-file, all callers updated.
	(gen-list-entry,gen-doc-header): New fn.
	(get-operands): Delete.
	(gen-iformat-table): Rewrite.
	(gen-insn-doc-1): Print constant-folded and trimmed semantics.
	(gen-insn-doc-list): New args name, comment, insns.  All callers updated.
	(get-insn-properties,guess-insn-idoc-attr!): New fn.
	(insn-sets-pc?,insn-refs-mem?,insn-uses-fpu?): New fns.
	(get-insns-for-category,gen-categories-insn-lists): New fns.
	(gen-insn-docs): Simplify each insn's semantics first.
	Print insn tables sorted by IDOC categories.
	(*insn-html-file-name*): New global.
	(cgen-insn.html): New fn.
	(cgen-all): Update.
	* insn.scm (<insn>): Create a setter for the `tmp' member.
	* semantics.scm (insn-build-known-values): Renamed from
	-build-known-values.  All callers updated.

	* rtl.scm: Move traveral/evaluation support to ...
	* rtl-traverse.scm: New file.
	* read.scm: Maybe-load rtl-traverse.scm.

	* rtl.scm (-rtx-valid-types): Add SETRTX.

	* rtx-funcs.scm (nop,parallel): Fix mode.

	* utils.scm (eqv-lookup-index): New fn.
	(assq-lookup-index): Renamed from lookup-index.  All callers updated.

	* dev.scm (load-doc): Set APPLICATION.

2003-06-10  Dave Brolley  <brolley@redhat.com>

	* sid-cpu.scm: Generate #include of config.h into @prefix@-sem.cxx.
	* sid-decode.scm: Generate #include of config.h into
	@prefix@-decode.cxx.
	* sid-model.scm: Generate #include of config.h into @prefix@-model.cxx.

2003-06-07  Doug Evans  <dje@sebabeach.org>

	* gen-all-sid: New file.
	* gen-all-opcodes: New file.

2003-06-05  Nick Clifton  <nickc@redhat.com>

	* cpu/frv.cpu (FRintieven): New operand.  An even-numbered only
	version of the FRinti operand.
	(FRintjeven): Likewise for FRintj.
	(FRintkeven): Likewise for FRintk.
	(mdcutssi, media-dual-word-rotate-r-r, mqsaths,
	media-quad-arith-sat-semantics, media-quad-arith-sat,
	conditional-media-quad-arith-sat, mdunpackh,
	media-quad-multiply-semantics, media-quad-multiply,
	conditional-media-quad-multiply, media-quad-complex-i,
	media-quad-multiply-acc-semantics, media-quad-multiply-acc,
	conditional-media-quad-multiply-acc, munpackh,
	media-quad-multiply-cross-acc-semantics, mdpackh,
	media-quad-multiply-cross-acc, mbtoh-semantics,
	media-quad-cross-multiply-cross-acc-semantics,
	media-quad-cross-multiply-cross-acc, mbtoh, mhtob-semantics,
	media-quad-cross-multiply-acc-semantics, cmbtoh,
	media-quad-cross-multiply-acc, media-quad-complex, mhtob,
	media-expand-halfword-to-double-semantics, mexpdhd, cmexpdhd,
	cmhtob): Use new operands.
	* cpu/frv.opc (CGEN_VERBOSE_ASSEMBLER_ERRORS): Define.
	(parse_even_register): New function.

2003-06-04  Doug Evans  <dje@sebabeach.org>

	Better handling of 64 bit and mixed 32/64 bit architectures.
	* hardware.scm (hw-update-word-modes!): New fn.
	* mach.scm (define-cpu)): Call mode-set-word-modes!,
	hw-update-word-modes!.
	(state-word-bitsize): Replace FIXME with requested check.
	(arch-analyze-insns!): Call mode-ensure-word-sizes-defined.
	* mode.scm (mode-find): Ignore INT,UINT.
	(-mode-word-sizes-kind): New global.
	(mode-set-word-modes!,mode-set-identical-word-bitsizes!,
	mode-set-biggest-word-bitsizes!,mode-ensure-word-sizes-defined): New fns.
	(mode-init!): Initialize -mode-word-sizes-kind.  Move initialization
	of mode-list to ...
	(mode-builtin!): ... here.  Initialize WI/UWI/AI/IAI to something
	unusable, correct values set later.
	(mode-finish!): Remove cruft.
	* html.scm (doc-init!): Call mode-set-biggest-word-bitsizes!.
	* opcodes.scm (opcodes-init!): Ditto.
	* rtx-funcs.scm (annul): Fix mode of pc.
	* cpu/ia64.cpu: Remove cruft that sets word modes.
	* cpu/xstormy16.cpu (define-cpu): Set word-bitsize.

2003-06-03  Nick Clifton  <nickc@redhat.com>

	* cpu/frv.cpu (media-dual-word-rotate-r-r): Use a signed 6-bit
	immediate value not unsigned.

2003-05-21  J"orn Rennecke <joern.rennecke@superh.com>

	* cpu/sh.cpu: Amend comments to refer to SuperH.
	* cpu/sh64-compact.cpu: Change comment to refer to SuperH.
	* cpu/sh64-media.cpu: Likewise.
	(Saturation): Update manual reference.

2003-05-15  Doug Evans  <dje@sebabeach.org>

	* Makefile.am (srcroot): New var.
	(html): New rule.
	* Makefile.in: Regenerate.
	* cgen-doc.scm: New file.
	* html.scm: New file.
	* gen-all-doc: New file.
	* dev.scm (cload): Handle DOC application.
	(load-doc): New fn.
	* machs.scm (machs-for-cpu): New fn.
	* model.scm (models-for-cpu): New fn.
	* utils.scm (gen-c-copyright): Renamed from gen-copyright.
	All uses updated.
	(iota): Rewrite to be identical to pmacro version.  All uses updated.
	* utils-cgen.scm (alpha-sort-obj-list): New fn.

	* utils-sim.scm (-gen-decoder-switch): Back out patch of 2003-01-09.
	(-gen-decode-bits): Instead put in better fix here.

	* cpu/i960.cpu (index): Rename to indx.  All uses updated.

2003-05-01  DJ Delorie  <dj@redhat.com>

	* cpu/xstormy16.cpu (alignfix-mem): Correct logic for unaligned
	word accesses.
	(set-alignfix-mem): Likewise.

2003-04-16  Dave Brolley  <brolley@redhat.com>

	* doc/rtl.texi (Iiming): Correct example to use 'model-name'.
	* utils.scm (copyright-fsf): Update generate copyright years.
	(copyright-cygnus): Ditto.
	* sid.scm (-op-gen-set-trace): Generate code to fill in bitmask of modified
	operands.
	(-gen-arch-model-decls): Don't generate unit enum declaration or MAX_UNITS
	here.
	(<operand>'gen-profile-code): New parameter 'when'.
	(<iunit>'gen-profile-code): Ditto.
	(<insn>'gen-profile-code): Ditto.
	(<unit>'gen-profile-code): Ditto. Only generate 'referenced' and
	'insn_reference' for the 'after' function.
	* model.scm (unit:enum): Moved to sim-model.scm.
	* sim-model.scm (unit:enum): Moved from model.scm.
	* sid-decode.scm (-gen-scache-decls): Generate the 'written' field.
	* cgen-sid.scm (sim-arguments): Document the generation of model.h.
	* sid-model.scm (unit:enum): New version for sid.
	(gen-model-class-name): New function.
	(gen-model-unit-fn-decl): New function.
	(gen-model-fn-decls): Call gen-model-unit-fn-decl.
	(gen-model-unit-fn-name): New parameter 'when'.
	(-gen-model-insn-fn-name): Ditto.
	(-gen-model-insn-qualified-fn-name): New function.
	(-gen-model-insn-fn-decl): New function.
	(-gen-model-insn-fn-decls): New function.
	(-gen-model-insn-fn): New parameter 'when'. Call
	-gen-model-insn-qualified-fn-name.
	(-gen-model-insn-fns): Generate the constructor for the model. Generate
	functions for modelling insn before and after execution.
	(-gen-model-class-decls): New function.
	(" (gen-model-class-name model) "): New function.
	(gen-model-classes): New function.
	(-gen-insn-timing): Generate functions for modelling insn before and after
	execution.
	(-gen-insn-unit-timing): Generate class-qualified names.
	(-gen-model-timing-table): Ditto.
	(cgen-model.cxx): Generate #include for @cpu@.h. Omit generation of code
	not needed (yet) by sid.
	(cgen-model.h): New function.

2003-04-15  Rohit Kumar Srivastava <rohits@kpitcummins.com>

	* cpu/sh.cpu: Replace occurrances of 'Hitachi' with 'Renesas'.
	* cpu/sh64-compact.cpu: Likewise.
	* cpu/sh64-media.cpu: Likewise.

2003-03-21  DJ Delorie  <dj@redhat.com>

	* cpu/xstormy16.cpu (basic-psw): New argument ws (wordsize),
	which indicates if the sign flag is set from bit 15 or 7.
	Adjust all callers.
	(set-psw): New argument ws, propogate it.
	(set-psw-nowrite): Likewise.
	(set-mem-psw): Likewise.
	(set-psw-carry): Likewise.  Use temporaries to prevent
	prematurely overwriting needed inputs.
	(set-psw-rrotate17): Fix logic.
	(shrgrgr): Preserve carry for zero-bit shifts.
	(shrgrimm): Likewise.
	(shlgrgr): Likewise.
	(shlgrimm): Likewise.
	(asrgrgr): Likewise.
	(asrgrimm): Likewise.
	(reset): New.

2003-03-12  Frank Ch. Eigler  <fche@redhat.com>

	* sid.scm: Set APPLICATION to SID-SIMULATOR.

2002-03-05  DJ Delorie  <dj@redhat.com>

	* cpu/xstormy16.cpu (set-psw-add): Use temporaries to prevent
	prematurely overwriting needed inputs.
	(set-psw-sub): Likewise.

Fri Feb 21 19:48:19 2003  J"orn Rennecke <joern.rennecke@superh.com>

	* cpu/sh64-media.cpu (make-mextr): Fix setting of count.

2003-02-18  DJ Delorie  <dj@redhat.com>

	* xstormy16.cpu (set-mem-alignfix-psw): Remove.
	(movlmemimm): Just mask the address.
	(movhmemimm): Likewise.
	(movlmemgr): Likewise.
	(movhmemgr): Likewise.
	(set-psw): Always set the psw last.
	(set-psw-carry): Likewise.
	(set-psw-add): Likewise.
	(set-psw-sub): Likewise.

	* xstormy16.cpu (set-psw-rrotate17): New.  Choose the correct set
	of 16 patterns from the set-psw-rotate17 function.
	(movgrigr, movgripostincgr, movgripredecgr, movgriigr,
	movgriipostincgr, movgriipredecgr): Set psw correctly.
	(movfgrigr, movfgripostincgr, movfgripredecgr, movfgriigr,
	movfgriipostincgr, movfgriipredecgr): Fix semantics.
	(rrcgrgr, rrcgrimm4): Use new set-psw-rrotate17 function.

2003-02-11  Dave Brolley  <brolley@redhat.com>

	* desc-cpu.scm (gen-ifld-defns): Add all ifields to the
	@arch@_cgen-ifld_table.
	(gen-maybe-multi-ifld): Use the ifield enumerators to index the
	@arch@_cgen-ifld_table.

2003-02-03  Frank Ch. Eigler  <fche@redhat.com>

	* sid-cpu.scm (-gen-sfrag-engine-fn): Generate more hygienic C++.

2003-01-09  Graydon Hoare  <graydon@redhat.com>

	* utils-sim.scm (-gen-decoder-switch): Fix edge condition for
	empty ISAs.

2003-01-07  Graydon Hoare  <graydon@redhat.com>

	* utils-gen.scm (attr-int-gen-defn): Define.

2002-12-21  Doug Evans  <dje@sebabeach.org>

	* ifield.scm (-ifield-parse): Rewrite <bitrange> computation.
	(-get-ifld-word-offset,-get-ifld-word-length): New fns.

	* dev.scm (cload): Update location of .cpu files.

2002-12-19  Doug Evans  <dje@sebabeach.org>

	* utils-sim.scm (gen-profile-sym): New fn.
	(<operand>,sbuf-profile-sym): New method.
	(<operand>,sbuf-profile-elm): Use it.
	* sim.scm (<operand>,gen-record-profile): Use sbuf-profile-sym instead
	of hardcoding symbol name.
	(<operand>,gen-profile-code): Ditto.
	(<unit>,gen-profile-code): Use gen-profile-sym instead of hardcoding
	symbol name.

	* mode.scm (mode-sem-mode): New fn.
	* operand.scm (op:new-mode): Update. mode-name.
	(op-natural-mode?) New fn.
	* rtl.scm (hw): Set hw-name,mode-name.

	Back out sim*.scm changes of 2001-04-02  Ben Elliston  <bje@redhat.com>
	Instead do:
	* sim-decode.scm (-gen-decode-insn-globals): Use @PREFIX@_INSN__MAX
	as size of IDESC-TABLE-VAR.
	(@prefix@_init_idesc_table): Ditto.
	* sim-model.scm (-gen-mach-defns): Ditto.
	* sim.scm (gen-cpu-insn-enum-decl): Rename last elm from max to -max.

	* utils-sim.scm (-gen-decode-insn-entry): Fix some spacing in output.

	* insn.scm (-parse-insn-format-symbol): Improve error message.
	(-parse-insn-format): Ditto.

	* gen-all-sim: New script.

2002-12-16  DJ Delorie  <dj@delorie.com>

	* cpu/xstormy16.opc (parse_immediate16): Add prototype.

2002-12-16  Andrew MacLeod  <amacleod@redhat.com>

	* cpu/xstormy16.cpu (imm16): Call handler immediate16.
	* cpu/xstormy16.opc (parse_small_immediate): Return on '@'.
	(parse_immediate16): Handle immediate16 values, which now include
	@hi(label) and @lo(label)

2002-12-03  Alan Modra  <amodra@bigpond.net.au>

	* desc-cpu.scm (gen-maybe-multi-ifld): Remove superfluous parens.
	Add braces and cast for union field.
	(gen-multi-ifield-nodes): Add braces and cast for union field.
	(cgen_operand_table): Similarly fix sentinel.
	(cgen_cpu_close): Constify "insns".  Formatting.
	(cgen-desc.c): Include xregex.h.
	* cpu/ip2k.opc (ip2k_cgen_insn_supported): Move to opc.c section.
	Prototype.
	<opc.c>: Include safe-ctype.h.
	(ip2k_asm_hash): Use ISSPACE and TOLOWER.
	(PARSE_FUNC_DECL): Declare.  Use to prototype parse_fr, parse_addr16,
	parse_addr16_p, parse_addr16_cjp, parse_lit8 and parse_bit3.
	(parse_fr): Constify "old_strp".  Correct type of "tempvalue".
	Don't test it for >= 0.  Use ISSPACE rather than isspace.  Formatting.
	(parse_addr16): Correct type of "value".  Formatting.
	(parse_addr16_p): Likewise.
	(parse_addr16_cjp): Likewise.
	(parse_lit8): Likewise.
	(parse_bit3): Formatting.
	(PRINT_FUNC_DECL): Define.  Use to prototype print_fr, print_dollarhex,
	print_dollarhex8, print_dollarhex16, print_dollarhex_addr16h,
	print_dollarhex_addr16l, print_dollarhex_p, print_dollarhex_cj and
	print_decimal.
	(print_fr): Add ATTRIBUTE_UNUSED on unused args.  Formatting.
	(print_dollarhex): Add ATTRIBUTE_UNUSED on unused args.
	(print_dollarhex8): Likewise.
	(print_dollarhex16): Likewise.
	(print_dollarhex_addr16h): Likewise.
	(print_dollarhex_addr16l): Likewise.
	(print_dollarhex_p): Likewise.
	(print_dollarhex_cj): Likewise.
	(print_decimal): Likewise.
	* cpu/xstormy16.opc (parse_mem8): Use ISALNUM rather than isalnum.

2002-11-30  Hans-Peter Nilsson  <hp@axis.com>

	* doc/rtl.texi (Model variants): Mention current limitations for
	unit inputs and outputs.
	(Hardware elements) <attribute PROFILE>: Be slightly more
	verbose.
	(Instructions) <timing>: input/output overrides have a direction
	operand.

2002-11-25  DJ Delorie  <dj@redhat.com>

	* xstormy16.cpu (sdiv, divlh, sdivlh): Fix sdivlh/divlh encodings.

2002-11-21  Jeff Johnston  <jjohnstn@redhat.com>

	* cpu/iq10.cpu: New file.
	* cpu/iq2000.cpu: Likewise.
	* cpu/iq2000.opc: Likewise.
	* cpu/iq2000m.cpu: Likewise.

2002-11-19  DJ Delorie  <dj@redhat.com>

	* cpu/xstormy16.cpu (sdiv, divlh, sdivlh): New.

2002-11-05  Frank Ch. Eigler  <fche@redhat.com>

	* dev.scm: Call getenv with a string, not a symbol.

2002-10-08  Doug Evans  <dje@transmeta.com>
	    Hans-Peter Nilsson  <hp@axis.com>

	* types.scm (bitrange-overlap?): Handle lsb0?.

2002-09-07  Frank Ch. Eigler  <fche@redhat.com>

	From Robert Cragie <rcc@jennic.com>:
	* cpu/arm7.cpu (ldm*-sw*, stm*-sw*): New instructions.

2002-07-17  Frank Ch. Eigler  <fche@redhat.com>
	    Ben Elliston  <bje@redhat.com>
	    John Healy  <jhealy@redhat.com>
	    Jeff Johnston  <jjohnstn@redhat.com>
	    Alan Lehotsky  <alehotsky@redhat.com>
	    Ubicom Inc. <SupportDesk@ubicom.com>

	* cpu/ip2k.cpu: New file.
	* cpu/ip2k.opc: Likewise.

2002-07-01  Hans-Peter Nilsson  <hp@axis.com>

	* utils-gen.scm (-gen-extract-word): Handle lsb0?.

2002-06-25  J"orn Rennecke <joern.rennecke@superh.com>

	* cpu/sh64-compact.cpu (movw5): Use Correct operand field for reg.
	* cpu/sh64-media.cpu (-ldhi-byte, -ldhi-word, -ldhi-long): New macros.
	(-ldlo-byte, -ldlo-word, -ldlo-long): Likewise.
	(-sthi-word, -sthi-long -stlo-byte, -stlo-word, -stlo-long): Likewise.
	(ldhil, ldhiq, ldlol, ldloq, stlol, stloq): Implement.
	(mshfhib, mshfhil, mshfhiw, mshflob, mshflol, mshflow): Fix indices.
	(-sthi-byte): If there is a single byte to store, store it at
	proper address.
	(sthil, sthiq): Fix big-endian behaviour.
	(mcnvslw, mcnvswb, mcnvswub, mmacfxwl, mmacnfx.wl): Fix indices.
	(mmulfxl, mmulfxw, mmulfxrpw, mmulhiwl, mmullowl): Likewise.
	(saturate): Use Dimode to check if saturation operation is required.
	(usaturate): Likewise.
	(mpermw): Fix mask.
	(-maddsl, -maddsub): Compute to-be-saturated value in wider mode.
	(-maddsw, mmacfxwl, mmacnfx.wl, -mshaldsl, -mshaldsw): Likewise.
	(-mshardl, -mshardw, -msubsl, -msubsub, -msubsw): Likewise.
	(msadubq): Fix subword index in second operand of first subtraction.

2002-06-20  Hans-Peter Nilsson  <hp@axis.com>

	* sim-cpu.scm (gen-semantic-code): Prepend with setup-semantics
	code.

2002-06-18  Dave Brolley  <brolley@redhat.com>

	* cpu/frv.cpu: New cpu description.
	* cpu/frv.opc: New cpu support code.

2002-05-21  Dave Brolley  <brolley@redhat.com>

	* decode.scm (-opcode-slots): Don't consider bits beyond the
	length of the insn.

2002-05-17  Johan Rydberg  <jrydberg@rtmk.org>

	* cpu/powerpc.cpu: New file.

2002-05-01  Graydon Hoare  <graydon@redhat.com>

	* desc-cpu.scm (@arch@_cgen_cpu_close): Fix memory leaks.

2002-03-20  Hans-Peter Nilsson  <hp@axis.com>

	* doc/pmacros.texi (Symbol concatenation): Mention that .sym
	results are expanded recursively.

2002-03-19  Hans-Peter Nilsson  <hp@axis.com>

	* pmacros.scm (-pmacro-expand,scan): If result is a symbol,
	call scan-symbol on it, to enable recursive macro-expansion.

2002-01-25  Frank Ch. Eigler  <fche@redhat.com>

	* sid-cpu.scm (-gen-hardware-types): Generate single hardware union
	for multiple-isa configurations.
	* sid-decode.scm (-gen-decode-fn): Tolerate empty insn list.

2002-02-04  Ben Elliston  <bje@redhat.com>

	* cpu/sh.cpu, cpu/sh.opc: New files.
	* cpu/sh64-comact.cpu, cpu/sh64-media.cpu: Likewise.

2002-01-29  Hans-Peter Nilsson  <hp@axis.com>

	* doc/rtl.texi: Fix typo: define-attr, not define-attribute.
	(Enumerated constants): Mention that an ifield must not specify a
	multi-ifield.
	(Instruction operands): Ditto for index.
	(Expressions) <parallel>: Remove misplaced mention of local
	variables.
	<if>: Mention that mode must be specified and non-VOID when the
	result is used.

2002-01-28  Hans-Peter Nilsson  <hp@axis.com>

	* doc/porting.texi: When referring to *.opc, mention they are in
	the cpu subdir.  Call top-level directory toplevel, not devo.
	Close string in define-normal-insn example.

	* doc/pmacros.texi: Fix .substr typo to .substring.
	Mention that .sym expansions are not further expanded.

2002-01-22  Graydon Hoare  <graydon@redhat.com>

	* desc-cpu.scm (ifld-number-cache): Add.
	(ifld-number): Add.
	(gen-maybe-multi-ifld-of-op): Add.
	(gen-maybe-multi-ifld): Add.
	(gen-multi-ifield-nodes): Add.
	(cgen-desc.c): Add call to gen-multi-ifield-nodes.

2002-01-10  matthew green  <mrg@redhat.com>

	* cpu/xstormy16.cpu (gr-Rbj-names): Rename this ...
	(gr-Rb-names): ... to this.
	(h-Rb): New hardware piece.
	(h-Rbj): Use gr-Rb-names.
	(Rb): Use h-Rb.
	(holdx): New instruction.

2002-01-07  Ben Elliston  <bje@redhat.com>

	* utils.scm (package-cygnus-simulators): Rename from this ..
	(package-red-hat-simulators): .. to this.
	* opcodes.scm (option-set!): Use package-red-hat-simulators.
	* sid-cpu.scm (cgen-desc.h): Likewise.
	(cgen-cpu.h): Likewise.
	(cgen-defs.h): Likewise.
	(cgen-write.cxx): Likewise.
	(cgen-semantics.cxx): Likewise.
	(cgen-sem-switch.cxx): Likewise.
	* sid-decode.scm (cgen-decode.h): Likewise.
	(cgen-decode.cxx): Likewise.
	* sid-model.scm (cgen-model.cxx): Likewise.
	* sid.scm (option-set!): Likewise.
	* sim.scm (option-set!): Likewise.

2002-01-07  Ben Elliston  <bje@redhat.com>

	* utils.scm (copyright-fsf): Add 2002.
	(copyright-cygnus): Rename to copyright-red-hat.
	(copyright-red-hat): Add 2002.
	(CURRENT-COPYRIGHT): Update comment.
	* opcodes.scm (option-set!): Update callers.
	* sid-model.scm (cgen-model.cxx): Likewise.
	* sid-cpu.scm: Likewise.
	* sid-decode.scm: Likewise.
	* sid.scm (option-set!): Handle "redhat" as an option for
	"copyright"; use copyright-red-hat.
	* sim.scm (option-set!): Likewise.

2002-01-03  Dave Brolley  <brolley@redhat.com>

	* decode.scm (-distinguishing-bit-population): Compute num-insns, the
	number of insns in the list.  Update the population count function to
	identify and prioritize 3 catgories of useful bits.
	(-population-top-few): Don't consider bits with a population count of
	zero.
	(-build-decode-table-entry): Don't call
	filter-harmlessly-ambiguous-insns.  Filter out non-specialized and
	identical insns at the next tree level.
	* insn.scm (filter-harmlessly-ambiguous-insns): Note in a comment that
	this function is no longer used.
	(filter-non-specialized-ambiguous-insns): New function.
	(filter-identical-ambiguous-insns): New function.
	(find-identical-insn): New function.
	(filter-harmlessly-ambiguous-insns): Removed.

2001-11-26  Geoffrey Keating  <geoffk@redhat.com>
	    matthew green  <mrg@redhat.com>
	    Frank Ch. Eigler  <fche@redhat.com>
	    Nick Clifton  <nickc@cambridge.redhat.com>

	* cpu/xstormy16.cpu: New file.
	* cpu/xstormy16.opc: New file.

2001-11-26  Frank Ch. Eigler  <fche@redhat.com>

	* doc/sim.texi, rtl.texi, porting.texi: Correct texinfo markup typos.

2001-11-14  Dave Brolley  <brolley@redhat.com>

	* utils-gen.scm (-gen-extract-word): Correct computation of the length
	of the field being extracted.

2001-10-29  Johan Rydberg  <johan@rydberg.com>

	* doc/rtl.texi (Expressions): Document the (error ..), (sqrt ..),
	(cos ...) and (sin ..) rtx.

2001-10-13  Nick Clifton  <nickc@cambridge.redhat.com>

	* desc-cpu.scm: Do not include ctype.h in generated desc
	files.  They will inherit safe-ctype.h instead.

2001-10-08  Nick Clifton  <nickc@cambridge.redhat.com>

	* desc-cpu.scm: Add missing function prototypes (for generated
	C files).  Fix compile time warning messages about unused
	parameters (for generated C files).
	* opc-asmdis.scm: The same.
	* opc-ibld.c: The same.
	* opc-itab.scm: The same.
	* cpu/fr30.opc: The same.
	* cpu/m32r.opc: The same.
	* cpu/openrisc.opc: The same.

2001-09-17  graydon hoare  <graydon@redhat.com>

	* insn.scm (syntax-break-out): Correct logic in handling escaped
	syntax characters.

2001-07-12  Jeff Johnston  <jjohnstn@redhat.com>

	* opc-itab.scm (@arch@_cgen_init_opcode_table): Unconditionally
	call @arch@_cgen_build_insn_regex now that regex support is in
	libiberty.

2001-07-12  Frank Ch. Eigler  <fche@redhat.com>

	* insn.scm (filter-harmlessly-ambiguous-insns): Fix msg typo.
	(mask-superset?): Look for strict supersets to allow rejection of
	duplicate insns.

2001-07-11  Frank Ch. Eigler  <fche@redhat.com>

	* sid-cpu.scm (-gen-mach-params): New proc to emit ...CHUNK_BITSIZE...
	(cgen-desc.h): Call it.
	* sid-decode.scm (-gen-decode-fn): Use base-insn-bitsize as
	decode-size.
	* utils-sim.scm (-gen-decode-insn-entry): For SID only, prepare
	entire_insn for extraction, if it's shorter than base-insn-bitsize.

2001-07-11  Frank Ch. Eigler  <fche@redhat.com>

	* desc-cpu.scm (-gen-mach-table-defns): Emit fourth field: the
	mach->cpu insn-chunk-bitsize.
	(-gen-cpu-open): In @arch@_cgen_rebuild_tables, process above new
	field toward CGEN_CPU_TABLE->insn_chunk_bitsize.
	* mach.scm (<cpu>): New field insn-chunk-bitsize.
	(-cpu-parse, -cpu-read): Parse/initialize it.
	* doc/rtl.texi (define-cpu): Document it.

2001-07-09  Geoffrey Keating  <geoffk@redhat.com>

	* ifield.scm (<ifield> 'field-start): Don't look at word-len.

2001-07-06  Ben Elliston  <bje@redhat.com>

	* opcodes.scm (read-cpu.opc): Read .opc files from subdir/cpu.

2001-07-05  Ben Elliston  <bje@redhat.com>

	* README: Update.

	* read.scm (include): Include files from srcdir/cpu.
	(-cgen): Likewise for loading .cpu files.
	* sid.scm (sim-finish!): Read .sim files from srcdir/cpu.
	* *.cpu: Move all cpu descriptions into cpu subdirectory.
	* *.opc: Likewise.
	* simplify.inc: Likewise.

2001-07-04  Ben Elliston  <bje@redhat.com>

	* read.scm (include): Log "Including file" message at level 1,
	rather than outputting it with (display).
	(cpu-load): Log "Loading cpu description" and "Processing cpu
	description" messages at levels 1 and 2, respectively, rather than
	using (display).

2001-06-14  Geoffrey Keating  <geoffk@redhat.com>

	* desc.scm (<keyword> 'gen-defn): Add extra zero into
	CGEN_KEYWORD_ENTRY initializers.

	* gas-test.scm (gen-gas-test): Create 8 testcases, not just 5.
	(<operand> 'test-data): Involve both the index and the hardware
	in testcase generation.
	(<hw-indx> 'test-data): Generate test data from the underlying
	object.
	(<ifield> 'test-data): Generate test data by computing bit
	patterns for the field, then decoding them.
	(<hw-address> 'test-data): Allow for new calling convention.
	(<hw-iaddress> 'test-data): Likewise.
	(<keyword> 'test-data): Convert index values into keywords.
	(<hw-asm> 'test-data): Convert index values into integer strings.

	* gas-test.scm (cgen-build.sh): Escape '.' as well.

2001-06-01  Frank Ch. Eigler  <fche@redhat.com>

	* rtl.scm (hw): Encode hw access mode into <operand> name, since this
	is required for multi-mode hw types (memory).

2001-05-11  Ben Elliston  <bje@redhat.com>

	* gas-test.scm (cgen-build.sh, gentest): Escape $ with a backslash
	when generating allinsn.d from objdump output. Without it, the
	testsuite will treat $ as the regular expression for end of line.

2001-05-09  Ben Elliston  <bje@redhat.com>

	* doc/porting.texi (Doing a GAS port): Replace `cgen_opcode_open'
	with `cgen_cpu_open'; documentation had become out of date.
	* doc/rtl.texi (Instruction operands): Likewise.

2001-05-07  Frank Ch. Eigler  <fche@redhat.com>

	* iformat.scm (compute-insn-base-mask-length): Rewrite to tolerate
	various-base-length instruction sets.

2001-04-02  Ben Elliston  <bje@redhat.com>

	* sid-cpu.scm (-last-insn): New function.
	(-gen-sem-switch-engine): Loop through idesc while less than or
	equal to the last instruction enum, not less than the MAX enum.
	(-gen-sfrag-engine-fn): Clean up frag_label_table initialisation.
	* sid-decode.scm (-gen-decode-insn-globals): Define the idesc
	table's size to be the last instruction enum plus one, not
	@PREFIX@_INSN_MAX.
	* sid.scm (gen-cpu-insn-enum-decl): Do not append a dummy `max'
	instruction onto the instruction list.

	* sim-decode.scm (@prefix@_init_idesc_table): Compute tabsize
	using the size of the table and its elements.
	(-gen-decode-insn-globals): Define the idesc table's size to be
	the last instruction enum plus one, not @PREFIX@_INSN_MAX.
	* sim-model.scm (-gen-mach-defns): Define CPU_MAX_INSNS as the
	last instruction enum plus one, not @CPU@_INSN_MAX.

2001-03-28  Ben Elliston  <bje@redhat.com>

	* doc/version.texi (UPDATED, EDITION): Update.
	* doc/stamp-vti: Likewise.

2001-03-26  Ben Elliston  <bje@redhat.com>

	* doc/credits.texi (Credits): Update.

	* gas-test.scm (<keyword>,test-data): Prefix keywords by their
	specified prefix and, if necessary, escape `$' in gas-build.sh to
	prevent unwanted shell variable expansion.

2001-03-24  Ben Elliston  <bje@redhat.com>

	* gas-test.scm (<hw-asm>,test-data): Choose pseudo-random data.
	(<keyword>,test-data): Likewise.
	(<hw-address>,test-data): Likewise.
	(<hw-iaddress>,test-data): Likewise.
	(-collate-test-set): New function.
	(build-test-set): Use it.
	(gen-gas-test): Generate five test cases per instruction.
	(cgen-allinsn.exp): Include "-*- Tcl -*-" in DejaGNU test file.

	* read.scm: Load "slib/random" if random is not defined.
	* slib/random.scm: New file.

	* utils.scm: Remove comments about the Hobbit compiler.
	(copyright-cygnus): Add 2001.
	(package-cygnus-simulators): Replace "Cygnus" with "Red Hat".
	(package-gnu-simulators): Tidy.

2001-03-23  Ben Elliston  <bje@redhat.com>

	* cgen-gas.scm: Inline documentation improvements.

2001-03-21  Ben Elliston  <bje@redhat.com>

	* opc-itab.scm (compute-syntax): Emit a parse error if an operand
	given in a syntax string is undefined.

	* opc-itab.scm (compute-syntax): Emit a parse error if an operand
	name is empty or invalid -- eg. "$(rs)" instead of "($rs)".

2001-03-20  Patrick Macdonald  <patrickm@redhat.com>

	* desc-cpu.scm (@arch@_cgen_cpu_open): Correct machine calculation
	for arg_type CGEN_CPU_OPEN_BFDMACH.

2001-03-20  Ben Elliston  <bje@redhat.com>

	* opc-itab.scm (-gen-insn-enum): Do not append a dummy `max'
	instruction onto the instruction list. Define MAX_INSNS to be the
	value of the last instruction enum plus one.

2001-03-14  Nick Clifton  <nickc@redhat.com>

	* utils.scm (copyright-fsf): Add 2001.  Remove (C).

2001-03-05  Dave Brolley  <brolley@redhat.com>

	* sim-decode.scm (-gen-extract-case): Generate declaration of "insn"
	if the number of ifields is greater than zero.

2001-03-01  Frank Ch. Eigler  <fche@redhat.com>

	* sid.cpu (-op-gen-set-trace[-parallel], -create-virtual-insns!):
	Emit LIKELY/UNLIKELY branch probability hints.
	* sid-decode.cpu (-gen-record-args): Ditto.

2001-02-02  Patrick Macdonald  <patrickm@redhat.com>

	* desc-cpu.scm (-gen-hash-defines): Rename
	CGEN_ACTUAL_MAX_SYNTAX_BYTES to CGEN_ACTUAL_MAX_SYNTAX_ELEMENTS.

2001-01-26  Frank Ch. Eigler  <fche@redhat.com>

	* sid-cpu.scm (gen-parallel-exec-type): Use unsigned long long for
	writeback tracking.
	(-gen-write-fn, -gen-sem-case, -gen-sfrag-case): Ditto.
	* sid-decode.scm (-gen-scache-decls): Exclude writeback tracking field
	if unnecessary.
	* sid.scm (<operand> gen-write): Use unsigned long long expression
	for writeback.
	(-op-gen-set-trace, -op-gen-set-trace-parallel): Ditto.
	(<unit> gen-profile-code): Ditto.

2001-01-23  Johan Rydberg  <jrydberg@opencores.org>

	* doc/rtl.texi (Expressions): Document the (index-of ...) and
	(regno ...) rtx.

2001-01-08  Frank Ch. Eigler  <fche@redhat.com>

	* operand.scm (<operand> pretty-sem-name): New field.
	(<operand> make): Initialize it from hw-name.
	(op:set-pretty-sem-name!): New function.
	(<operand> gen-pretty-name): Default to fetching new field.
	* rtl.scm (hw): Copy hw-name to pretty-sem-name instead.  Restore
	sem-name setting from -rtx-hw-name.

2001-01-08  Frank Ch. Eigler  <fche@redhat.com>

	* rtl.scm (hw): Copy hw-name to new operand's sem-name, to simplify
	its subsequent gen-pretty-name.

	* read.scm: Increase thread working stack limit and backtrace
	depth limits.

2001-01-08  Frank Ch. Eigler  <fche@redhat.com>

	* doc/rtl.texi: Deprecate and depreciate the decode-assist construct.

2001-01-06  Johan Rydberg  <jrydberg@opencores.org>

	* openrisc.cpu (or32): Setup semantics for h-delay-insn to
	current insn plus 4.
	(h-delay-insn): New hardware register.
	(l-jal): Uses h-delay-insn instead of pc when setting link register.
	(l-jalr): Likewise.
	(l-bal): Likewise.

	* openrisc.opc (parse_hi16): Sign extend value.
	(parse_lo16): Likewise.

2001-01-06  Ben Elliston  <bje@redhat.com>

	* utils-gen.scm (gen-sfmt-enum-decl): Use @prefix@ and @PREFIX@
	instead of @cpu@ and @CPU@ to generically prefix symbol names.
	* sim-cpu.scm (-gen-sem-fn-table-entry): Likewise.
	(-gen-semantic-fn-table): Likewise.
	(-gen-scache-semantic-fn): Likewise.
	(-gen-no-scache-semantic-fn): Likewise.
	(cgen-read.c): Likewise.
	(cgen-sem-switch.c): Likewise.
	* desc-cpu.scm (cgen-desc.c): Use @arch@, not @prefix@, since this
	is a filename prefix.
	* sim-decode.scm (IDESC-TABLE-VAR): Use @prefix@, et al.
	(-gen-decode-insn-globals): Likewise.
	(-gen-idesc-decls): Likewise.
	(cgen-decode.h): Likewise.
	(cgen-decode.c): Likewise.
	* sim.scm (gen-cpu-insn-enum-decl): Likewise.
	(gen-cpu-insn-enum): Likewise.
	(sim-finish!): Likewise.

2001-01-05  Johan Rydberg  <jrydberg@opencores.org>

	* openrisc.cpu: New file.
	* openrisc.opc: Likewise.

2000-12-12  Ben Elliston  <bje@redhat.com>

	* doc/rtl.texi (Expressions): Document the (delay ..) rtx.

2000-12-07  Ben Elliston  <bje@redhat.com>

	* sim-decode.scm (-gen-extract-case): Do not emit a definition for
	"insn" when there are zero ifields to extract.

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

	* utils-sim.scm (gen-define-argbuf-macro): Handle sfmt=#f case, to be
	used by simple/non-scache simulators.
	* sim-cpu.scm (-gen-read-case): Call gen-define/undef-field-macro
	regardless of with-scache?.
	(-gen-write-case, -gen-no-scache-semantic-fn, -gen-sem-case): Ditto.

2000-12-03  Ben Elliston  <bje@redhat.com>

	* desc-cpu.scm (cgen-desc.h): Clarify generated filenames.
	(cgen-desc.c): Likewise.

2000-12-01  Greg McGary  <greg@mcgary.org>

	* desc.scm (<keyword>,gen-defn): Prepend prefix to keyword names.

2000-12-01  Ben Elliston  <bje@redhat.com>

	* sim-cpu.scm (cgen-cpu.h): Only emit argbuf, scache and extract
	definitions if run without with-multipla-isa?.
	(cgen-defs.h): New function. Emit an ISA-specific defs file.
	* cgen-sim.scm (sim-arguments): Accept -G option to generate defs.

2000-11-24  Ben Elliston  <bje@redhat.com>

	* sim-cpu.scm (-gen-hardware-struct): New function.
	(-gen-hardware-types): If with-multiple-isa is specified, emit all
	hardware elements wich have share one or more ISAs with the ISAs
	being kept.

	* sim.scm (-with-multiple-isa?): New symbol.
	(with-multiple-isa?): New function.
	(option-init!): Initialise -with-multiple-isa?.
	(option-set!): Handle with-multiple-isa option.

2000-11-21  Ben Elliston  <bje@redhat.com>

	* utils.scm (copyright-fsf): Add the year 2000.

2000-11-20  Frank Ch. Eigler  <fche@redhat.com>

	* opc-itab.scm (-gen-ifmt-table, -gen-macro-insn-table: Remove
	unneeded "\n\n" from F() macro definition.

2000-11-15  Greg McGary  <greg@mcgary.org>

	* utils-cgen.scm (gen-define-with-symcat): New function.
	* desc-cpu.scm (gen-ifld-defns): Use it.
	(gen-hw-table-defns): Use it.
	(-gen-hash-defines): Use it.
	(gen-operand-table): Use it.
	(gen-insn-table): Use it.  Remove spurious `#undef MNEM'.
	* opc-itab.scm (-gen-ifmt-table): Use it.
	(-gen-insn-opcode-table): Use it.
	(-gen-macro-insn-table): Use it.
	* opc-opinst.scm (-gen-operand-instance-tables): Use it.
	* sim-cpu.scm (cgen-semantics.c): Use it.
	(cgen-sem-switch.c): Use it.

2000-11-10  Frank Ch. Eigler  <fche@redhat.com>

	* utils-sim.scm (-gen-decode-insn-entry): Add fn? parameter to signal
	request to emit calls to insn extractors as functions rather than
	branches to inline blocks.
	(-gen-decode-expr-set-itype, -gen-decode-expr-entry): Ditto.
	(-gen-decode-table-entry, -gen-decoder-switch, gen-decoder): Ditto.

	* sim-decode.c (-gen-decode-fn): Tell (gen-decode) to emit branches
	to extractor clauses.

2000-11-10  Frank Ch. Eigler  <fche@redhat.com>

	* decode.scm (-distinguishing-bit-population): Significantly
	improve popularity heuristic.  Renamed from
	(-mask-bit-population): Gone.
	(-population-above-threshold): Sort new bit numbers in order of
	popularity.
	(-population-top-few): Allow up to three more bits to be selected
	than requested.  Correct selection order to prefer better bits.
	Correct bug in fewer-than-requested case.  Keep threshold as
	floating-point.
	(decode-best-get-bits): Pass also the insn-values.

	* utils-sim.scm (-gen-decoder-switch): Add comment suggesting a
	future optimization.

	* utils.scm (message): Format nested lists better.

2000-11-09  Doug Evans  <dje@casey.transmeta.com>

	* dev.scm: Add srcdir to %load-path.

	* rtx-funcs.scm (subword): Mode of argument can be different
	than mode of result, so don't use OP0 to specify argument's mode.

2000-11-02  Ben Elliston  <bje@redhat.com>

	* doc/porting.texi (Building a GAS test suite): Document my change
	to gas-build.sh.

2000-11-01  Ben Elliston  <bje@redhat.com>

	* sim-test.scm (cgen-build.sh): Include "-*- Asm -*-" in test cases.

2000-10-31  Ben Elliston  <bje@redhat.com>

	* gas-test.scm (cgen-build.sh): Allow the generated script to run
	with no command line arguments if the gas build directory can be
	determined.

2000-10-26  Doug Evans  <dje@casey.transmeta.com>

	* insn.scm (-parse-insn-format-symbol): Fix spelling error,
	op-ifld -> op-ifield.

2000-10-23  Frank Ch. Eigler  <fche@redhat.com>

	* thumb.scm (cc-tests): Add (ISA thumb) attribute.

2000-10-13  matthew green  <mrg@cygnus.com>

	* utils-cgen.scm (get-ifetch): Move from here ...
	* sim.scm (get-ifetch): ... to here.
	* sid.scm (get-ifetch): Copy and port to c++.

2000-10-06  Dave Brolley  <brolley@redhat.com>

	* utils-gen.scm (-gen-ifld-extract-base): Compute start position as
	ifld-start + ifld-word-offset.
	(gen-ifld-extract): Check adata-integral-insn? before checking whether
	the field is beyond the base number of bits.
	(gen-define-ifields): Use a base-length of 32 if adata-integral-insn?.
	(gen-extract-ifields): Ditto.
	* gas-test.scm (gentest): Generate backslashes before '[' and ']'
	characters in the regular expression.

2000-10-02  Frank Ch. Eigler  <fche@redhat.com>

	* desc-cpu.scm: (gen-operand-decls): Emit MAX_OPERANDS as a
	preprocessor constant.

2000-09-21  Frank Ch. Eigler  <fche@redhat.com>

	* slib/logical.scm: New file from slib.  Provides robust bitwise
	logical operations for large integers.
	* read.scm: maybe-load it.

2000-09-15  Frank Ch. Eigler  <fche@redhat.com>

	* enum.scm (define-full-insn-enum): Filter with keep-isa predicate.
	* ifield.scm (-ifield-parse, -multi-ifield-parse): No longer assert
	single-isa predicate, but support keep-isa filtering.

2000-09-08  Frank Ch. Eigler  <fche@redhat.com>

	* rtl-c.scm (s-sequence): Handle nested c-calls in both
	statement-expression and comma-expression contexts.
	(s-c-call, s-c-raw-call): Add warning comment about bad assumption.

2000-09-08  Frank Ch. Eigler  <fche@redhat.com>

	* decode.scm (-population-top-few): Signal error gracefully if
	decoding is about to become ambiguous.

2000-09-06  Frank Ch. Eigler  <fche@redhat.com>

	* doc/rtl.texi (decode-assist): Describe this field as optional.

2000-09-06  Frank Ch. Eigler  <fche@redhat.com>

	* utils-gen.scm (gen-multi-ifld-extract): Handle case of multi-ifield
	with decode proc.

2000-09-05  Dave Brolley  <brolley@redhat.com>

	* sim.scm (sim-finish!): Honour the definition of FAST_P when calling
	@cpu@_pbb_begin. Use 0 if FAST_P is not defined.

2000-08-29  Dave Brolley  <brolley@redhat.com>

	* utils-gen.scm (gen-ifld-extract): Pass total-len if
	adata-integral-insn is true for this architecture.

2000-08-24  Frank Ch. Eigler  <fche@redhat.com>

	* hardware.scm (<hw-immediate> get-index-mode): Define method.
	* operand.scm (<operand> gen-pretty-name): Tolerate no op:sem-name.
	* rtl-c.scm (-c-rtl-get): Improve an error message.
	* sim.scm (-op-gen-set-trace): Support <derived-operand> lvalues.

2000-08-22  Frank Ch. Eigler  <fche@redhat.com>

	* Makefile.in (DIST_COMMON): Regenerated.
	* ifield.scm (<derived-ifield> needed-iflds): New method.
	* iformat.scm (-ifmt-lookup-sfmt!): Use base ifields for
	sfmts built from <derived-ifield>s.
	* operand.scm (-derived-parse-encoding): Give <derived-ifield> a fixed
	type symbol 'derived-ifield, not an unparseable string.
	* utils-sim.scm (op-needed-iflds) Handler 'derived-ifield case.
	(-sfmt-contents): Add tracing.

	From Doug Evans <dje@transmeta.com>:
	* sim.scm (<operand> cxmake-get): Result is a <c-expr>, not a string of
	C code.

2000-08-20  Doug Evans  <dje@casey.transmeta.com>

	* rtl-c.scm (rtl-c-expr-with-estate): New fn.
	(rtl-c-expr-parsed,rtl-c-expr): New fns.
	(-rtl-c-get): Rename from rtl-c-get.
	(rtl-c-get): New fn for getter logging.

2000-07-28  Ben Elliston  <bje@redhat.com>

	* NEWS: Update.

2000-07-25  Ben Elliston  <bje@redhat.com>

	* doc/credits.texi (Credits): Add Frank Eigler.

2000-07-24  Dave Brolley  <brolley@redhat.com>

	* opc-itab.scm (gen-insn-opcode-table): Initialize the first element
	fully.
	* desc.scm (gen-attr-table-defn): Initialize all elements fully.
	(<keyword>): Initialize all elements fully.
	* desc-cpu.scm (-gen-isa-table-defns): Initialize the last element
	fully.
	(-gen-mach-table-defns): Ditto.
	(-gen-ifld-defns): Ditto.
	(-gen-operand-table): Ditto.
	(-gen-insn-table): Ditto.
	(-gen-cpu-open): Nothing to do for the mach table.

2000-07-13  Ben Elliston  <bje@redhat.com>

	* doc/version.texi (UPDATED): Update.

2000-07-05  Ben Elliston  <bje@redhat.com>

	* configure.in (AC_PATH_PROG): Remove.
	* configure: Regenerate.
	* Makefile.am (GUILE): Locate guile dynamically.
	* Makefile.in: Regenerate.
	* doc/Makefile.in: Likewise.

2000-07-03  Ben Elliston  <bje@redhat.com>

	* desc-cpu.scm (cgen-desc.c): Include "libiberty.h".
	* opc-itab.scm (cgen-opc.c): Likewise.

2000-06-28  Frank Ch. Eigler  <fche@redhat.com>

	* rtl.scm (-rtx-traverse-locals): Correct call to `symbol?' for
	guile 1.4 compatibility.
	(rtx-env-dump): Comment out buggy display calls.

2000-06-15  matthew green  <mrg@redhat.com>

	* opc-itab.scm (-gen-ifmt-table-1): Add extra braces to pacify GCC.

2000-06-14  Frank Ch. Eigler  <fche@redhat.com>

	* Makefile.in: Regenerated.

	* desc-cpu.scm (gen-ifld-decls): Exclude derived ifields.
	(gen-ifld-defns): Ditto.
	* pgmr-tools.scm (pgmr-pretty-print-insn-format): Ditto.
	* rtl.c (rtl-finish!): Ditto.
	* opc-itab.scm (-gen-ifield-decls): Ditto.
	* opcodes.scm (gen-switch): Exclude derived operands.
	* operand.scm (op-iflds-used): Expand derived operands.
	(hw-index-derived): New dummy function to create dummy object.
	(-derived-operand-parse): Fix mode arg passed to <derived-operand>
	constructor.  Set object's hw-name and index fields.
	(-anyof-merge-subchoices): Set instance object's index also.
	(-anyof-name): New helper function.
	(anyof-merge-semantics): Correct replacement of operand names in
	anyof instance.
	(op-ifield): Tolerate derived-operands and their funny indices better.
	* ifield.scm (ifld-known-values): Expand derived ifields.
	(non-multi-ifields, non-derived-ifields): New utility functions.
	(ifld-decode-mode): Tolerate objects with unbound decode field.
	* iformat.scm (compute-insn-length): Expand derived ifields.
	(compute-insn-base-mask): Ditto.
	* insn.scm (insn-base-ifields): Remove.
	(<insn>): Add iflds-values entry to cache ifld-base-ifields values.
	(insn-value): Call ifld-base-ifields and ifld-constant? instead.
	* mach.scm (arch-analyze-insns!): Exclude multi-insns.
	* sem-frags.scm (sim-sfrag-analyze-insns!): Ditto.
	(-frag-test-data): Ditto.
	* sid-cpu.scm (cgen-write.cxx,-gen-sem-switch): Ditto.
	(-gen-sem-switch-engine); Ditto.
	* sid-model.scm (-gen-model-insn-fns, -gen-model-timing-table): Ditto.
	* sid-decode.scm (cgen-decode.h, cgen-decode.cxx): Ditto.
	(-gen-record-args): Tolerate unbound op-ifield.
	* sid.scm (<derived-operand> cxmake-get): New sketch implementation.
	(-gen-arch-model-decls, scache-engine-insns, pbb-engine-insns):
	Exclude multi-insns.
	* sim-decode.scm (cgen-decode.h, cgen-decode.cxx): Ditto.
	* utils-sim.scm (op-extract?): Handle derived operands.

	* gas-test.scm (cgen-build.sh): Quote '*' chars printed by objdump.
	* semantics.scm (-build-operand!): Handle 'DFLT case during parsing.
	* hardware.scm (hardware-for-mode): New function.

	* insn.scm (filter-harmlessly-ambiguous-insns): New function for
	cleaning up decode tables.
	(mask-superset?): Little helper function for above.
	* decode.scm (-build-decode-table-entry): Call it.
	(-opcode-slots): Add some more tracing.
	* arm.cpu: Disable decode-splits construct due to implementation
	conflict with `filter-harmlessly-ambiguous-insns'

	* decode.scm (-population-top-few): New function for better decode
	bit generation.  Includes minor helper functions.
	(decode-get-best-bits): Call it instead.
	(OLDdecode-get-best-bits): Renamed previous version of above.


2000-06-13  Ben Elliston  <bje@redhat.com>

	* configure.in: Use AC_EXEEXT with Cygnus mode. Remove AC_ARG_WITH
	for the Guile library directory.
	* configure: Regenerate.
	* Makefile.in, doc/Makefile.in: Regenerate.

	* Makefile.in, doc/Makefile.in: Regenerate.
	* configure.in: Remove unnecessary tests. Move to version 1.0.
	* acconfig.h, config.in: Remove.
	* configure, aclocal.m4: Regenerate.
	* doc/stamp-vti, doc/version.texi: Likewise.
	* AUTHORS: New file.

2000-06-07 Ben Elliston  <bje@redhat.com>

	* fixup.scm (symbol-bound?): Reduce debugging output.

2000-06-02  matthew green  <mrg@redhat.com>

	* insn.scm (insn-base-ifields): Returns all the instruction fields for
	a given instruction, replacing derived fields with their subfields.
	(insn-value): Use `insn-base-ifields' to find all constant values.
	(multi-insn-instantiate!): Comment some debug messages.

2000-06-01  Ben Elliston  <bje@redhat.com>

	* doc/rtl.texi (Expressions): Document a hazard with the choice of
	symbol names used in a (c-call ..) rtx.

	* sim-test.scm (build-test-set): Return (()) for an instruction
	with no operands, so it too is included in the generated test set.

2000-05-31  Ben Elliston  <bje@redhat.com>

	* Makefile.am (gas-test): Ensure $(ISA) is not empty.
	(sim-test): Likewise.
	* Makefile.in: Regenerate.

2000-05-30  Frank Ch. Eigler  <fche@redhat.com>

	* read.scm (-cgen): In debugging mode (-b), ask guile for untruncated
	stack traceback, in an order that resembles gdb's `bt'.

2000-05-24  Frank Ch. Eigler  <fche@redhat.com>

	* desc-cpu.scm (-gen-hash-defines): Use ifmt-ifields again.
	* opc-itab.scm (-gen-ifmt-table-1): Ditto.
	* gas-test.scm (gas-test-analyze!, cgen-build.sh): Filter out
	multi insns.
	* ifield.scm (multi-ifield): Define workable field-mask and field-value
	virtual functions.
	(ifld-base-ifields): New routine to replace ifmt-expanded-ifields.
	* iformat.scm (ifmt-expanded-ifields): Gone.
	(ifields-base-ifields): New function.  Call ifld-base-ifields for real
	work.
	(-ifmt-lookup-ifmt!): Use it to expand derived/multi combos in new
	ifmt entries.

	* opcodes.scm (multi-ifield gen-extract): Correct spacing in generated
	code.

2000-05-23  Frank Ch. Eigler  <fche@redhat.com>

	* sid.scm (with-any-profile?): New function clone.

2000-05-19  Frank Ch. Eigler  <fche@redhat.com>

	* utils-gen.scm (gen-multi-ifld-extract): Fix decode hook for sim.

2000-05-18  Frank Ch. Eigler  <fche@redhat.com>

	* ifield.scm (-multi-ifield-parse): Add encode/decode args.
	(-multi-ifield-read): Parse them.
	(define-full-multi-ifield): Pass #f/#f as defaults for them.
	* opcodes.scm (multi-ifield gen-insert): Add encode hook.
	(multi-ifield gen-extract): Add decode hook.
	* utils-gen.scm (gen-multi-ifld-extract): Add decode hook for sim.

	* insn.scm (syntax-break-out): More correctly handle \-escaped
	syntax characters.
	(syntax-make-elements): Ditto.
	* opc-itab.scm (compute-syntax): Ditto.

2000-05-17  Ben Elliston  <bje@redhat.com>

	* gas-test.scm (cgen-build.sh): Log the correct script filename.

2000-05-15  Frank Ch. Eigler  <fche@redhat.com>

	* gas-test.scm (build-test-set): Return (()) for an instruction
	with no operands, so it too is included in the generated test set.

2000-05-15  Frank Ch. Eigler  <fche@redhat.com>

	* desc-cpu.scm (-gen-hash-defines): Define CGEN_ACTUAL_MAX values for
	IFMT_OPERANDS and SYNTAX_BYTES.

2000-05-15  Frank Ch. Eigler  <fche@redhat.com>

	* sim.scm (with-any-profile?): New function.
	* utils-sim.scm (-sfmt-contents): Use above instead of `with-profile?'
	to decide whether or not to include profiling counters.

2000-05-10  Frank Ch. Eigler  <fche@redhat.com>

	Fuller derived-operand support for opcodes.
	* insn.scm (non-multi-insns): New filter to oppose `multi-insns'.
	* desc-cpu.scm (-define-hash-defines): Compute CGEN_MAX_SYNTAX_BYTES.
	Correctly compute ..._IFMT_OPERANDS.  Omit useless ..._INSN_OPERANDS.
	(gen-operand-table): Omit derived- and anyof- operands from table.
	(gen-insn-table): Omit multi-insns from table.
	* iformat.scm (ifmt-expanded-fields): New function to expand
	subfields of derived-ifields.
	(ifmt-compute!): Ignore remaining multi-insns.
	* mach.scm (isa-min-insn-bitsize, isa-max-insn-bitsize): Ignore
	multi-insns.
	* opc-itab.scm (-gen-ifmt-table-1): Use ifmt-expanded-ifields.
	(-gen-insn-enum, -gen-insn-opcode-table): Ignore multi-insns.
	* opcodes.scm (derived-operand): Define abort()ing gen-insert,
	gen-extract, gen-fget, gen-fset, gen-parse, gen-print functions.
	(gen-switch): Omit anyof-operands.
	* operand.scm (-anyof-syntax): New function.
	(-anyof-merge-syntax): Call it.
	* utils.scm (collect): New idiomatic function.

2000-05-10  Ben Elliston  <bje@redhat.com>

	* m68k.cpu: New file (work in progress).

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

	* Makefile.am (all-local): New target.  Create stamp-cgen.
	* Makefile.in: Regenerated.
	* doc/Makefile.in: Regenerated.

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

	* operand.scm (-operand-g/setter-syntax): Correct off-by-one error.
	(-operand-parse-setter): Ditto.
	* utils-sim.scm (needed-iflds): Store ifield (index) in argbuf, even
	for CACHE-ADDR operands.
	* sid-decode.scm (-gen-record-args): Remove newly duplicated extract
	trace entries.  Widen byte-wide values for printing.
	* sid.scm (-op-gen-set-trace): Enhance result trace with op indices.
	Widen byte-wide values for printing.  Hexify memory addresses.

2000-04-23  matthew green  <mrg@redhat.com>

	* m32r.cpu: Fix a typo.

Fri Apr 21 22:18:48 2000  Jim Wilson  <wilson@cygnus.com>

	* ia64.cpu (define-model): Change merced to Itanium.
	(f-qp): Change quilifying to qualifying.
	(movbr_ph, movbr_pvec): Delete.
	(I-I21): Delete uses of movbr_ph and movbr_pvec.

2000-04-07  Ben Elliston  <bje@redhat.com>

	* doc/porting.texi (Building a simulator test suite): Clarify
	where generated test cases are placed.

2000-04-07  Ben Elliston  <bje@redhat.com>

	* Makefile.am (gas-test): Remove dependency on `cgen'.
	(sim-test): Ditto.
	* Makefile.in: Regenerate.

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

	* hardware.scm (<hw-pc> parse): Allow user to set type for pc register.
	* mode.scm (mode-finish!): Add placeholder code for mach-dependent
	type reconfiguration.
	* utils-sim.scm (-sfmt-contents): Add profile-counters only if
	with-profile?.

2000-03-30  Ben Elliston  <bje@redhat.com>

	* doc/rtl.texi (Enumerated constants): Add concept index entries.

2000-03-24  Ben Elliston  <bje@redhat.com>

	* Makefile.am (stamp-cgen): Reinstate target.
	* Makefile.in: Regenerate.

2000-03-22  Ben Elliston  <bje@redhat.com>

	* slib/ppfile.scm: Remove; unused.
	* slib/defmacex.scm: Likewise.

2000-03-21  Ben Elliston  <bje@redhat.com>

	* doc/internals.texi (Source file overview): Document.

	* Makefile.am (GUILEDIR): Remove.
	(CGEN): Ditto. Callers use $(GUILE) instead.
	(GUILEFLAGS): Ditto.
	(CGENFILES): Ditto.
	(APPDESCFILES): Ditto.
	(OPCODESFILES): Ditto.
	(SIMFILES): Ditto.
	(pkgdata_SCRIPTS): Ditto.
	(stamp-cgen): Remove target.
	* Makefile.in: Regenerate.

	* configure.in: Remove header and library tests.
	* configure: Regenerate.
	* config.in: Likewise.

2000-03-20  Ben Elliston  <bje@redhat.com>

	* read.scm: Cease loading "hob-sup.scm".
	* utils.scm: Inherit the fastcall family of procedures (for now).
	* hob-sup.scm: Remove.

2000-03-20  Ben Elliston  <bje@redhat.com>

	* configure.in (AC_OUTPUT): Do not emit .gdbinit.
	* configure: Regenerate.
	* gdbinit.in: Remove.

2000-03-17  Ben Elliston  <bje@redhat.com>

	* Makefile.am (CGEN): Use guile, not cgen.
	(CGENCFLAGS, LIBIBERTY, INCLUDES): Remove.
	(bin_PROGRAMS, cgen_SOURCES): Likewise.
	(CGENFILES): Fold CGEN_HOB_INPUT_FILES and CGEN_NOHOB_FILES.
	(HOBBIT_INPUT_FILES, HOBBIT_OUTPUT_FILE): Remove.
	(HOB_OBJS): Likewise.
	(CGEN_HOB_SRC, CGEN_HOB_OBJ): Likewise.
	(CGENOBJS): Likewise.
	(cgen_DEPENDENCIES, cgen_LDFLAGS, cgen_LDADD): Likewise.
	(hobbit, hobbit.o, hobbit.c): Remove targets.
	(cos.o, cgen.o, cgen-gh.o, hob-sup.o): Likewise.
	(CLEANFILES): Update.
	* acconfig.h (WITH_HOBBIT): Remove.
	* configure.in: Do not test for 3 arg scm_make_vector. Remove
	option --with-cgen-hobbit.
	* cos.h, cos.c, hob-main.c, hob-sup.c, hob-sup.h, hob.sh: Remove.
	* cgen-gh.h, cgen-gh.c, cgen-hob.scm, cgen.c: Likewise.
	* hobbit.c, hobbit.h, hobbit.scm: Likewise.
	* hobscmif.h, hobslib.scm, scmhob.h: Likewise.
	* Makefile.in: Regenerate.
	* config.in: Likewise.
	* aclocal.m4: Likewise.
	* configure: Likewise.
	* README (Hobbit support): Remove.
	* doc/internals.texi (Conventions): Do not mention Hobbit.
	* doc/porting.texi (Supported Guile versions): Likewise.

2000-03-16  Frank Ch. Eigler  <fche@redhat.com>

	* sid-cpu.scm (-gen-sem-switch-engine): Adjust calling &
	callback convention to new sid sidutil::basic_cpu code.
	(-gen-sfrag-engine-fn): Ditto.
	* sid.scm (-create-virtual-insns!): Ditto.
	(-hw-gen-set-quiet-pc): Mark delay slot execution specially in pbb
	mode.
	(cxmake-skip): Implement properly for pbb mode.

2000-03-03  Ben Elliston  <bje@redhat.com>

	* doc/internals.texi: New file.

2000-02-29  Ben Elliston  <bje@redhat.com>

	* doc/rtl.texi (Derived operands): Remove unnecessary footnote.
	* doc/porting.texi: Formatting tweaks.

2000-02-25  Nick Clifton  <nickc@cygnus.com>

	* desc-cpu.scm (*_cgen_cpu_open): Initialise signed_overflow_ok_p
	field.

Thu Feb 24 14:09:01 2000  Doug Evans  <devans@seba.cygnus.com>

	* operand.scm (<anyof-operand>,make!): Initialize mode-name, not
	mode.

2000-02-23  Andrew Haley  <aph@cygnus.com>

	* m32r.cpu (pcmpbz): Make pcmpbz a special (i.e. hidden)
	instruction.

2000-02-24  Ben Elliston  <bje@redhat.com>

	* doc/rtl.texi (Derived operands): Add some cindex entries.

2000-02-23  Ben Elliston  <bje@redhat.com>

	* ia32.cpu (dndo): Move general purpose macro from here ..
	* simplify.inc (dndo): .. to here.

2000-02-18  Frank Ch. Eigler  <fche@redhat.com>

	* arm.cpu (h-tbit): Add c-call setter function.
	(h-mbits): Ditto.

2000-02-17  Frank Ch. Eigler  <fche@redhat.com>

	* sem-frags.scm (-frag-hash-compute!): Add appstuff arg for traversal.
	(-frag-cost-compute!): Ditto.
	* utils.scm (copyright-cygnus): Add Y2K.
	* sid-cpu.scm (@prefix@_pbb_run): Add unsigned& argument.

2000-01-25  Nick Clifton  <nickc@cygnus.com>

	* desc-cpu.scm (@arch@_cgen_cpu_open): Add code to initialise
	flags field of the CGEN_CPU_TABLE structure.

Sun Dec 12 14:20:36 1999  Doug Evans  <devans@seba.cygnus.com>

	* operand.scm (<anyof-instance>): Renamed from <anyof-value>.
	All references updated.

Tue Nov 30 11:06:22 1999  Doug Evans  <devans@seba.cygnus.com>

	* ia32.cpu: Rewrite addressing mode support.

	* ifield.scm (<ifield>): New member `follows'.
	(ifld-known-values): New proc.
	(<ifield>): New method set-word-offset!.
	(ifld-set-word-offset!): New proc.
	(ifld-new-word-offset): New proc.
	(<ifield>): New method next-word.
	(<multi-ifield>): New method next-word.
	(ifld-next-word): New proc.
	(ifld-precedes?): New proc.
	(-ifield-parse): New args word-offset,word-length,follows.
	All callers updated.  Handle CISC-style vs RISC-style ifields.
	(-ifield-read): Recognize word-offset,word-length,follows specs.
	(-ifld-parse-follows): New proc.
	(-multi-ifield-make-default-insert): New proc.
	(-multi-ifield-make-default-extract): New proc.
	(-multi-ifield-parse): Provide default values for insert,extract
	handlers if not specified.
	(<derived-ifield>): New class.
	(derived-ifield?): New predicate.
	(ifld-derived-operand?): New predicate.
	(f-anyof): New global.
	(ifld-anyof?,ifld-anyof-operand?): New predicates.
	(f-derived,ifld-derived?): Delete.
	(ifield-builtin!): Delete init of f-derived.  Init f-anyof.
	* insn.scm (-sub-insn-ifields): New proc.
	(-sub-insn-make!): New proc.
	(multi-insn-instantiate!): Provide initial implementation.
	(-insn-parse): If insn contains "anyof" operands, create a
	<multi-insn> object instead of a plain <insn>.
	(-parse-insn-format-symbol): Rewrite derived operand handling.
	Add anyof operand handling.
	(-parse-insn-format-ifield-spec): Rewrite.
	(-parse-insn-format-operand-spec): Delete.
	(-parse-insn-format-list): Delete support for `(operand value)'.
	(anyof-operand-format?): Replaces derived-operand-format?.
	* operand.scm (-operand-parse-getter): Improve error messages.
	(-operand-parse-setter): Ditto.
	(<derived-operand>): New members args,syntax,base-ifield,encoding,
	ifield-assertion.
	(<anyof-operand>): Change baseclass from <derived-operand> to
	<operand>.  Delete member values.  New members base-ifield,choices.
	(anyof-operand?): New predicate.
	(-derived-parse-encoding,-derived-parse-ifield-assertion): New procs.
	(-derived-operand-parse): Rewrite.
	(-derived-operand-read): Rewrite.
	(-anyof-parse-choice): New proc.
	(-anyof-operand-parse): Rewrite.
	(-anyof-operand-read,define-anyof-operand): New procs.
	(<anyof-value>): Rewrite.
	(-anyof-initial-known): New proc.
	(anyof-satisfies-assertions?): New proc.
	(-anyof-merge-syntax,-anyof-merge-encoding): New procs.
	(-anyof-merge-getter,-anyof-merge-setter): New procs.
	(-anyof-merge-semantics,-anyof-merge-ifield-assertion): New procs.
	(-anyof-merge-subchoices,-anyof-all-subchoices): New procs.
	(-anyof-value-from-derived): New proc.
	(-anyof-all-choices-1,anyof-all-choices): New procs.
	(operand-init!): Create define-anyof-operand reader command.

	* insn (syntax-break-out): Take syntax as argument instead of insn.
	All callers updated.
	(syntax-make): Move here, from ???.

	* types.scm (<bitrange>): Rename accessors from bitrange:foo to
	bitrange-foo. All uses updated.
	(bitrange-next-word): New proc.

	* semantics.scm (-solve-expr-fn,rtx-solve): New procs.

	* rtl.scm (rtx-canonicalize): Provide initial implementation.
	(rtx-make-const,rtx-make-enum): New procs.
	(rtx-arg1,rtx-arg2): Renamed from -rtx-arg[12].  All callers updated.
	(rtx-mem-addr,rtx-mem-sel): New procs.
	(rtx-change-address): New proc.
	(rtx-make-ifield,rtx-make-operand,rtx-make-local): New proc.
	(rtx-make-set,rtx-single-set?): New procs.
	(rtx-combine): New proc.

	* rtl.scm (rtx-traverse): New arg `appstuff'.  All callers updated.
	(rtx-traverse-with-locals): Ditto.
	(-rtx-traverse,-rtx-traverse-*): Ditto.

	* rtl.scm (define-subr): New proc.
	(rtl-init!): Create reader command `define-subr'.

	* cos.c (_object_mi_p): Ensure argument is an object.
	(indent): New function.
	(_object_print_elms): Add pretty-printing support.
	(_object_print): Ditto.

	* hobbit.scm (*reckless-s->c-fun-table*): Add fastcall7.
	(*floats-s->c-fun-table*): Ditto.
	* hobbit.c,hobbit.h: Rebuild.
	* hob-sup.c (fastcall7): New proc.
	* hob-sup.h (fastcall7): Declare.
	* hob-sup.scm (fastcall7): New macro.

	* mach.scm (<arch>): New member subr-list.
	(current-subr-list,current-subr-add!,current-subr-lookup): New procs.
	(arch-finish!): Reverse recorded subr list.

	* read.scm (debug-env): New global.
	(debug-var-names,debug-var,debug-repl-env): New procs.
	(debug-repl): Rewrite.  New arg `env-list'.  All callers updated.
	(debug-quit): Renamed from `continue'.

	* simplify.inc (dsmf): New pmacro.

	* utils.scm (plus-scan): New proc.
	(split-bits): Rewrite.
	(split-value): New proc.

1999-10-13  Doug Evans  <devans@casey.cygnus.com>

	* doc/Makefile.am (DOCFILES): Add notes.texi.
	* doc/Makefile.in: Rebuild.

1999-10-11  Doug Evans  <devans@casey.cygnus.com>

	* ifield.scm (ifld-derived?): New proc.
	(f-derived): New global.
	(ifield-builtin!): Create ifield f-derived.
	(<multi-insn>): New class.
	(multi-insn?): New predicate.
	(multi-insn-instantiate!): New proc.
	(-insn-parse): Create <multi-insn> objects for insns with derived
	ifields.
	(-parse-insn-format-symbol): Handle derived ifields.
	(-parse-insn-format-ifield-spec): New proc.
	(-parse-insn-format-operand-spec): New proc.
	(-parse-insn-format-list): Simplify.
	(-parse-insn-format): No longer allow (ifield-object value) spec.
	(derived-operand-format?): New proc.
	(insn-alias?): New proc.
	(non-alias-insns): Rewrite.
	(insn-real?): Renamed from real-insn?, all callers updated.
	(virutal-insns): Rewrite.
	(multi-insns): New proc.
	* mach.scm (arch-analyze-insns!): Instantiate multi-insns if present.
	* operand.scm (op-ifield): Renamed from op:ifield, all callers updated.
	Return #f if operand doesn't have an index or if index is not an
	ifield.
	(hw-index-anyof): New proc.
	(-operand-parse): Allow integer indices.
	(<derived-operand>): New class.
	(derived-operand?): New predicate.
	(<anyof-operand>): New class.
	(<anyof-value>): New class.
	(-anyof-parse-value,-anyof-operand-parse): New procs.
	(-derived-operand-parse,-derived-operand-read): New procs.
	(define-derived-operand,define-full-derived-operand): New procs.
	(operand-init!): New reader command define-derived-operand.

	* utils.scm (list-take): Handle negative amount.
	(element?): Rewrite.

1999-10-10  Doug Evans  <devans@casey.cygnus.com>

	* dev.scm: quick-utils.scm renamed to ~/.cgenrc.

1999-10-04  Richard Henderson  <rth@cygnus.com>

	* ia64.cpu: Checkpoint.

1999-09-29  Doug Evans  <devans@casey.cygnus.com>

	* sim-cpu.scm (-gen-semantic-fn-table): Virtual insns are always valid.

	* sim.scm (sim-finish!,x-invalid): Always set pc.  Set vpc based on
	default-insn-bitsize.  Pass vpc to sim_engine_invalid_insn.

Wed Sep 29 14:39:39 1999  Dave Brolley  <brolley@cygnus.com>

	* sim.scm (sim-finish!): Don't call sim_io_error for invalid insn. Use
	PC returned by sim_engine_invalid_insn.

1999-09-28  Doug Evans  <devans@casey.cygnus.com>

	* ia32.cpu: New file.

1999-09-25  Doug Evans  <devans@casey.cygnus.com>

	* utils.scm (bit-set?): Fix off by one error.

	* rtl-c.scm (s-sequence): Fix non-void-mode result output.

	* rtl.scm (hw): Check for valid hardware element before trying to
	get its mode.

	* arm.cpu (arm7f cpu): Renamed from arm.  All users updated.
	* arm7.cpu (bx): Fix name of target address operand in assembler spec.
	(*): arm_compute_operand2_foo renamed to compute_operand2_foo.
	* thumb.cpu (*): arm_compute_operand2_foo renamed to
	compute_operand2_foo.

	* cgen-sid.scm (sim_arguments): Add support for building defs.h.
	* sid.scm (-hw-gen-set-quiet-pc): Handle #:delay modifier.
	Call delayed_branch/branch methods instead of assigning to `vpc'.
	(<hw-pc>,cxmake-skip): Call skip method.
	(-gen-hw-selector): Call rtl-c++ instead of rtl-c.
	(<pc>,cxmake-skip): Ditto.
	(-create-virtual-insns!): Ditto.
	(op:read): Call estate-make-for-normal-c++ instead of estate-...-c.
	(op:write): Ditto.
	(op:record-profile): Specify #:output-language "c++".
	* sid-cpu.scm (-gen-insn-attr-decls): Rename @cpu@_insn_attr to
	@arch@_insn_attr.
	(cgen-desc.h): Use @arch@ namespace instead of @cpu@.
	Define enums here.
	(-gen-reg-access-defns): Use rtl-c++ instead of rtl-c.
	(gen-semantic-code): Ditto.
	(-gen-sem-case,-gen-sfrag-code): Ditto.
	(-gen-hardware-types): Delete class @cpu@_cpu_base.
	(cgen-cpu.h): File is now #included by main cpu class, rather than
	subclassing.
	(cgen-defs.h): New proc.
	(-gen-scache-semantic-fn): Change result type to sem_status.
	New local `status'.  Call done_cti_insn/done_insn method at end.
	(cgen-semantics.cxx): Include @cpu@.h instead of @arch@-main.h,
	cgen-ops.h.
	(cgen-sem-switch.cxx): Ditto.
	* sid-decode.scm (-gen-idesc-decls): Update return type of
	@prefix@_sem_fn.
	(cgen-decode.h): Add using namespace @arch@.
	(cgen-decode.cxx): Include @cpu@.h instead of @arch@-main.h.

	* rtl-c.scm (<rtl-c-eval-state>): New member output-language.
	(estate-output-language-c?,estate-output-language-c++?): New procs.
	(<rtl-c-eval-state>,vmake!): Handle #:output-language.
	(estate-make-for-normal-rtl-c++): New proc.
	(rtl-c++-parsed,rtl-c++): New proc.
	(s-c-call): Invoke cpu class method if c++.
	(join): Use s-c-raw-call.

	* rtl-c.scm (subword): Don't pass current_cpu to SUBWORD.
	(nop): Rewrite.

	* rtl-c.scm (delay): Mark the sequence as #:delay'd.
	* rtl.scm (<eval-state>): New member `modifiers'.
	(<eval-state>,vmake!): Handle #:modifiers.
	(estate-with-modifiers): New proc.

	* rtl.scm (rtx-side-effects?): New proc.
	(rtx-canonical-bool): Don't change expr if it has side effects.
	* semantics.scm (-simplify-expr-fn): Handle exprs with side-effects
	better.

1999-09-23  Doug Evans  <devans@casey.cygnus.com>

	* sim.scm (gen-scache-type): Fix typo in last patch.

Tue Sep 21 17:12:55 1999  Dave Brolley  <brolley@cygnus.com>

	* sim.scm (gen-scache-type): Add last_insn_p flag for parallel support.

1999-09-05  Doug Evans  <devans@casey.cygnus.com>

	* sid.scm (<hw-pc>,cxmake-skip): New method.
	(<pc>,cxmake-skip): New method.

	* decode.scm (decode-build-table): Delete args startbit,index-list.
	All callers updated.
	* utils-sim.scm (gen-decoder): Delete args startbit,index-list.
	All callers updated.
	* sim-decode.scm (-gen-decode-fn): Always pass 0 for startbit
	to decode-get-best-bits.
	* sid-decode.scm (-gen-decode-fn): Ditto.

	* hardware.scm (hw-bits): New proc.
	(-hw-parse): New arg layout.  All callers updated.
	(define-full-hardware): New arg layout.  All callers updated.
	(-hw-validate-layout): New proc.
	(-hw-create-[gs]etter-from-layout): New procs.
	(<hw-register>,parse!): Handle layout spec.
	* types.scm (type-bits): New proc.

	* sem-frags.scm (-frag-cost-compute!): Fix calculation of
	UNARY, BINARY, TRINARY rtxs.

	* attr.scm (<enum-attribute>,parse-value): Allow strings.
	* enum.scm (parse-enum-vals): Use reverse! instead of reverse.
	Support '- as "unused spot" indicator.

1999-09-03  Doug Evans  <devans@casey.cygnus.com>

	* pgmr-tools.scm (pgmr-pretty-print-insn-format): Fix typo.

1999-09-02  Doug Evans  <devans@casey.cygnus.com>

	* rtx-funcs.scm (subword): Fix mode spec of `value'.

	* rtl.scm (-rtx-traverse-operands): Fix debugging message
	construction.
	(tstate-make): New arg `depth'.  All callers updated.
	(tstate-depth,tstate-set-depth!): New procs.
	(tstate-incr-depth!,tstate-decr-depth!): New procs.
	(-rtx-traverse-operands): Indent debugging output by traversal depth.
	(-rtx-traverse): Ditto.  Keep track of traversal depth.

1999-09-01  Doug Evans  <devans@casey.cygnus.com>

	* sim-decode.scm (-gen-decoder+supporting cast): Move to utils-sim.scm.
	* sid-decode.scm (-gen-decoder+supporting cast): Ditto.
	* utils-sim.scm: Decoder generator support moved here.
	(-decode-equiv-entries?,-decode-sort-entries): New procs.
	(-gen-decoder-switch): Sort entries for more fall-throughs.

	* Makefile.am (gas-test,sim-test): Specify ISA when invoking cgen.
	* Makefile.in: Rebuild.
	* sim-test.scm (build-sim-testcase): Add logging message.
	* dev.scm (cload): Recognize SIM-TEST application.
	(load-stest): Set APPLICATION to SIM-TEST.

	* desc-cpu.scm (-gen-hash-defines): Add \n to output.

	* ifield.scm (-ifield-parse): Allow bit numbers up to 127.
	* mach.scm (-isa-parse): Allow insn bitsizes from 8 to 128.
	* mode.scm (mode-make-int,mode-make-uint): Allow values up to 64 bits.

	* insn.scm (syntax-break-out): Handle ${foo}.

Sun Aug 29 11:11:15 1999  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.am (noinst_PROGRAMS,noinst_LIBRARIES): Delete.
	(bin_PROGRAMS): Define.
	(CGEN_HOB_INPUT_FILES): Remove $(srcdir)/.
	(cgen-hob.c): Prepend $(srcdir)/ here.
	(APPDESCFILES,OPCODESFILES,SIMFILES,pkgdata_SCRIPTS): Define.
	(libcpu_a_SOURCES): Delete.
	(cgen_DEPENDENCIES,cgen_LDADD): Rewrite.
	(CGEN_HOB_OBJ,CGENOBJS): New variables.
	* configure.in (LIBS): Replace -Wl,-rpath with -R.
	Add AC_CHECK_LIB(guile,main).
	* Makefile.in: Rebuild.
	* doc/Makefile.in: Rebuild.
	* aclocal.m4: Rebuild.
	* config.in: Rebuild.
	* configure: Rebuild.

1999-08-28  Doug Evans  <devans@casey.cygnus.com>

	Rename rtx functions from name: to name, accept optional leading
	modifier and mode.
	VM -> VOID, DM -> DFLT, use DFLT instead of VM for default mode.
	* attr.scm (-attr-eval): Update.
	* hardware.scm (hw-mode-ok?): Rename arg mode to new-mode-name.
	(<hw-register>,mode-ok?): Disallow VOID.
	(<hw-immediate>,mode-ok?): Disallow VOID.
	(<hw-address>,mode-ok?): Disallow VOID.
	* mode.scm (mode-name?): New proc.
	(VOID): Renamed from VM.
	(DFLT): Renamed from DM.
	(mode-builtin!): Update.
	* opcodes.scm (<ifield>,gen-insert): Update.
	(<ifield>,gen-extract): Update.
	(<multi-ifield>,gen-insert,gen-extract): Update.
	* operand.scm (op:mode): Update.
	(<pc>,make!): Update.
	(op:new-mode): Update.
	(-operand-read): Update.
	* rtl.scm (-rtx-valid-types): Add OPTIONS, EXPLNUMMODE,
	NONVOIDMODE, DFLTMODE.  Rename VMMODE to VOIDMODE.
	(def-rtx-dual-mode,define-rtx-dual-mode): Delete.
	(-rtx-lazy-sem-mode): Renamed from -rtx-mode.  All callers updated.
	(rtx-make): Call -rtx-munge-mode&options.
	(rtx accessors): Rewrite.
	(rtx-pretty-name): Update.
	(-rtx-traverse-*): Update.
	(-rtx-traverse-explnummode,-rtx-traverse-nonvoidmode): New procs.
	(-rtx-traverse-voidmode,-rtx-traverse-dfltmode): New procs.
	(-rtx-make-traverse-table): Update.
	(-rtx-traverse-operands): Update.
	(-rtx-option?,-rtx-option-list?): New procs.
	(-rtx-munge-mode&options): New proc.
	(-rtx-traverse-expr): Call -rtx-munge-mode&options.
	(-rtx-traverse): Update.
	(rtx-traverse,rtx-traverse-with-locals,rtx-compile): Update.
	(rtx-compile-time-constant?): Update.
	(rtx-true?,rtx-false?,rtx-true,rtx-false): Update.
	(rtx-value): Update.
	(hw,reg,mem): Renamed from foo:.  Update.  All callers updated.
	* rtx-funcs.scm (*): Update.
	* rtl-c.scm (rtl-c-get): Update.
	(rtl-c-set-quiet,rtl-c-set-trace): Update.
	(s-c-call,s-c-raw-call): Update.
	(s-boolifop,s-convop,s-if,s-cond): Update.
	(s-case-vm,-gen-non-vm-case-test,s-case): Update.
	(-par-replace-set-dests,-par-replace-set-srcs): Update.
	(s-parallel,s-sequence): Update.
	(rtl-c-build-table): Update.
	* sem-frags.scm (-frag-hash-compute!): Update.
	(-frag-cost-compute!): Improperly handle unary,binary,trinary ops
	for temporary bug compatibility with previous version.
	(-frag-expr-locals,-frag-expr-stmts): Update.
	(-frag-compute-desired-frags,-frag-pick-best): Update.
	* semantics.scm (-simplify-expr-fn): Update.
	(rtx-simplify): Update.
	(-rtx-ref-type): Update.  Account for modifiers.
	(-build-operand!,-build-reg-operand!,-build-mem-operand!): Update.
	(-build-ifield-operand!): Update.
	(-build-known-values): Update.
	(semantic-compile): Update.
	(-gen-reg-access-defns): Update.
	(gen-semantic-code,-gen-sem-case): Update.
	(-gen-sfrag-code,-gen-sfrag-case): Update.
	* sim-cpu (gen-semantic-code): Update.
	* sim.scm (<hw-pc>,gen-write,cxmake-skip): Update.
	(<hw-register>,gen-write,gen-set-macro,cxmake-get-raw): Update.
	(-hw-cxmake-get): Update.
	(<hw-memory>,cxmake-get,gen-set-quiet,gen-write): Update.
	(<hw-index>,cxmake-get): Update.
	(<operand>,gen-type,gen-read,cxmake-get): Update.
	(<operand>,gen-set-quiet,gen-set-trace): Update.
	(<pc>,cxmake-get): Update.
	(sim-finish!): Update.
	* utils-gen.scm (-gen-ifld-extract-base): Update.
	(-gen-ifld-extract-beyond): Update.
	(gen-multi-ifld-extract): Update.
	* sid-decode.scm (-decode-expr-ifield-values-used): Update.
	* sid.scm (<hw-pc>,gen-write): Update.
	(-gen-decode-insn-globals): Update.
	(-hw-cxmake-get): Update.
	(<hw-register>,cxmake-get-raw): Update.
	(<hw-memory>,cxmake-get,gen-set-quiet,gen-write): Update.
	(<hw-index>,cxmake-get): Update.
	(<operand>,gen-type,gen-read,cxmake-get): Update.
	(<operand>,gen-set-quiet,gen-set-trace): Update.
	(<pc>,cxmake-get): Update.
	(-create-virtual-insns!): Update.
	(-decode-split-build-assertion): Update.
	* *.cpu: Update.
	* simplify.inc: Update.

1999-08-20  Doug Evans  <devans@casey.cygnus.com>

	* sim.scm (-op-gen-queued-write): Fix memory address calculation.
	Prefix queue function name with sim_ instead of @cpu@_.

	* sim.scm (-with-parallel-only?): New global.
	(option-init!): Initialize it.
	(option-set!): Set it.
	(with-parallel-only?): New proc.
	* sim-decode.scm (-gen-decode-insn-globals): Don't include parallel
	and writeback markers if with-parallel-only.
	(-gen-idesc-init-fn): Update.
	* sim-cpu.scm (cgen-cpu.h): Don't generate struct parexec if
	with-generic-write.

Wed Aug 18 15:04:30 1999  Doug Evans  <devans@canuck.cygnus.com>

	* sim-cpu.scm (-gen-semantic-fn-table): Handle unsupported insns
	with the invalid insn handler.

	* utils.scm (list-maybe-ref): New proc.

	* mach.scm (-isa-parse): Signal error if isa wasn't specified in
	define-arch.
	(-mach-parse): Signal error if mach wasn't specified in define-arch.

	* i960.cpu (test*-*): Delete `expr' arg.
	(test-op,branch-op): Update.

1999-08-09  Doug Evans  <devans@casey.cygnus.com>

	* sim.scm (gen-reg-getter-fn,gen-reg-setter-fn): New procs.
	(gen-reg-access-decl): Replace `name' arg with `hw'.  All callers
	updated.
	(gen-reg-access-defn): Ditto.
	(-gen-hw-addr): Rewrite.
	(-op-gen-queued-write): Rewrite.
	* sim-cpu.scm (-gen-cpu-reg-access-decls):
	(-gen-scache-semantic-fn): Handle with-generic-write.
	(-gen-no-scache-semantic-fn): Ditto.

1999-08-08  Doug Evans  <devans@casey.cygnus.com>

	* utils-gen.scm (gen-define-ifmt-ifields): Tweak output.

	* sim.scm (-with-generic-write?): New global.
	(option-init!): Initialize it.
	(option-set!): Set it.
	(with-generic-write?): New proc.
	(-gen-hw-addr): New proc.
	(-op-gen-queued-write): New proc.
	(-op-gen-set-{quiet,trace}-parallel): Use it if with-generic-write?.

	* sim-cpu.scm (-gen-hardware-types): Output code with parallel support
	turned off.
	(-gen-sem-switch): Preserve existing with-parallel? value.
	(-gen-sem-parallel-switch): Ditto.
	(-gen-write-case): Add /indent support.
	(cgen-write.c): Rewrite.

	* utils.scm (-current-print-state): New global.
	(make-print-state): New proc.
	(pstate-indent,pstate-set-indent!): New procs.
	(pstate-cmd?,pstate-cmd-do): New procs.
	(/indent): New global.
	(/indent-set,/indent-add): New procs.
	(string-write): Set -current-print-state.
	(-string-write): New arg pstate, all callers updated.
	Handle print-state commands.
	(-string-list-flatten): New proc.
	(string-list->string): Use it.

	* sim-cpu.scm (-gen-sem-fn-name): Move here from sim-decode.scm.
	(-gen-sem-fn-table-entry): New proc.
	(-gen-semantic-fn-table): New proc.
	(-gen-scache-semantic-fn): Make fn static.
	(-gen-no-scache-semantic-fn): Ditto.
	(cgen-semantics.c): Define macro SEM_FN_NAME.
	* sim-decode.scm (-gen-decode-insn-globals): Delete FMT,TYPE,IDX,
	FAST,FULL.  Update @cpu@_insn_sem contents.
	(-gen-semf-fn-name): Delete.
	(-gen-sem-fn-decls): Delete.
	(-gen-idesc-decls): Output prototypes of @cpu@_sem_init_idesc_table,
	@cpu@_semf_init_idesc_table.
	(-gen-idesc-init-fn): Update.  Don't initialize pointers to semantic
	handlers here.
	(cgen-decode.h): Print sfmt enum.
	* sid-decode.scm (-gen-semf-fn-name): Delete.
	* utils-gen.scm (gen-sfmt-enum-decl): New proc.

	* iformat.scm (sfmt-build): Rename sformats from fmt-foo to sfmt-foo.
	(ifmt-compute!): Ditto.
	* sim-decode.scm (-gen-decoder-switch): Ditto.
	* sid-decode.scm (-gen-decode-expr-entry): Ditto.
	(-gen-decoder-switch): Ditto.

	* insn.scm (insn-virtual?): New proc.

	* enum.scm (gen-enum-decl): Speed up, build string as list and then
	convert to string.
	* mach.scm (<arch>): attr-list is now a pair of lists.
	(current-attr-list): Rewrite.
	(current-attr-add!,current-attr-lookup): Rewrite.
	* sim.scm (gen-cpu-insn-enum-decl): Replace append with append!.

1999-08-06  Richard Henderson  <rth@cygnus.com>

	* ia64.cpu: Initial checkpoint.

1999-08-06  Doug Evans  <devans@casey.cygnus.com>

	* pmacros.scm (-pmacro-apply): Fix definition, takes only 1 arg.
	(pmacros-init!): Update .apply help string.

1999-08-03  Doug Evans  <devans@casey.cygnus.com>

	* sim.scm (-hw-gen-set-quiet-pc): Update call to SEM_BRANCH_VIA_CACHE.
	(<hw-pc>,cxmake-skip): New method.
	(<pc>,cxmake-skip): New method.
	(-gen-argbuf-fields-union): Add branch_target to `chain' member.
	(gen-argbuf-type): New member `skip_count'.
	(sim-finish!): Update calls to @cpu@_pbb_cti_chain.
	* utils-cgen.scm (atlist-cti?): Don't include SKIP-CTI insns.

	* utils-sim.scm: New file.
	* dev.scm (load-sim): Load it.
	(load-sid): Load it.
	* cgen-sid.scm: Load it.
	* cgen-sim.scm: Load it.
	* iformat.scm (<sformat>): New member sbuf, not initialized by
	default make.
	* rtx-funcs.scm (skip): Rewrite.
	* rtl-c.scm (skip): Rewrite.
	* m32r.cpu (sc,snc): Update `skip' usage.
	* mode.scm (mode-real-mode): New proc.
	* sem-frags.scm (-frag-split-by-sbuf): Rename from -frag-split-by-sfmt.
	Distinguish fragments by the <sformat-abuf> they use.
	* sim.scm (gen-profile-index-type): Delete.
	(ifield argbuf support): Move to utils-sim.scm and sim-decode.scm.
	(-gen-ifld-decoded-val): Delete, use gen-extracted-ifld-value instead.
	(hardware argbuf support): Move to utils-sim.scm and sim-decode.scm.
	(operand argbuf support): Move to utils-sim.scm and sim-decode.scm.
	(-gen-argbuf-elm): Rewrite.
	(-gen-argbuf-hw-elm): Delete.
	(-gen-argbuf-fields-union): Generate structs for each sbuf instead
	of each sfmt.
	(-sim-sformat-argbuf-list,-sim-insns-analyzed?): New globals.
	(sim-init!): Initialize them.
	(sim-analyze-insns!): Set them.
	(current-sbuf-list): New proc.
	* sim-cpu.scm (-gen-no-scache-semantic-fn): Update calls to
	gen-sfmt-op-argbuf-defns,gen-sfmt-op-argbuf-assigns.
	* sim-model.scm (-gen-model-insn-fn): Ditto.
	* sim-decode.scm (-gen-extract-decls): Delete.
	(-gen-record-argbuf-ifld,-gen-trace-argbuf-ifld): New procs.
	(<hardware-base>,gen-extract,gen-trace-extract): Move here from
	sim.scm.
	(<hw-register,gen-extract,gen-trace-extract): Ditto.
	(<hw-address,gen-extract,gen-trace-extract): Ditto.
	(-gen-op-extract,-gen-op-trace-extract): New procs.
	(gen-sfmt-op-argbuf-defns,gen-sfmt-op-argbuf-assigns): Rename from
	gen-sfmt-argvars-foo and rewrite.
	(-gen-record-args): Rewrite.
	(-gen-extract-case): Tweak.
	* sid.scm (gen-profile-index-type): Delete.
	(ifield argbuf support): Move to utils-sim.scm.
	(-gen-ifld-decoded-val): Delete, use gen-extracted-ifld-value instead.
	(hardware argbuf support): Move to utils-sim.scm and sid-decode.scm.
	(operand argbuf support): Move to utils-sim.scm and sid-decode.scm.
	(-sim-sformat-argbuf-list): New global.
	(sim-init!): Initialize it.
	(sim-analyze-insns!): Set it.
	(current-sbuf-list): New proc.
	* sid-decode.scm (-gen-argbuf-elm): Rewrite.
	(-gen-argbuf-hw-elm): Delete.
	(-gen-argbuf-fields-union): Generate structs for each sbuf instead
	of each sfmt.
	(-gen-record-argbuf-ifld,-gen-trace-argbuf-ifld): New procs.
	(-gen-extract-decls): Delete.
	(<hardware-base>,gen-extract,gen-trace-extract): Move here from
	sid.scm.
	(<hw-register,gen-extract,gen-trace-extract): Ditto.
	(<hw-address,gen-extract,gen-trace-extract): Ditto.
	(-gen-op-extract,-gen-op-trace-extract): New procs.
	(gen-sfmt-op-argbuf-defns,gen-sfmt-op-argbuf-assigns): Rename from
	gen-sfmt-argvars-foo and rewrite.
	(-gen-record-args): Rewrite.
	(-gen-extract-case): Tweak.

	* cgen-gh.c (gh_putc,gh_puts): New functions.
	* cgen-gh.h (gh_putc,gh_puts): Declare them.
	* cos.c (_object_print_elms,_object_print): Use them.
	* hob-sup.c (fastcall_print): Use them.
	* configure.in: Check for scm_gen_puts, scm_puts.
	* config.in: Rebuild.
	* configure: Rebuild.
	* aclocal.m4: Rebuild.
	* Makefile.in: Rebuild.

	* dev.scm (load-opc): Use load instead of maybe-load.
	(load-gtest,load-sim,load-stest): Ditto.
	(load-sid): Ditto.

1999-07-23  Doug Evans  <devans@casey.cygnus.com>

	* sid-cpu.scm (-gen-sem-switch-engine): Move definition of `count'
	up to avoid g++ 'goto crosses initialization' warning.
	(-gen-sfrag-engine-fn): Delete vpc arg to NEXT_FRAG.
	(-gen-sfrag-case): Update use of NEXT_FRAG.

1999-07-22  Doug Evans  <devans@casey.cygnus.com>

	* cos.c (cos_init): Protect _make_x_symbol from garbage collection.

	* read.scm: Load sem-frags.scm.
	* sem-frags.scm (*): Lots rewritten.
	* sid.scm (-with-sem-frags?): New global
	(with-sem-frags?): New proc.
	(option-init!): Initialize -with-sem-frags?.
	(option-set!): Recognize with-sem-frags.
	(sim-init!): Call sim-sfrag-init! if with-sem-frags.
	* sid-cpu.scm (cgen-sem-switch.cxx): Generate semantic frag version
	if asked to.
	(-gen-sfrag-engine-decls): New proc.
	(-gen-sfrag-code,-gen-sfrag-case,-gen-sfrag-enum-decl): New procs.
	(-gen-sfrag-engine-frag-table,-gen-sfrag-engine-fn): New procs.
	(-gen-sfrag-engine): New proc.
	(-gen-sem-case): Emit setup-semantics if specified.
	(-gen-sem-switch-engine): Update init/use of computed goto label.
	* sid-decode.scm (-gen-decode-expr-entry): Fetch ifield values
	from local vars.
	(-gen-idesc-decls): Replace sem_address with cgoto.
	(-gen-scache-decls): Rewrite definition of `execute' member.
	* arm.cpu (arm isa): Enable decode-splits.
	* arm7.cpu (multiply insns): Rename result to mul-result.

	Rename decode-specialize to decode-split.
	* decode.scm (*): Update.
	* insn.scm (*): Update.
	* mach.scm (*): Update.
	* sid.scm (*): Update.

1999-07-19  Doug Evans  <devans@casey.cygnus.com>

	Record objects as a smob.
	* cos.c (scm_tc16_object): New static global.
	(cos_init): Initialize it.
	(OBJECT_P,OBJECT_ELEMENTS,OBJECT_CLASS_DESC): Update macros.
	(OBJECT_CLASS,OBJECT_ELEMENT_OFFSET): Update.
	(_object_tag): Delete.
	(_object_make_smob): New function.
	(_object_make_x,_object_make_with_values_x): Rewrite.
	(_object_elements,_object_class_desc): Rewrite.
	(_object_copy,object_p): Rewrite.
	(_object_specialize): Rewrite.
	(_object_print_elms,_object_print): New functions.
	(object_smob): New static global.
	(default_make_x): Use OBJECT_ELEMENT_OFFSET instead of magic number.

	* cos.c (_make_x_symbol): New static global.
	(object_make): Use it.
	(cos_init): Initialize it.

1999-07-15  Doug Evans  <devans@casey.cygnus.com>

	* rtl-c.scm (ifield): Back out last patch, use estate-ifield-var?
	instead to determine whether to use FLD macro.
	(<rtl-c-eval-state>): New member ifield-var?.
	(<rtl-c-eval-state>,vmake!): Recognize #:ifield-var?.
	* utils-gen.scm (-gen-ifld-extract-base): Specify #:ifield-var? #f.
	(-gen-ifld-extract-beyond,gen-multi-ifld-extract): Ditto.

	* rtl.scm (rtx-sequence-assq-locals): New proc.

	* cos.scm (-object-error): Don't crash on non-objects.

	* Makefile.am (CLEANFILES): Add hobbit.
	* Makefile.in: Rebuild.

	* rtl-c.scm (s-c-call): Delete unnecessary code.

1999-07-14  Doug Evans  <devans@casey.cygnus.com>

	* rtl-c.scm (ifield): Always reference value via `FLD'.

	* cos.c (elm_bound_p): Return problem SCM boolean values.

	* utils-cgen.scm (display-argv): New proc.
	* cgen-opc.scm (cgen): Call it.
	* cgen-sim.scm (cgen): Ditto.
	* cgen-gas.scm (cgen): Ditto.
	* cgen-stest.scm (cgen): Ditto.
	* cgen-sid.scm (cgen): Ditto.

1999-07-05  Doug Evans  <devans@casey.cygnus.com>

	* opc-asmdis.scm (-gen-parse-switch): New local var `junk'.
	* opc-ibld.scm (-gen-insert-switch): Initialize result to NULL.
	(-gen-extract-switch): Initialize result to 1.
	* opcodes.scm (gen-ifield-default-type): New proc.
	(gen-ifield-value-decl): Renamed from gen-ifield-type.  All callers
	updated.
	(<hw-index>,gen-insert): Handle non-ifield indices.
	(<hw-index>,gen-extract): Ditto.
	(<hw-asm>,gen-parse): Ditto.
	(<hw-asm>,gen-print): Ditto.
	(<keyword>,gen-parse): Ditto.
	(<keyword>,gen-print): Ditto.
	(<operand>,gen-fget): Ditto.
	(<operand>,gen-fset): Ditto.

	* sim.scm (-gen-hw-index-raw): Handle scalar indices.
	(-gen-hw-index): Ditto.
	* sid.scm (-gen-hw-index-raw): Handle scalar indices.
	(-gen-hw-index): Ditto.

	* sem-frags.scm: New file.

	* attr.scm (attr-parse): Add better checking of input.

	* hardware.scm (-hw-parse-getter): Renamed from -hw-parse-get.
	All uses updated.
	(-hw-parse-setter): Renamed from -hw-parse-set.  All uses updated.

	* ifield.scm (ifld-nil?): New proc.

	* operand.scm (<operand>): New members getter,setter.
	(<operand>,make!): New args getter,setter.  All uses updated.
	(op:getter,op:setter): New procs.
	(<hw-index>,field-start): Return 0 for non-ifield indices.
	(<hw-index>,field-length): Return 0 for non-ifield indices.
	(-operand-parse-getter,-operand-parse-setter): New procs.
	(-operand-parse): New args getter,setter.  All callers updated.
	Always use hw-index-scalar for scalar operands.
	(-operand-read): Handle getter,setter.
	(define-full-operand): New args getter,setter.  All uses updated.
	* semantics.scm (-build-ifield-operand!): Update.
	(-build-index-of-operand!): Update.
	* sim.scm (<operand>,cxmake-get): If operand has getter, use it.
	* simplify.inc (define-normal-operand): Update.

	* rtl.scm (abs,sqrt,cos,sin,min,max,umin,umax): New rtx fns.
	* rtl-c.scm (s-unop): Indirect fp ops through fpu op vector.
	(s-binop,s-cmpop,s-convop): Ditto.
	(abs,sqrt,cos,sin,min,max,umin,umax): New rtx fns.
	* sparc.cpu (insn-fmt2): Add FPOPS1,FPOPS2.
	(fcc-tests): New insn-enum.
	(fcc-value): Rename from fcc-type.
	* sparcfpu.cpu: New file.  All fp support moved here.

	* rtl.scm (<rtx-func>): New member class.
	(rtx-class-*?): New procs.
	(def-rtx-node): New arg class.  All callers updated.
	(def-rtx-syntax-node,def-rtx-operand-node,def-rtx-dual-node): Ditto.
	* rtx-funcs.scm (*): Specify class.

	* utils-cgen.scm (context-make-reader): New proc.

	* utils.scm (assert-fail-msg): New variable.
	(assert): Use it.
	(list-drop,list-tail-drop): New procs.

1999-06-22  Doug Evans  <devans@casey.cygnus.com>

	* desc-cpu.scm (-gen-hash-defines): Restore generation of
	CGEN_MIN_INSN_SIZE deleted on March 22.

	* ifield.scm (<ifield>,needed-iflds): New method.
	(<multi-ifield>,needed-iflds): New method.
	(ifld-needed-iflds): New proc.
	(multi-ifield?): New proc.
	* iformat.scm (<sfmt>): Delete member ifmt.  New members length,iflds.
	(-sfmt-search-key): Include insn length in key.
	(-sfmt-order-iflds,-sfmt-used-iflds): New procs.
	(<fmt-desc>): Delete members ifmt-key,sfmt-key.  New member used-iflds.
	(-ifmt-lookup-ifmt!): Compute key here.
	(-ifmt-lookup-sfmt!): Compute key here.  Delete arg ifmt.
	All callers updated.
	(ifmt-build): Delete arg desc.  New args search-key,iflds.
	All callers updated.
	(sfmt-build): Delete args desc,ifmt.  New args search-key,cti?,
	in-ops,out-ops,sorted-used-iflds.  All callers updated.
	* minsn.scm (minsn-make-alias): Use insn-set-ifmt!.  Update call
	to ifmt-build.
	* operand.scm (op-iflds-used): New proc.
	* utils-gen.scm (gen-ifld-type): Move here from sim.scm
	and sim-cpu.scm.
	And from sid.scm,sid-cpu.scm as well.
	(gen-ifld-extract-decl,-gen-ifld-extract-base): Ditto.
	(-gen-extract-word,-gen-ifld-extract-beyond): Ditto.
	(gen-ifld-extract,gen-multi-ifld-extract): Ditto.
	(gen-extracted-ifld-value): Ditto.
	(-extract-chunk-specs): Ditto.
	(gen-define-ifields,gen-define-ifmt-ifields): Ditto.
	(-extract-chunk,-gen-extract-beyond-var-list): Ditto.
	(gen-extract-ifields,gen-extract-ifmt-ifields): Ditto.
	(-extract-insert-subfields): New function.
	* sim.scm (gen-record-argbuf-ifld): Renamed from gen-ifld-extract.
	(gen-record-argvar-ifld): Renamed from gen-ifld-extract-argvar.
	* sim-cpu.scm (-gen-extract-ifmt-macro): Replace calls to
	gen-define-ifields with gen-define-ifmt-ifields.  Ditto for
	gen-extract-foo.
	(-gen-no-scache-semantic-fn): Ditto.
	(-gen-sem-case): Ditto.
	(-gen-read-case): Update calls to gen-define-ifields,
	gen-extract-ifields.
	* sim-decode.scm (-gen-record-args): Update.
	(-gen-sfmt-argvars-assigns): Update.
	(-gen-extract-case): Update.
	* sim-model.scm (-gen-model-insn-fn): Replace calls to
	gen-define-ifields with gen-define-ifmt-ifields.  Ditto for
	gen-extract-foo.
	* sid.scm (gen-ifld-argbuf-defn): Use gen-ifld-type.
	(gen-record-argbuf-ifld): Rename from gen-ifld-extract.
	(gen-record-argvar-ifld): Rename from gen-ifld-extract-argvar.
	* sid-decode.scm (-gen-decode-expr-entry): Update calls to
	gen-define-ifields, gen-extract-ifields.
	(-gen-record-args): Update.
	(gen-sfmt-argvars-assigns): Update.
	(-gen-extract-case): Replace calls to gen-define-ifmt-ifields
	with gen-define-ifields.  Ditto for gen-extract-foo.
	(-gen-decode-fn): Use gen-ifld-extract-decl/gen-ifld-extract
	procs rather than method calls.

1999-06-18  Doug Evans  <devans@casey.cygnus.com>

	* sid.scm (-create-virtual-insns!): New local `context', pass it
	to insn-read.

	* rtl.scm (-rtx-traverse): Output symbol shortcuts in source form,
	(operand name) not (operand object), (local name) not (local object).
	(rtx-traverse-with-locals): New proc.
	(-compile-expr-fn): New proc.
	(rtx-compile): Rewrite.
	* rtl-c.scm (rtl-c-get): Handle operand/local names for src arg.
	(rtl-c-set-quiet): Don't accept operand/local names for dest arg.
	(rtl-c-set-trace): Ditto.
	(operand define-fn): Recognize operand name argument.
	(local define-fn): Recognize sequence temp name argument.
	* rtx-funcs.scm (operand): Argument is operand name, not object,
	so call current-op-lookup.
	(local): Similarily, so call rtx-temp-lookup.

	* rtl.scm (rtx-field?): Use rtx-name instead of car.
	(rtx-operand?): Ditto.
	(rtx-pretty-name): Ditto.
	(rtx-local-obj): Flag symbol argument as an error.
	(rtx-local-name): New proc.
	(rtx-sequence-locals,rtx-sequence-exprs): New procs.

	* rtl.scm (-rtx-traverse-operands): Fix debugging output of arg-types.

	* read.scm (debug-repl): Renamed from -debug-repl.  All callers
	updated.

	* arm7.cpu (do-word/byte-store): Use (trunc: QI rd) rather than
	(and: QI rd #xff).

	* hobbit.scm (*reckless-s->c-fun-table*): Add fastcall4, fastcall6.
	(*floats-s->c-fun-table*): Ditto.
	* hobbit.c,hobbit.h: Rebuild.
	* rtl.scm (-rtx-traverse-expr): Use fastcall6.
	* semantics.scm (rtx-simplify): Use /fastcall-make.

	* iformat.scm (-sfmt-search-key): Don't include memory modes.

	* insn.scm (<insn>): Delete members condition, compiled-condition.
	(<insn>,make!): Update
	(<insn> getters,setters): Update.
	(-insn-parse,insn-read,define-full-insn): Update.
	* minsn.scm (minsn-make-alias): Update.
	* iformat.scm (ifmt-analyze): Delete insn-condition reference.
	(ifmt-compute!): Ditto.
	* sim.scm (sim-finish!): Update.
	* simplify.inc: (define-normal-insn): Update.
	* sid-cpu.scm (gen-semantic-code): Update.

	* iformat.scm (-ifmt-lookup-ifmt!): Use insn-set-ifmt!.
	(-ifmt-lookup-sfmt!): Use insn-set-sfmt!.
	(ifmt-compute!): Ditto.

1999-06-16  Doug Evans  <devans@casey.cygnus.com>

	* minsn.scm (minsn-compute-iflds): Print better error message for
	missing ifields.

1999-06-12  Doug Evans  <devans@casey.cygnus.com>

	* rtl.scm (tstate->estate): Don't copy over expr-fn.

	* Makefile.am (HOBFLAGS): New variable.
	(cgen-hob.c): Use it.
	(hobbit.c): Use it.
	(libcpu_a_SOURCES): Add hob-sup.c.
	(hob-sup.o): New rule.
	* Makefile.in: Rebuild.
	* cgen.c: #include hob-sup.h.
	(cgen_init_c): Call hobbit_init_support.
	* hobbit.scm (*fastcall-make*,*c-symbol*): New variables.
	(*special-scm->c-functions*): Add them.
	(display-c-expression): Handle *c-symbol*.
	(*reckless-s->c-fun-table*): Add *fastcall-make*, fastcall5.
	(*floats-s->c-fun-table*): Ditto.
	(normalize): Recognize /fastcall-make.
	(normalize-fastcall-make): New proc.
	* hobbit.c,hobbit.h: Rebuild.
	* hob-sup.scm: New file.
	* hob-sup.c: New file.
	* hob-sup.h: New file.
	* read.scm: Load hob-sup.scm.
	* rtl.scm (-rtx-name-list): New variable.
	(rtx-name-list): New proc.
	(rtx-lookup): Try symbol first.
	(def-rtx-node): Add name to -rtx-name-list.
	(def-rtx-syntax-node,def-rtx-operand-node,def-rtx-macro-node): Ditto.
	(-rtx-traverse-anymode): New proc.
	(-rtx-traverse-{emode,intmode,floatmode,nummode,vmmode}): New procs.
	(-rtx-traverse-{rtx,setrtx,testrtx,condrtx,casertx}): New procs.
	(-rtx-traverse-{locals,env,attrs,symbol,string,number}): New procs.
	(-rtx-traverse-{symornum,object}): New procs.
	(-rtx-make-traverse-table): Rewrite.
	(-rtx-traverse-operands): Rewrite arg-types handling.
	Handle #f result of traverser.
	(-rtx-traverse): Renamed from -rtx-traverse-normal.
	Move debug handling here.
	(-rtx-traverse-debug): Delete.
	(rtl-finish!): Change -rtx-traverse-table into list of handlers
	for each rtx.
	* semantics.scm (semantic-compile:process-expr!): Fix call to
	-rtx-traverse.
	* utils.scm (map1-improper): New proc.

1999-06-08  Doug Evans  <devans@casey.cygnus.com>

	* arm.sim (h-tbit): Replace FUN-ACCESS with FUN-SET.
	(h-mbits): Ditto.
	* sid.scm (-hw-cxmake-get): s/FUN-ACCESS/FUN-GET/.
	(-hw-gen-set-quiet): s/FUN-ACCESS/FUN-SET/.
	(<operand>,cxmake-get): Tweak.
	(sim-finish!): Delete FUN-ACCESS attribute.  Create FUN-GET,FUN_SET.

1999-06-07  Doug Evans  <devans@casey.cygnus.com>

	* thumb.cpu (dnti): Delete timing spec.
	(all insn): Update.

	* arm.cpu (arm isa): New fields condition, setup-semantics.
	(thumb isa): New field setup-semantics.
	(h-gr): Add attribute CACHE-ADDR.
	* arm7.cpu (dnai): Delete condition.
	(eval-cond): Delete.

	* mach.scm (<isa>): New member setup-semantics.
	(-isa-parse-setup-semantics): New proc.
	(-isa-parse): New arg setup-semantics.
	(-isa-read): Recognize setup-semantics.

	* sid-cpu.scm (gen-extract-fields): Split into two:
	gen-extract-ifields, gen-extract-ifmt-ifields.
	(-gen-scache-semantic-fn): Delete `taken_p'.  Delete
	tracing begin/end messages (done by caller now).
	(-gen-sem-case): Delete `taken_p'.  Add npc,br_status.  Delete
	tracing begin/end messages (done by x-before,x-after virtual insns).
	(-gen-sem-switch-engine): Redo vpc initialization.  Save vpc at
	end so don't have to look it up again next time.
	* sid-decode.scm (-decode-expr-ifield-values): New proc.
	(-decode-expr-ifield-tracking-key): New proc.
	(-decode-expr-ifield-tracking): New proc.
	(-decode-expr-ifield-values-used): New proc.
	(-decode-expr-ifield-mark-used!): New proc.
	(-gen-decode-expr-set-itype): New proc.
	(-gen-decode-expr-entry): Rewrite.
	(-gen-decode-table-entry): New proc.
	(-gen-decoder-switch): Use it.
	(-gen-virtual-insn-finder): New proc.
	(-gen-argbuf-elm): Move here from sid.scm.
	(-gen-argbuf-hw-elm): Ditto.
	(-gen-argbuf-fields-union): Add entries for chain,before insns.
	(-gen-scache-decls): Add `cond' member to @prefix@_scache for
	conditional-execution isas.
	(-gen-decode-fn): Record conditional-exec ifield.
	* sid.scm (-current-pbb-engine?): New global.
	(current-pbb-engine?,set-current-pbb-engine?!): New procs.
	(<ifield>,gen-ifld-extract): New arg `indent'.
	(<multi-ifield>,gen-ifld-extract): Ditto.
	(-hw-gen-set-quiet-pc): Add pbb support.  Delete `taken_p'.
	(-op-gen-set-trace): Don't print tracing messages for pbb engine.
	(-gen-arch-model-decls): Only scan real insns.
	(scache-engine-insns,pbb-engine-insns): New procs.
	(-create-virtual-insns!): New proc.
	(sim-finish!): Call it.
	(-decode-specialize-insn?): New proc.
	(-decode-specialize-build-assertion): New proc.
	(-decode-specialize-insn-1): New proc.
	(-decode-specialize-insn): New proc.
	(-fill-sim-insn-list!): New proc.
	(sim-analyze!): Create copies of insns to be specialized.
	* utils-cgen.scm (obj-set-name!): New proc.

	* attr.scm (-attr-eval): Rewrite calls to rtx-simplify/rtx-compile.
	* iformat.scm (ifmt-analyze): Pass `insn' to semantic-compile,
	semantic-attrs.
	(ifmt-compute!): Delete arg `arch'.  Result is list of iformats,
	sformats.
	* mach.scm (arch-analyze-insns!): Update call to ifmt-compute!.
	* rtl-c.scm (rtl-c-get): Use DM for default mode instead of VM.
	Avoid infinite loop when rtx-eval-with-estate leaves expr alone.
	(attr): Rewrite test for insn owner.
	(member): New rtx function.
	* rtl.scm (rtx-* accessors): Define as cxr directly rather than
	as separate function.
	(rtx-ifield?,rtx-ifield-name): New procs.
	(rtx-operand-obj): Rewrite.
	(rtx-operand-name): New proc.
	(rtx-cmp-op-mode,rtx-cmp-op-arg): New procs.
	(rtx-number-list-values,rtx-member-value,rtx-member-set): New procs.
	(tstate-make): New args owner, known.  All callers updated.
	(tstate-known-lookup): New proc.
	(rtx-traverse): New arg owner.  All callers updated.
	(rtx-make-bool): New proc.
	(rtl-find-ifields): Rewrite.
	(rtx-simplify,rtx-simplify-eq-attr-{insn,mach}): Moved to ...
	* semantics.scm: ... here.
	(rtx-const-equal,rtx-const-list-equal): New procs.
	(-build-known-values): New proc.
	(semantic-compile): New arg `insn'.  Call rtx-simplify.
	(semantic-attrs): Ditto.
	* rtx-funcs.scm (member,number-list): New rtx functions.

	* attr.scm (attr-remove-meta-attrs-alist): Delete leading '-' in name.
	Rewrite.  Delete arg `all-attrs'. All callers updated.
	(attr-remove-meta-attrs): Delete leading '-' in name.  All callers
	updated.
	* utils-cgen.scm (gen-bool-attrs): Remove meta attrs.

	* decode.scm (subdtable-add): Handle `expr' entries.
	(exprtable-entry-make): Use vector.  Record ifields refered to by expr.
	(exprtable-entry-*): Update.
	(exprtable-entry-iflds): New proc.
	(exprentry-cost): New proc.
	(exprtable-sort,-gen-exprtable-name): New procs.
	(exprtable-make): New arg `name'.  All callers updated.  use vector.
	(exprtable-*): Update.
	(-build-decode-table-entry): Don't issue collision warning if all are
	specialized insns.  Sort exprtable entries before building table.

	* read.scm (-reader-process-expanded-1): Move pretty printing of
	input to logging level 4.

	* utils.scm (string-list->string): New proc.

	* insn.scm (<insn>): Define setters for ifield-assertion, condition,
	semantics.
	(insn-read): Delete leading '-' in name.  All callers updated.
	(real-insn?): New proc.
	(real-insns): Rewrite.
	(insn-has-ifield?): New proc.
	(insn-builtin!): Create insn attribute SPECIALIZED.

	* mach.scm (<arch>): Delete member app-data.
	(current-raw-insn-list): New proc.
	(insn-list-car,insn-list-splice!): New procs.
	(<decode-specialize>): New class.
	(-isa-parse-decode-specialize): New proc.
	(-isa-parse-decode-specializes): New proc.
	(<isa>): New members `condition', `decode-specializes'.
	(-isa-parse-condition): New proc.
	(-isa-parse): New args condition, decode-specializes.
	(-isa-read): Recognize condition, decode-specializes.
	(-isa-add-decode-specialize!): New proc.
	(modify-isa): New proc.
	(isa-conditional-exec?,state-conditional-exec?): New procs.
	(arch-init!): New reader command `modify-isa'.

	* mode.scm (mode-class-signed?,mode-class-unsigned?): New procs.
	(mode-signed,mode-unsigned?): New procs.

Thu Jun  3 16:00:40 1999  Doug Evans  <devans@canuck.cygnus.com>

	* types.scm (<array>): New method get-shape.
	* hardware.scm (<hardware-base>): Forward get-shape,get-num-elms
	onto type.
	(hw-shape,hw-num-elms): New procs.
	* sim.scm (<hw-register>,gen-profile-index-type): Use "unsigned short"
	if there's more than 255 registers.
	* sid.scm (<hw-register>,gen-profile-index-type): Ditto.

	* hardware.scm (-hw-parse): Flag as error CACHE-ADDR specified
	with get/set specs.

1999-05-21  Doug Evans  <devans@casey.cygnus.com>

	* cgen-sid.scm (sim-arguments): Add -X.
	* sid-cpu.scm (-gen-hardware-types): Comment out scache vars.
	(-gen-all-semantic-fns): Don't include PBB support virtual insns.
	(-gen-sem-case): Use CASE/NEXT macros again.  Tweak indenting.
	Simplify by supporting pbb engine only.
	(-gen-sem-switch-init): New proc.
	(-gen-sem-switch-engine): Rename from -gen-sem-switch-fn.
	(cgen-sem-switch.cxx): New proc.
	* sid-decode.scm (-gen-decode-insn-globals): Replace with-sem-switch?
	with with-pbb?.  Support dual scache/pbb engines.
	(-gen-idesc-decls): Replace with-sem-switch? with with-pbb?.
	Support dual scache/pbb engines.
	(cgen-decode.h): Generate semantic fn decls if with-scache?.
	* sid.scm (*) with-pbb? replaces with-sem-switch?.
	(sim-finish!): Create pbb support virtual insns if with-pbb?.

1999-05-10  Ben Elliston  <bje@cygnus.com>

	* arm7.cpu: Remove coprocessor related fields, operands and insn
	definitions for now. Take the undefined instruction trap instead.
	(ldmda-wb): New instruction.
	(ldmib-wb): Likewise.
	(ldmdb-wb): Likewise.
	(stmdb-wb): Likewise.
	(stmib-wb): Likewise.
	(stmda-wb): Likewise.

1999-05-08  Doug Evans  <devans@casey.cygnus.com>

	* sid.scm (<hw-memory>,cxmake-get): Call GETMEM method, not function.
	(<hw-memory>,gen-set-quiet): Call SETMEM method, not function.

	* utils-cgen.scm (keyword-list->arg-list): Fix call to substring,
	hobbit can't handle optional third arg.

1999-05-07  Doug Evans  <devans@casey.cygnus.com>

	* arm.cpu (h-tbit): Delete set spec.
	(h-mbits): Don't call arm_mbits_set in set spec.
	* arm.sim: New file.
	* hardware.scm (modify-hardware): New proc.
	(hardware-init!): Add modify-hardware command.
	* sid.scm (-hw-cxmake-get): Use method call if FUN-ACCESS specified.
	(-hw-gen-set-quiet): Ditto.
	(sim-finish!): Call invalid_insn method.  Define FUN-ACCESS builtin
	hardware attribute.  Load $arch.sim file if present.
	* utils-cgen.scm (keyword-list?): New proc.
	(keyword-list->arg-list,arg-list-validate-name): New procs.
	(arg-list-check-no-args,arg-list-symbol-arg): New procs.

	* arm7.cpu (eval-cond): Pass pc to @cpu@_eval_cond handler.

	* sid-cpu.scm (-gen-hardware-types): Rename @cpu@_cpu to
	@cpu@_cpu_cgen.

	* attr.scm (obj-prepend-atlist!): New proc.

	* opc-opinst.scm (cgen-opinst.c): Analyze instructions if necessary.

	* sid.scm (<operand>,profilable?): Use op:type.
	* sim.scm (<operand>,profilable?): Use op:type.

1999-05-04  Doug Evans  <devans@casey.cygnus.com>

	* utils.scm (find-index,find): Be more stack friendly.

	* arm7.cpu (arith-imm-op): Compute pc before setting cpsr.
	(bic-imm): Ditto.

1999-05-01  Doug Evans  <devans@casey.cygnus.com>

	* arm.cpu (h-gr-usr): New hardware element.
	(h-gr-fiq,h-gr-svc,h-gr-abt,h-gr-irq,h-gr-und): New hardware elements.
	(arm-mode): New keyword.
	(h-mbits): Add set spec.
	(h-spsr): Implement get/set specs.

	* read.scm: Load slib/pp.scm, slib/genwrite.scm.
	(-reader-process-expanded-1): Pretty print logging output.

	* sid-cpu.scm (-gen-reg-access-defns): Make getters `const'.
	(cgen-cpu.h): Print enums before hardware elements.
	(cgen-semantics.cxx): @arch@-cgen.h renamed to @arch@-main.h.
	* sid-decode.scm (cgen-decode.cxx): Ditto.
	* sid-model.scm (cgen-model.cxx): Ditto.

	* utils-cgen.scm (context-error): Accept variable number of
	trailing args.

	* rtx-funcs.scm (error:): New rtx function.
	* rtl-c.scm (s-case-vm): New proc.
	(-gen-non-vm-case-get,s-case-non-vm): New procs.
	(s-case): Simplify, handle non-VM result.
	(error:): New rtx function.

1999-04-30  Doug Evans  <devans@casey.cygnus.com>

	* arm.cpu (h-pc): Add set spec to zero bottom bits.
	(test-hi,test-ls): Fix cbit handling.
	(shift-type,h-operand2-shifttype): Move here ...
	* arm7.cpu: ... from here.
	(set-cond,set-cond-maybe,dnix): Delete, unused.
	(set-zn-flags,set-logical-cc,set-add-flags,set-sub-flags): Move ...
	* arm.cpu: ... to here.
	* thumb.cpu (cmp,alu-cmp): Use set-sub-flags.
	(alu-cmn): Use set-add-flags.
	(alu-tst): Use set-zn-flags.
	(alu-cmp): Use set-sub-flags.
	(lsl,lsr,asr): Set condition codes.
	(add,addi,sub,subi,mov,addi8,subi8): Ditto.
	(alu-op): Split into three: alu-logical-op,alu-arith-op,
	alu-shift-op.
	(hireg-op): Split sem-fn into lo-dest-sem-fn,hi-dest-sem-fn.
	All callers updated.
	(sub-sp): Rename from add-sp-neg.
	(f-lbwl-offset): Delete.
	(f-lbwl-hi,f-lbwl-lo): New ifields.
	(lbwl-hi,lbwl-lo): Update.
	(bl-hi): Add 4 to pc.
	(push-reg,pop-reg): Simplify.
	(push,push-lr): Push registers in correct order.
	(pop,pop-pc): Pop registers in correct order.
	(save-reg-inc,load-reg-inc): Simplify.
	(ldmia): Save registers in correct order.

1999-04-30  Ben Elliston  <bje@cygnus.com>

	* arm7.cpu (f-op-hdt): Remove; unused.
	(f-ror-imm8-value,f-ror-imm-rotate): New fields.
	(f-ror-imm8): New multi-ifield.
	(f-operand2-bit7): Remove; use the generic `f-bit7' instead. All
	callers updated.
	(f-uimm12): New field.
	(ror-imm8): New operand.
	(uimm12): Likewise.
	(hdt-offset8): Reinstate operand.
	(offset4-hi,offset4-lo): Remove.
	(set-cond): Remove macro; unused.
	(set-cond-maybe): Likewise.
	(load-word/byte): Use uimm12 operand for a true 12-bit immediate.
	(store-word/byte): Likewise.
	(load-halfword): Use hdt-offset8 multifield operand instead of two
	4-bit operands that are explicitly combined by semantic code.
	(do-halfword-store): Bug fix. Set address when not preindexing.
	(store-halfword): Also use hdt-offset8 operand.
	(arith-op): Avoid clobbering source registers when one of them is
	the destination register.
	(arith-imm-op): Likewise.
	(tst-imm): Use ror-imm8 operand. Handle special case of rot 0.
	(teq-imm): Likewise.
	(ldm-p): Rename to ldmdb.
	(stm-pw): Rename to stmdb-wb.
	(multi-action): New macro; test reg-list bits and execute a
	semantic fn if the bit is set.
	(ldmda,ldmib,ldmia,ldmia-wb,ldmdb): New multiple load insns.
	(stmdb,stmib,stmia,stmia-wb,stmda,stmdb-wb): Store insns.
	(all insns): Use dnai entries for simplicity rather than dni.
	(*): Use short-form of (const ..).

1999-04-29  Doug Evans  <devans@casey.cygnus.com>

	* rtl.scm (<rtx-func>): Rename member type to style.  Rename
	member eval to evaluator.
	(rtx-foo accessors): Rename from rtx:foo.  All callers updated.
	(tstate-make): Delete arg op-fn.  All callers updated.
	(tstate-op-fn,tstate-set-op-fn!): Delete.
	(rtx-traverse): Delete op-fn arg.  All callers updated.
	* semantics.scm (-simplify-for-compilation-process-expr): New proc,
	split out of -simplify-for-compilation.

	* Makefile.am (CGEN_NONHOB_FILES,CGENFILES): New variables.
	(cgen_DEPENDENCIES): Add stamp-cgen.
	(stamp-cgen): New rule.
	* Makefile.in: Rebuild.

	* rtl-c.scm (enum:): Define emitter for.
	* rtl.scm (rtx-constant?): Rename from rtx-const? and check for
	enums as well.
	(rtx-constant-value,rtx-enum-value): New procs.
	(-rtx-traverse-normal): Expand enum-value to (enum enum-value).
	(rtx-compile-time-constant?): Return #t for enums.
	(rtx-true?,rtx-false?): Handle enums.
	(rtx-simplify-eq-attr-mach): Use rtx-true,rtx-false instead of
	building result by hand.
	(rtx-simplify-eq-attr-insn): Ditto.
	* rtx-funcs.scm (enum:,enum): New rtx functions.

	* mach.scm (<arch>): New members insns-analyzed?, semantics-analyzed?,
	aliases-analyzed?.
	(arch-analyze-insns!): New proc.
	* opcodes.scm (opcodes-analyze!): Call arch-analyze-insns! instead
	of calling ifmt-compute! directly.
	* sid.scm (-sim-insns-analyzed?): Delete.
	(sim-analyze!): Call arch-analyze-insns! instead of calling
	ifmt-compute! directly.
	* sim.scm (-sim-insns-analyzed?): Delete.
	(sim-analyze!): Call arch-analyze-insns! instead of calling
	ifmt-compute! directly.

	* utils.scm (string-take-with-filler): New proc.
	(string-take): Use it.

	* pgmr-tools.scm: New file.
	* read.scm: Load it.
	* insn.scm (pretty-print-insn-format): Move to pgmr.scm.

	* insn.scm (insn-base-mask): Renamed from insn:mask.
	All callers updated.
	(insn-base-mask-length): Renamed from insn:mask-length.
	All callers updated.
	(insn-foo): Renamed from insn:foo.  All callers updated.
	* minsn.scm (minsn-foo): Renamed from minsn:foo.  All callers updated.
	* iformat.scm (compute-insn-base-mask-length): Renamed from
	compute-insn-mask-length.  All callers updated.
	(compute-insn-base-mask): Renamed from compute-insn-mask.
	All callers updated.

	* enum.scm (-enum-parse-prefix): New proc.
	(<enum>,make!): Don't parse enum values here.
	(-enum-parse): Do it here.  Call -enum-parse-prefix.
	(define-full-insn-enum): Ditto.
	(enum-vals-upcase): New proc.
	* hardware.scm (define-keyword): Make enum prefix uppercase.
	* hobscmif.h (CHAR_LOWERP,CHAR_UPPERP,CHAR_WHITEP): New macros.

	* ifield.scm (<ifield>,field-mask): Allow container to be #f.
	(<ifield>,field-extract): New method.
	(<multi-ifield>,field-extract): New method.
	(ifld-extract): New proc.
	* opcodes.scm (ifld-insert-fn-name): Renamed from ifld-insert.
	(ifld-extract-fn-name): Renamed from ifld-extract.

	* ifield.scm (ifld-new-value): Renamed from ifield-make.
	All callers updated.

	* ifield.scm (ifld-lsb0?): New proc.
	(sort-ifield-list): New arg up?.  All callers updated.
	* iformat.scm (compute-insn-mask): Get lsb0? flag from argument,
	rather than global state.

1999-04-27  Doug Evans  <devans@casey.cygnus.com>

	* insn.scm (pretty-print-insn-format): New proc.

	* Makefile.in: Rebuild.
	* aclocal.m4: Rebuild
	* configure: Rebuild.

Mon Apr 26 10:30:18 1999  Doug Evans  <devans@canuck.cygnus.com>

	* configure.in (AM_INIT_AUTOMAKE): Update version to 0.7.2.
	* configure: Rebuild.
	* aclocal.m4: Rebuild.
	* Makefile.in: Rebuild.
	* doc/Makefile.in: Rebuild.
	* doc/version.texi: Rebuild.

1999-04-25  Doug Evans  <devans@casey.cygnus.com>

	* utils.scm (bits->bools): New proc.

1999-04-23  Doug Evans  <devans@casey.cygnus.com>

	* sid.scm (<multi-ifield>,gen-ifld-extract-decl): Fix call to
	subfield's gen-ifld-extract-decl method.

1999-04-23  Ben Elliston  <bje@cygnus.com>

	* arm7.cpu (ldrsh-pu): Remove.
	(do-halfword-load): New pmacro.
	(load-halfword): Likewise.
	(do-halfword-store): Likewise.
	(store-halfword): Likewise.
	(strh-*): New instructions.
	(ldrsb-*): Likewise.
	(ldrh-*): Likewise.
	(ldrsh-*): Likewise.

1999-04-22  Doug Evans  <devans@casey.cygnus.com>

	* ifield.scm (ifld-constant?): Delete special handling of RESERVED
	fields.

	* arm7.cpu (do-word/byte-store): Fix typo.

1999-04-22  Ben Elliston  <bje@cygnus.com>

	* arm7.cpu (do-word/byte-load): Handle cases where the destination
	register is the program counter (R15).

	* arm7.cpu (do-word/byte-store,store-word/byte): New pmacros.
	(str-*): Implement using store-word-byte. Remove older versions.
	(bic): Use the `inv' rtx for obtaining bitwise complements.
	(bic-imm): Likewise.
	(mvn): Likewise.
	(mvn-imm): Likewise.
	(store-indev-reg): Remove crufty pmacro.
	(load-indiv-reg): Likewise.
	(ldm-p): Reverse the order of register processing for decrement.
	(stm-p): Likewise.
	(stbi): Remove; handled by the str-* insns.

1999-04-21  Doug Evans  <devans@casey.cygnus.com>

	* thumb.cpu (cmp): Fix carry bit computation.
	(alu-cmp): Ditto.

1999-04-20  Doug Evans  <devans@casey.cygnus.com>

	* arm.cpu (h-tbit): Specify set spec.
	(h-cpsr): Ditto.
	* arm7.cpu (bx): Don't call C routine, just set h-tbit.
	(set-sub-flags): Interpret "carry bit" as a borrow.
	(all sub/cmp insns): Carry bit is actually a borrow bit.
	* thumb.cpu (bx-rs,bx-hs): Don't call C routine, just set h-tbit.
	(add-carry,sub-carry,thumb-neg,thumb-bic,thumb-inv): Delete.  Use
	.pmacro instead.
	(hireg-add,hireg-cmp,hireg-move): Ditto.

	* read.scm (-CGEN-VERSION): Change version to 0.7.2.
	(-CGEN-LANG-VERSION): Ditto.

1999-04-18  Doug Evans  <devans@casey.cygnus.com>

	* pmacros.scm (-pmacro-make): New arg `default-values',
	all callers updated.
	(-pmacro-default-values): New proc.
	(-pmacro-process-keyworded-args): New proc.
	(-pmacro-process-args): New proc.
	(-pmacro-invoke): Process arguments before expanding macro.
	(-pmacro-get-arg-spec,-pmacro-get-default-values): New procs.
	(define-pmacro): Handle default values specified in arg list.
	* rtl.scm (rtx-alu-op-mode,rtx-alu-op-arg): New procs.
	(rtx-boolif-op-arg[01]): New procs.
	(rtx-true,rtx-false,rtx-canonical-bool): New procs.
	(rtx-simplify): Handle not,orif,andif.
	* semantics.scm (-simplify-for-compilation): Simplify not,orif,andif.
	* utils.scm (alist-copy): New proc.
	* arm7.cpu (do-word/byte-load,load-word/byte): New pmacros.
	(ldr*): Rewrite.
	(swi): Explicitly set pc.

	* thumb.cpu (bx-rs,bx-hs): Reverse test for switch to arm mode.

1999-04-17  Ben Elliston  <bje@cygnus.com>

	* arm7.cpu (ldr-pu): Do not add 8 to R15; the step() method
	correctly adjusts the program counter now.

	* arm7.cpu (f-halfword?): Rename from `f-hdt-halfword?'.
	(f-signed?): Rename from `f-hdt-signed?'.
	(f-offset4-hi): Rename from `h-hdt-off4-ms'.
	(f-offset4-lo): Rename from `h-hdt-off4-ls'.
	(f-hdt-offset8): Use new field names.
	(ldr): Use `imm12' field, not `offset12', since we do our own
	address arithmetic.
	(str, str-*): Likewise.
	(ldu-*): Remove most; better not implemented than broken.
	(ldrh*): Likewise.
	(ldrsh-pu): New insn.
	(stri): Likewise.
	(stri-p): Likewise.
	(stbi): Likewise.
	(ldm-p): Likewise; replace (load-indiv-reg) version.

1999-04-15  Doug Evans  <devans@casey.cygnus.com>

	* arm.cpu (h-pc): Delete VIRTUAL attribute, get/set specs.
	* arm7.cpu (*): Fix mode of result of arm_compute_carry_out_*.
	(*): Explicitly specify mode in c-call.
	(logical-op): Recognize sets of h-gr[15] as sets of pc.
	(arith-op): Ditto.
	(and-imm,orr-imm,xor-imm,mov-imm,bic-imm,mvn-imm): Ditto.
	(arith-imm-op): New pmacro.
	(add-imm,adc-imm,sub-imm,sbc-imm,rsb-imm,rsc-imm): Use it.
	* thumb.cpu (bx-rs,bx-hs): Rewrite.

1999-04-14  Doug Evans  <devans@casey.cygnus.com>

	* rtl.scm (rtx-simplify-eq-attr-insn): Fix call to context-error.

	* rtl.scm (rtl-find-ifields): Implement.

	* utils-gen.scm: New file.
	* read.scm: Load it.
	* desc.scm: Move generic attribute code to utils-gen.scm.
	* Makefile.am (CGEN_HOB_INPUT_FILES): Add it.
	* Makefile.in: Rebuild.

	* arm7.cpu (R15-OFFSET): New attribute.
	(dnai): New pmacro.
	(logical-op): Delete arg `result?'.  All callers updated.  Use dnai.
	Delete use of eval-cond (dnai specifies it).  Specify R15-OFFSET of 12
	for reg-shift version.
	(arith-op): Ditto.
	(data processing insns): Reorganize.  Use dnai.

	* attr.scm (attr-kind): New proc.
	(attr-list-enum-list): Rewrite.
	(-attr-sort): Split result into two lists, bools and non-bools.
	(current-attr-list-for): Update.

	* cgen-sid.scm (sim-arguments): Add -H -> build desc.h file.
	* sid-cpu.scm (-gen-attr-decls): New proc.
	(-gen-insn-attr-decls): New proc.
	(cgen-desc.h): New proc.
	(cgen-cpu.h): Put everything in @cpu@ namespace.
	(gen-parallel-exec-type): Change prefix of parexec struct from
	@cpu@ to @prefix@.
	(-gen-trace-record-type): Ditto for trace_record struct.
	(-gen-write-case): Update.
	(-gen-scache-semantic-fn): Change function prefix from @cpu@ to
	@prefix@.  Update scache struct references.
	(-gen-sem-case): Update scache struct references.
	(-gen-sem-switch-fn): Update idesc struct reference.
	Update insn_type enum reference.
	(cgen-write.cxx): Update scache,argbuf references.
	(cgen-semantics.cxx): Simplify namespace choice (always @cpu@).
	* sid-decode.scm (IDESC-TABLE-VAR): Change prefix of insn_data
	from @cpu@ to @prefix@.
	(-gen-decode-insn-entry): Use gen-cpu-insn-enum.
	(-gen-decode-expr-entry): Ditto.  Change prefix of INSN_X_INVALID
	from @CPU@ to @PREFIX@.
	(-gen-decoder-switch): Change prefix of INSN_X_INVALID
	from @CPU@ to @PREFIX@.
	(-gen-decode-insn-globals): Generate insn attributes.
	(-gen-sem-fn-name): Change function prefix from @cpu@ to @prefix@.
	(-gen-sem-fn-decls): Use -gen-sem-fn-name.  Add `using' for
	semantic fn typedef.
	(-gen-idesc-decls): Simplify cpu class name (always @cpu@_cpu).
	Change prefix of scache struct from @cpu@ to @prefix@.
	Change prefix of semantic fn typedef from @cpu@ to @prefix@.
	Change prefix of idesc struct from @cpu@ to @prefix@.
	Change prefix of insn_type enum from @cpu@ to @prefix@.
	(-gen-argbuf-fields-union): Change prefix of sem_fields union
	from @cpu@ to @prefix@.
	(-gen-scache-decls): Change prefix of scache struct from
	@cpu@ to @prefix@.  Update idesc struct name.
	Update decode,execute methods.
	(-gen-extract-case): Update to type name changes.
	(-gen-decode-fn): Ditto.
	(cgen-decode.h): Put everything in @cpu@ namespace (except
	semantic fn decls).  Change prefix of insn_word from @cpu@ to @prefix@.
	(cgen-decode.cxx): Add using namespace @cpu@.
	* sid-model.scm (-gen-hw-profile-decls): Change prefix of
	model_mark_get/set from @cpu@ to @prefix@.
	(gen-model-unit-fn-name): Change function prefix from @cpu@ to
	@prefix@.
	(gen-model-fn-decls): Update idesc struct name.  Change prefix
	of model_insn_before/after from @cpu@ to @prefix@.
	(-gen-model-insn-fn): Update scache/idesc/argbuf struct names.
	Update insn_word type name.
	(-gen-model-timing-table): Update INSN_TIMING struct name.
	(-gen-model-init-fn): Update MODEL_DATA struct name.
	(-gen-mach-defns): Update name of init_idesc_table fn.
	(cgen-model.cxx): Add using namespace @cpu@.
	* sid.scm (gen-cpu-class): Delete.
	(gen-attr-type): New proc.
	(gen-obj-attr-sid-defn): New proc.
	(<operand>,gen-profile-code): Update name of model_mark_get/set fn.
	(gen-cpu-insn-enum-decl): Change prefix of insn_type enum from
	@CPU@ to @PREFIX@.
	(gen-cpu-insn-enum): Update name of insn enum.
	* thumb.cpu (bx-rs): Rename @cpu@_do_bx to @prefix@_do_bx.
	(bx-hs): Ditto.
	(swi): Rename @cpu@_swi to @prefix@_swi.

	* decode.scm (-build-decode-table-entry): Remove heuristic for
	distinguishing insns, and use insn ifield-assertion specs.

	* desc-cpu.scm (gen-A-attr-mask): Simplify.
	(gen-ifld-defns): Boolean attributes begin at number 0 now.
	(gen-hw-table-defns,gen-operand-table,gen-insn-table): Ditto.
	* opc-itab.scm (-gen-macro-insn-table): Ditto.
	* utils-cgen.scm (gen-attr-enum-decl): Change type arg to prefix,
	all callers updated.
	(gen-attr-name): New proc
	(gen-attr-mask): Use it.  Boolean attributes start at 0 now.
	(gen-obj-attr-defn): Delete num_nonbools count.

	* iformat.scm (ifmt-analyze): Handle insn-condition.
	(ifmt-compute!): Ditto.
	* insn.scm (<insn>): Specify default value for condition,
	post-cond-trap,compiled-condition,compiled-semantics.
	(<insn>,make!): New arg condition.
	(<insn>): Add getters for condition,compiled-condition.
	(-insn-parse): New arg condition, all callers updated.
	(-insn-read): Recognize condition spec.
	(define-full-insn): New arg condition.
	* minsn.scm (minsn-make-alias): Update call to (make <insn> ...).
	* semantics.scm (semantic-compile): Change arg sem-code to
	sem-code-list.
	(semantic-attrs): Ditto.
	* sim.scm (sim-finish!): Update calls to define-full-insn.
	* simplify.inc (define-normal-insn): Update call to define-full-insn.
	* sid-cpu.scm (gen-semantic-code): Handle insn-condition.
	* sid.scm (sim-finish!): Update call to define-full-insn.

Tue Apr 13 17:04:34 1999  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.am (sim-cpu): Allow specification of ISA.
	* Makefile.in: Rebuild.

Sun Apr 11 00:37:56 1999  Jim Wilson  <wilson@cygnus.com>

	* i960.cpu (sll-expr, srl-expr, sra-expr): Handle large shift counts.

1999-04-10  Doug Evans  <devans@casey.cygnus.com>

	* sparccom.cpu (check-fp-enable): Wrap TRAP32_FP_DIS in c-code.

	* arm.cpu (gr-names): Put pc first so it gets prefered in disassembly.

	* attr.scm (atlist?): New proc.
	(-attr-eval): Rewrite.
	(attr-parse): New proc.
	(atlist-parse): Use it.

	* decode.scm (exprtable-entry-make): New proc.
	(exprtable-entry-insn,exprtable-entry-expr): New procs.
	(exprtable-make,exprtable-insns): New procs.

	* hardware.scm (hw-mode-ok?): Delete argument `set?'.
	All uses updated.
	(hardware-builtin!): Make h-memory a vector.

	* iformat.scm (ifmt-ifields): Renamed from ifmt-fields.
	All callers updated.
	(ifmt-analyze): Use csem-* accessors on result of semantic-compile.

	* insn.scm (<insn>). Rename ifld-assertions to ifield-assertion.
	All uses updated.
	(-insn-parse): Set semantics to #f if not specified.
	(define-insn,define-full-insn): Take out code that ignores ALIAS's
	if simulator.
	(-parse-insn-format): Recognize `=' iformat spec.

	* mach.scm (isa-min-insn-bitsize): Ignore ALIAS's.
	(isa-max-insn-bitsize): Ditto.

	* opcodes.scm (<ifield>,gen-insert): Call rtl-c instead of
	rtl-c-with-alist.
	(<ifield>,gen-extract): Ditto.
	(<multi-ifield>,gen-insert,gen-extract): Ditto.
	* sid-cpu.scm (-gen-reg-access-defns): Ditto.
	(gen-define-ifmt-ifields): New proc.
	(gen-semantic-code): Rewrite.
	* sid-decode.scm (-gen-decode-expr-entry): New proc.
	(-gen-decoder-switch): Handle expression tables.
	(-gen-extract-case): Call gen-define-ifmt-ifields instead of
	gen-define-fields.
	* sid-model.scm (-gen-model-insn-fn): Call gen-define-ifmt-ifields
	instead of gen-define-fields.
	* sid.scm (<ifield>,gen-ifld-extract-decl): New arg `indent', all
	callers updated.
	(<multi-ifield,gen-ifld-extract-decl): Ditto.
	(-gen-ifld-extract-base): Call rtl-c instead of rtl-c-with-alist.
	(-gen-ifld-extract-beyond): Ditto.
	(<multi-ifield>,gen-ifld-extract): Ditto.
	(<*>,cxmake-get,gen-set-quiet,gen-set-trace,gen-write): Update to new
	rtl evaluation code.
	(op:read): Build an <eval-state> to pass to gen-read.
	(op:write): Build an <eval-state> to pass to gen-write.
	(op:record-profile): Build an <eval-state> to pass to
	gen-record-profile.
	* sim-cpu.scm (gen-semantic-code): Rewrite.
	* sim.scm (-gen-ifld-extract-base): Call rtl-c instead of
	rtl-c-with-alist.
	(-gen-ifld-extract-beyond): Ditto.
	(<multi-ifield>,gen-ifld-extract): Ditto.
	(<hw-register>,gen-get-macro,gen-set-macro): Ditto.
	(<*>,cxmake-get,gen-set-quiet,gen-set-trace,gen-write): Update to new
	rtl evaluation code.
	(op:read): Build an <eval-state> to pass to gen-read.
	(op:write): Build an <eval-state> to pass to gen-write.
	(op:record-profile): Build an <eval-state> to pass to
	gen-record-profile.

	* operand.scm (<operand>): Give `selector' default value of #f.
	Give `num' default value of -1.  Give `cond?' default value of #f.
	(op:new-mode): Delete arg `set?', all uses updated.

	* read.scm (reader-error): Handle #f return from port-filename.
	(-init-parse-cpu!): Call rtl-c-init!.
	(reader-install-builtin!): Call rtl-builtin!.

	* rtl-c.scm: New file.
	* semantics.scm: New file.
	* read.scm: Load them.
	* rtl.scm: C generation moved to rtl-c.scm.  Semantic analysis moved
	to semantics.scm.
	(<rtx-func>): Delete members syntax?,macro,c,expr.  New members
	type,eval,num.
	(rtx-lookup): Renamed from -rtx-func-lookup.  All callers updated.
	(-rtx-num-text,-rtx-max-num): New globals.
	(def-rtx-operand-node,define-rtx-operand-node): New procs.
	(-rtx-macro-lookup): New proc.
	(rtx-lvalue-mode-name): Renamed from rtx-expr-mode-name.
	(rtx-env-stack-empty?,rtx-env-stack-head): New procs.
	(rtx-env-var-list,rtx-env-empty-stack,rtx-env-init-stack1): New procs.
	(rtx-env-make,rtx-env-empty?,rtx-env-make-locals): New procs.
	(rtx-env-push,rtx-temp-lookup,-rtx-closure-make): New procs.
	(rtx-make,rtx-kind?,rtx-const?,rtx-const-value,rtx-symbol-name,
	rtx-operand?,rtx-operand-obj,rtx-local?,rtx-local-obj, rtx-xop-obj,
	rtx-index-of-value,rtx-if-mode,rtx-if-test,rtx-if-then,rtx-if-else,
	rtx-eq-attr-owner,rtx-eq-attr-attr,rtx-eq-attr-value): New procs.
	(rtx-pretty-name): New proc.
	(-rtx-traverser-table,-rtx-make-traverse-table): New procs.
	(rtx-traverse-*): Rewrite rtx traversing.
	(rtx-eval-*): Rewrite rtx evaluation.
	(rtx-compile): New proc.
	(rtx-simplify): New proc.
	(rtx-simply-eq-attr-mach,rtx-simplify-eq-attr-insn): New procs.
	* rtx-funcs.scm: C generation moved to rtl-c.scm.
	(ifield,index-of): Rewrite.
	(name): Renamed from `operand:'.
	(operand,xop,local): New rtx's.
	(current-insn): Rewrite.
	* Makefile.am (CGEN_HOB_INPUT_FILES): Add rtl-c.scm, semantics.scm.
	(cgen-hob.h): Remove rule for.
	(cgen-hob.o): Depend on cgen-hob.c only.
	* Makefile.in: Rebuild.

	* utils-cgen.scm (vmake): New proc.
	(<context>): New class.
	(context-make-prefix,context-error): New procs.

Fri Apr  9 19:26:28 1999  Jim Wilson  <wilson@cygnus.com>

	* i960.cpu: Add some ??? comments.
	(xnor, ornot): New instructions.
	(*): Delete obsolete COND-CTI and UNCOND-CTI attributes.

1999-04-08  Doug Evans  <devans@casey.cygnus.com>

	* cos.scm (-object-error): Print better error message.

	* pmacros.scm (-pmacro-env-make): Renamed from -env-make.
	(-pmacro-env-ref): Renamed from -env-ref.

1999-03-31  Doug Evans  <devans@casey.cygnus.com>

	* hardware.scm (<hw-pc>,parse!): Allow get/set specs.
	(h-pc): Delete.
	(hardware-builtin!): Delete h-pc builtin.
	* arm.cpu (h-pc): Define.
	(h-gr): Delete get,set specs.  Make array of 16 regs again.
	* arm7.cpu (set-logical-cc-maybe): Delete.
	(set-zn-flags,set-add-flags,set-sub-flags): New macros.
	(data processing insns): Rewrite.
	* m32r.cpu (h-pc): Define.
	* fr30.cpu (h-pc): Define.
	* i960.cpu (h-pc): Define.
	* sparc.cpu (h-pc): Define.

	* rtl.scm (-rtx-traverse-operands): Add some error checking to LOCALS.
	(s-parallel): Replace do {...} while (0) with {...}.
	(s-sequence): Ditto.

	* sid-cpu.scm (gen-parallel-exec-type): Make type of `written'
	consistent.
	(-gen-write-case,-gen-sem-case): Ditto.
	(-gen-sem-case): Only specify `written' if profiling or
	parallel-write-back.
	(-gen-scache-semantic-fn,-gen-all-semantic-fns): Put procs back in.
	(-gen-sem-switch-fn): New proc.
	(cgen-semantics.cxx): Emit either semantic fns or semantic switch
	based on with-sem-switch option.
	* sid-decode.scm (-gen-decode-insn-globals): Only define
	idesc_table_initialized_p if with-sem-switch.  Record semantic fn
	addresses in idesc_table if !with-sem-switch.
	(-gen-sem-fn-decls): Rewrite.
	(-gen-idesc-decls): Define @cpu@_sem_fn type.  Define `execute'
	member based on with-sem-switch.  Only define
	`idesc_table_initialized_p' member if with-sem-switch.
	(cgen-decode.h): If !with-sem-switch, declare semantic fns.
	* sid.scm (-with-sem-switch?): New variable.
	(option-init!): Initialize it.
	(option-set!): Set it.
	(with-sem-switch?): New proc.
	(-op-gen-set-trace): Only emit `written' reference if profiling.
	(sim-finish!): Use h_pc_set to set pc.

1999-03-30  Doug Evans  <devans@casey.cygnus.com>

	* sparccom.cpu (arith-cc-binop): New args s32-set-flags,s64-set-flags.
	All callers updated.
	(arith-carry-cc-binop): New arg set-flags.  All callers updated.

	* sid.scm (gen-argbuf-type): Delete.
	(-gen-argbuf-fields-union): Move to ...
	* sid-decode.scm: ... here.

	* read.scm (-reader-process-expanded-1): New proc.
	(-reader-process-expanded): Call it to catch nested begin's.
	(reader-process): Move `begin' handling to -reader-process-expanded.

	* insn.scm (-insn-read): Fix name of `format' spec.

	* pmacros.scm (.pmacro): New builtin.
	(scan-symbol): If procedure macro, return macro rather than its symbol.
	(check-macro): Don't do lookup, instead check if (car expr) is
	macro object.
	(scan-list): Handle .pmacro.
	(scan): No longer re-examine text for another macro invocation.
	(-pmacro-build-lambda): New proc.
	(define-pmacro): Rewrite.  If defining one pmacro to be an alias of
	another, fetch the other's value (rather than doing it during
	expansion).

1999-03-27  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.am (CGEN_HOB_INPUT_FILES): Add decode.scm.
	* Makefile.in: Rebuild.

	* decode.scm (decode-get-best-bits): Use memq instead of element?.
	(-fill-slot!): Simplify.
	(-build-slots): Simplify.

	* dev.scm (load-sid): Don't load sid-arch.scm.

	* sid-decode.scm: Replace computed goto decoder/extractor with plain
	switch's.
	* sim-decode.scm: Replace computed goto decoder/extractor with plain
	switch's.

1999-03-26  Doug Evans  <devans@casey.cygnus.com>

	* sim-decode.scm: Clean up pass.  Move decoder computation into ...
	* decode.scm: ... here.  New file.
	* sid-decode.scm: Use decoder computation code in decode.scm.
	* read.scm: Load decode.scm.

	* arm.cpu (arm710 model): Add u-exec function unit.
	(h-gr): Delete CACHE-ADDR for now.  Make array of 15, not 16 regs.
	Add get/set specs to redirect reg 15 to h-pc.
	(h-*): Indicate for both ARM and THUMB isas.
	(cbit,nbit,vbit,zbit): Ditto.
	(h-ibit,h-fbit,h-tbit,h-mbits): New hardware elements.
	(h-cpsr): Make virtual.  Add get/set specs.
	(h-spsr-fiq,h-spsr-svc,h-spsr-abt,h-spsr-irq,h-spsr-und): New hw.
	(h-spsr): New virtual reg.
	* arm7.cpu (shift-type): New explicitly defined keyword.
	(h-operand2-shifttype): Use it.
	(set-logical-cc-maybe): Delete carry-out arg.  New args arg1,arg2.
	All callers updated.  Don't set cbit.
	(logical-op): Add rm to ifield list.  Change case to case:.  Use
	shift-type enum as case choices.  Set cbit.
	(and,orr,eor,add-imm): Uncomment out.
	(undefined): Temporarily comment out.
	* thumb.scm (mov,cmp,addi8,subi8,str-sprel,ldr-sprel): s/rd/bit10-rd/.
	(lda-pc,lda-sp): Ditto.
	(ldr-pc): Rename from ldr.
	(cbranch): Mark insns as being thumb insns.

	* attr.scm (<bitset-attribute>,parse-value): Recognize strings.

	* cgen-sid.scm: Don't load sid-arch.scm.
	(sim-arguments): Delete unused entries.
	* sid-arch.scm: Delete.

	* insn.scm (<insn>,iflds): Renamed from flds.  All uses updated.
	(<insn>,ifld-assertions): New member.
	(<insn>,make!): New arg ifld-assertions, all callers updated.
	(<insn> accessors): Change insn:foo to insn-foo.  All callers updated.
	(insn:fields): Delete.
	(-insn-parse): New arg ifld-assertions.  All callers updated.
	(-insn-read,define-insn): New procs.
	(define-full-insn): New arg ifld-assertions.  All callers updated.
	(insn-init!): New comment define-insn.

	* model.scm (-model-parse): Ensure at least one unit specified.

	* rtl.scm (-rtx-traverse-operands): Recognize environments.
	(<c-expr-temp>,get-name): New method.
	(-rtx-make-current-closure,s-closure): New proc.
	(hw:): Wrap rtx indices in a closure.
	(-gen-case-prefix): New proc.
	(s-case): Simplify.
	* rtx-funcs.scm (case:): Fix call to s-case.
	(closure): New rtx func.

	* hardware.scm (<hardware-base>): New member isas-cache.
	(<hardware-base>,get-isas): New method.
	(hardware-builtin): Indicate for all isas.
	* ifield.scm (-ifield-parse): Only keep if isa+mach are kept.
	* mach.scm (current-arch-mach-name-list): Return list of names.
	(current-isa-mach-name-list): Ditto.
	(define-arch): Install builtin objects here.
	* read.scm (keep-atlist?): Only keep if both mach and isa are
	being kept.
	(keep-mach-atlist?): New proc.
	(keep-isa-multiple?,current-keep-isa-name-list): New proc.
	(reader-install-builtin!): Renamed from -install-builtin!.
	* sid-cpu.scm (-gen-reg-access-defns): Renamed from
	-gen-cpu-reg-access-defns.  Rewrite.
	(gen-reg-access-defn): Delete.
	(-gen-hardware-struct): New proc.
	(-gen-hardware-types): Simplify.  Add multiple-isa support.
	(gen-semantic-fn,-gen-all-semantics): Delete.
	(-gen-read-args,-gen-read-case,-gen-read-switch): Delete.
	(cgen-cpu.c,cgen-read.c,cgen-sem-switch.c,cgen-mainloop.in): Delete.
	(cgen-write.cxx,cgen-semantics.cxx,cgen-decode.cxx): Renamed from *.c.
	Call sem-analyze-insns!.
	(cgen-semantics.cxx): Add multiple-isa support.
	* sid-decode.c (-gen-idesc-decls): Add multiple-isa support.
	(-gen-scache-decls,-gen-decode-fn): Ditto.
	(cgen-decode.h): Call sem-analyze-insns!.
	* sid-model.scm (cgen-model.cxx): Renamed from cgen-model.c.
	* sid.scm (-with-multiple-isa?): New variable.
	(option-init!): Initialize it.
	(option-set!): Set it.
	(with-multiple-isa?): New proc.
	(gen-cpu-ref): New arg isas.  All callers updated.
	(gen-cpu-class): New proc.
	(*-get-macro,*-set-macro): Delete.
	(gen-reg-get-fun-name,gen-reg-set-fun-name): New procs.
	(-hw-gen-fun-get): Call gen-reg-get-fun-name.
	(-hw-gen-fun-set): Call gen-reg-set-fun-name.
	(-gen-hw-index): Call rtx-c instead of rtx-c-with-temps for rtxs.
	(-sim-insns-analyzed): New global variable.
	(sim-init!): Reset it.
	(sim-analyze-insns!): New proc.
	(sim-analyze!): Don't do instruction analysis here.
	(sim-finish!): Specify isa of x-invalid insn.
	* sim.scm (sim-finish!): Specify isa of added x-* virtual insns.

1999-03-22  Doug Evans  <devans@casey.cygnus.com>

	* thumb.cpu (cpu,mach,model): Delete.
	(dntf): New pmacro.  Use it for all field definitions.
	(dntop): New pmacro.  Use it for all operand definitions.
	(asr): Correct field list.
	(add,addi,sub,subi,add-sp,add-sp-neg): Ditto.

	* utils-cgen.scm (define-getters): New macro to simplify
	writing class accessors.
	(define-setters): Ditto.
	(sanitize): Recognize isa elements.

	* sid-cpu.scm (*): Replace cpu:parallel-exec? call with
	state-parallel-exec?.
	* sid-model.scm (*): Ditto.
	* sid-decode.scm (*): Ditto.  Replace cpu:decode-assist with
	state-decode-assist.

	* sid-decode.scm (decode-bits): Replace list-reverse! with reverse!.
	(-gen-decode-switch): Rewrite to not generate deeply nested lists.
	* sim-decode.scm (-gen-decode-switch): Ditto.

	* sim-arch.scm (-regs-for-access-fns): Delete.
	(-biggest-reg-mode,-gen-arch-reg-access-decls): Delete.
	(-gen-arch-reg-access-defns): Delete.

	* sim-cpu.scm (*): Replace cpu:liw-insns with state-liw-insns,
	cpu:parallel-insns with state-parallel-insns, cpu:parallel-exec?
	with state-parallel=exec?.
	(cgen-*): Call sim-analyze-insns! here.
	* sim-decode.scm (cgen-*): Ditto.
	* sim-model.scm (cgen-*): Ditto.
	* sim.scm (-sim-insns-analyzed): New global variable.
	(sim-init!): Reset it.
	(sim-analyze-insns!): Renamed from sim-analyze!.  Keep track if we've
	already done the analysis.

	* sim-model.scm (-gen-mach-defns): Add mach attribute number to
	MACH struct.

	* arm.cpu: Only include arm7.cpu,thumb.cpu if necessary.
	(arm arch): Update isa spec.
	(arm,thumb isas): Define.
	(arm7 cpu): default-insn-bitsize,base-insn-bitsize moved to isas.
	(arm7tdmi mach): Add isa spec.
	* arm7.cpu (*): Replace subreg: with subword:.  Remove unnecessary
	`const' on word number.
	* fr30.cpu (fr30 arch): Update isa spec.
	(fr30 isa): Define.
	(fr30bf cpu): default-insn-bitsize,base-insn-bitsize,decode-assist,
	moved to isa spec.
	* i960.cpu (i960 arch): Update isa spec.
	(i960 isa): Define.
	(i960base cpu): default-insn-bitsize,base-insn-bitsize,decode-assist,
	liw-insns,parallel-insns moved to isas spec.
	* m32r.cpu (m32r arch): Update isas spec.
	(m32r isa): Define.
	(m32rbf cpu): default-insn-bitsize,base-insn-bitsize,decode-assist,
	liw-insns,parallel-insns moved to isa spec.
	* sparc.cpu (sparc arch): Update isas spec.
	(sparc isa): Define.
	* sparc32.cpu (sparc32 cpu): default-insn-bitsize,base-insn-bitsize,
	decode-assist moved to isa spec.
	* sparc64.cpu (sparc64 cpu): Ditto.
	* sparccom.cpu (trap insns): Correct mode of result of c-call:.
	* desc-cpu.scm (-gen-isa-table-defns): New proc.
	(-gen-mach-table-defns): Output mach table.
	(-gen-hash-defines): Delete insn size macros, except for
	CGEN_MAX_INSN_SIZE.
	(-cgen-cpu-open): Rewrite cpu_open handling.  Take stdarg list of args.
	(cgen-desc.h): Define MAX_ISAS.
	(cgen-desc.c): Include stdarg.h.  Call -gen-isa-table-defns.
	* mach.scm (<arch>): Rename arch-data to data.  New member isa-list.
	(arch-* accessors): Renamed from arch:*.  All callers updated.
	(current-arch-isa-name-list): New proc.
	(-arch-parse-isas): Renamed from -arch-parse-isa.
	(def-isa-attr!): Rewrite.
	(<iframe>): New class.
	(<itype>): New class.
	(<isa>): Rewrite.
	(isa-min-insn-bitsize,isa-max-insn-bitsize): New procs.
	(isa-integral-insn?,isa-parallel-exec?): New procs.
	(-isa-parse,-isa-read,define-isa): New proc.
	(<cpu>): Members default-insn-bitsize,base-insn-bitsize,decode-assist,
	liw-insns moved to <isa>.
	(cpu-* accessors): Renamed from cpu:*.  All callers updated.
	(-cpu-parse,-cpu-read): Update.
	(state-*): Renamed from state:*.  All callers updated.
	(state-default-insn-bitsize,state-base-insn-bitsize): Use isa spec,
	not cpu.
	(state-parallel-insns,state-parallel-exec?,state-liw-insns): New procs.
	(state-decode-assist): New proc.
	(<derived-arch-data>): Delete min-insn-bitsize,max-insn-bitsize.
	(-adata-set-derived!): Rewrite.
	(adata-integral-insn?): Renamed from adata:integral-insn?.  All
	callers updated.
	(arch-init!): Add define-isa command.
	* read.scm (<reader>): Default keep-isa member to (all).
	(reader-* accessors): Renamed from reader:*.  All callers updated.
	(-keep-isa-set!): Call string->symbol on isa name list.
	(keep-isa-validate!): Rewrite.
	(current-isa): New proc.
	(keep-isa?): Recognize "all".
	(-init-parse-cpu!): New arg keep-isa.  All callers updated.
	Call -keep-isa-set!.
	(cmd-if): Recognize keep-isa?.
	(cpu-load): New arg keep-isa.  All callers updated.
	(-opt-spec-update): New proc.
	(common-arguments): First arg is string, not symbol.
	(-cgen): Call -opt-spec-update.  Rewrite argument parsing.

	* rtl.scm (rtx-get): Default mode of string arg is INT.

	* rtl.scm (s-subword): Renamed from s-subreg.  All uses updated.

	* rtx-funcs.scm (join:): Pass cpu to handler.

	* configure.in (guile_include_dir): Delete.
	* configure: Rebuild.
	* Makefile.in: Rebuild.
	* doc/Makefile.in: Rebuild.

	* sid-cpu.scm (-extract-chunk-specs): New proc.
	(gen-define-fields): Use it.
	(-extract-chunk): New proc.
	(-gen-extract-beyond-var-list): Use it.
	(gen-extract-fields): Simplify.

1999-03-22  Ben Elliston  <bje@cygnus.com>

	* arm7.cpu (ldri-p): New instruction.
	(swi): Do not vector through 0x8 yet--there is nothing there.
	(addi): Reinstate.
	(movi): Likewise.
	(all): Use (const x) in subreg expressions.

1999-03-19  Ben Elliston  <bje@cygnus.com>

	* arm7.cpu (smull): Use operand field `rs', not `mul-rn'. Thinko.
	(smlal): Likewise.

1999-03-17  Doug Evans  <devans@casey.cygnus.com>

	* fr30.cpu (define-arch): Specify "forced" default-alignment.
	* mach.scm (-parse-alignment): Recognize "forced" alignment.
	* sim-cpu.scm (-extract-chunk-specs): New proc.
	(gen-define-fields): Use it.
	(-extract-chunk): New proc.
	(-gen-extract-beyond-var-list): Use it.
	(gen-extract-fields): Simplify.

	Port to guile 1.3.1.
	* Makefile.am (GUILEINCDIR,GUILELDFLAGS,GUILELDADD): Delete.
	(LIBIBERTY): New var.
	(HOB_OBJS): Add cgen-gh.o.
	(hobbit): Delete $(CFLAGS) from link, add $(LIBS) $(LIBIBERTY).
	* Makefile.in: Rebuild.
	* acconfig.h: Add HAVE_3_ARG_SCM_MAKE_VECTOR.
	* config.in: Rebuild.
	* configure.in: Add checks for libdl, libreadline, libnsl, libsocket,
	libncurses, libtermcap.
	Add checks for needed functions in guile 1.2 not in guile 1.3,
	and vice versa.  Add test for 3 argument scm_make_vector.
	* configure: Rebuild.
	* cgen-gh.c (scm_list_length,scm_list_append,scm_list_reverse): Provide
	definitions if guile doesn't have them.
	(gh_make_vector,gh_length,gh_vector_set_x,gh_vector_ref):
	(cgh_vector): Replace gh_vector with gh_make_vector.  Replace gh_vset
	with gh_vector_set_x.
	(cgh_qsort): Replace gh_list_length with gh_length.
	* cgen-gh.h: Add decls for added functions.
	(cgh_qsort): Don't declare if IN_HOBBIT.
	* cos.c: Include config.h.  Replace gh_vref with gh_vector_ref,
	gh_vset with gh_vector_set_x, gh_list_length with gh_length,
	scm_make_vector with gh_make_vector.
	* cos.scm: Use vector-length instead of length on vectors.
	* dev.scm (cload): Make varargs proc with keyword/value args.
	* hobscmif.h: Include config.h, cgen-gh.h.  Undef make_vector and
	provide version that works with guile 1.2 or 1.3.
	Include private copy of scmhob.h.
	* scmhob.h: New file.  Keep our own copy for now.

Tue Mar 16 13:22:01 1999  Doug Evans  <devans@canuck.cygnus.com>

	* rtl.scm (-rtx-traverse-error): Ensure expression is output in
	plain text.
	(-rtx-traverse-operands): Dump cx temp stack if debugging.
	(-cx-temp-dump-stack): Pretty up output.

	* arm.cpu: comment out thumb.cpu until isa support ready.
	* arm7.cpu (bl): Replace lr with (reg h-gr 14).
	(f-imm12,f-offset24,swi,undef): Fix thinko, add `const'.
	* thumb.cpu (h-gr-t,h-lr-t,h-sp-t,dnti,h-hiregs): s/MACH/ISA/.

	* sid-decode.scm (cgen-decode.c): Call rtl-gen-init!.

1999-03-11  Doug Evans  <devans@casey.cygnus.com>

	* hardware.scm (<hw-immediate>,mode-ok?): Ensure result is boolean.
	(<hw-address>,mode-ok?): unsigned/signed are compatible.

	* operand (op:new-mode): Improve error message.

	* arm.cpu: Move arm isa into arm7.cpu.  Include arm7.cpu, thumb.cpu.
	* arm7.cpu: New file.

1999-03-12  Ben Elliston  <bje@cygnus.com>

	* arm.cpu: Lots of minor fixes after desk checking.

1999-03-11  Doug Evans  <devans@casey.cygnus.com>

	* thumb.cpu: snapshot of current work

	* rtl.scm (rtx-get): Tweak error message.

1999-03-10  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.am (cos.o,cgen.o,cgen-gh.o): Fix dependencies.
	* Makefile.in: Rebuild.

	* cos.c (cos_vector_copy): New function.
	(_object_copy): Use it.

	* mode.scm (mode:eq?): Clean up.
	* rtl.scm (cx-new-mode): Copy attributes.
	(rtx-get): Don't make copy if <c-expr> with identical mode.

	* fr30.cpu (define-arch): Delete default-insn-word-bitsize,
	add new isas spec.
	(gr-names): h-gr register names moved here.
	(h-gr): Update.
	(cr-names): h-cr register names moved here.
	(h-cr): update.
	(dr-names): h-dr register names moved here.
	(h-dr): update.
	(h-ps): Replace FUN-ACCESS attribute with get/set specs.
	(h-sbit,h-ccr,h-scr,h-ilm): Ditto.
	* i960.cpu (define-arch): Delete default-insn-word-bitsize,
	add new isas spec.
	* m32r.cpu (define-arch): Delete default-insn-word-bitsize,
	add new isas spec.
	(gr-names): h-gr register names moved here.
	(h-gr): Update.
	(cr-names): h-cr register names moved here.
	(h-cr): update.
	(h-accum): Replace FUN-ACCESS attribute with get/set specs.
	(h-accums,h-psw): Ditto.
	* sparc.cpu (define-arch): Delete default-insn-word-bitsize,
	add new isas spec.
	(gr-names): h-gr register names moved here.
	(h-gr-indices): Delete.
	(sparc32 h-gr): Update.  Replace FUN-ACCESS with get/set specs.
	(sparc64 h-gr): Ditto.
	(h-y): Add get/set specs.
	(fp regs): Rewrite.
	(fp operands): Rewrite.
	* sparc32.cpu (h-psr): Replace FUN-ACCESS with get/set specs.
	(h-tbr,h-cwp,h-wim): Ditto.
	* sparc64.cpu (h-fpsr): Add get/set specs.
	* sparccom.cpu (ldd-reg+reg): Load value all at once.
	(fp-ld-op): New arg `dest', all callers updated.
	(*): Replace `make-di' with `join'.

	* sid-cpu.scm (-gen-cpu-reg-access-defns): Use get/set specs if
	present.
	(gen-semantic-code): Save/restore rtl generator state.
	(cgen-cpu.h): Call rtl-gen-init!.
	* sid.scm (-gen-ifld-extract-base): Update call to rtx-c-with-alist.
	(-gen-ifld-extract-beyond): Ditto.
	(<multi-ifield>,gen-ifld-extract): Ditto.
	(all gen-read,gen-write,cxmake-get,gen-set-* methods): New arg
	`gstate'.
	(-hw-gen-set-quiet-pc): Ditto.
	(<hw-pc>,gen-write): Ditto.
	(-hw-cxmake-get): Ditto.  Call getter function if present.
	(<hw-register>,cxmake-get-raw): New method.
	(<hw-register>,gen-set-quiet-raw): New method.
	(-hw-gen-set-quiet): New arg `gstate'.
	(hw-fun-access?): Delete.
	(gen-reg-access-defn): Output function contents.
	(-gen-hw-index-raw): Update call to rtx-c.  Update cxmake-get
	invocation.
	(-gen-hw-index): Ditto.
	(op:read): Update gen-read invocation.
	(op:write): Update gen-write invocation.
	(<operand>,cxmake-get,gen-set-quiet,gen-set-trace): Handle raw-reg
	operands.
	(-op-gen-set-quiet,-op-gen-set-quiet-parallel): New arg `gstate'.
	(-op-gen-set-trace,-op-gen-set-trace-parallel): Ditto.
	(<unit>,gen-profile-code): Update to sim.scm version.

	* sim-arch.scm (-regs-for-access-fns): New proc.
	(-biggest-reg-mode): New proc.
	(-gen-arch-reg-access-decls,-gen-arch-reg-access-defns): Rewrite.
	* sim-cpu.scm (-gen-hardware-types): Output get/set handlers for
	virtual regs separately.
	(-gen-cpu-reg-access-defns): Replace fun-access? with new
	get/set specs.
	(gen-semantic-code): Save/restore rtl generator state.
	(cgen-cpu.h): Call rtl-gen-init!.
	(cgen-cpu.c): Ditto.  #include cgen-ops.h.
	* sim-model.scm: mach:cpu renamed to mach-cpu.  mach:bfd-name
	renamed to mach-bfd-name.
	* sim.scm (-gen-ifld-extract-base): Update call to rtx-c-with-alist.
	(-gen-ifld-extract-beyond): Ditto.
	(<multi-ifield>,gen-ifld-extract): Ditto.
	(<scalar>,gen-sym-get-macro): Update call to gen-get-macro.
	(<scalar>,gen-sym-set-macro): Update call to gen-set-macro.
	(all gen-read,gen-write,cxmake-get,gen-set-* methods): New arg
	`gstate'.
	(hw-fun-access?): Delete.
	(-hw-gen-set-quiet-pc): New arg `gstate'.
	(<hw-register>,gen-get-macro): Rewrite.
	(<hw-register>,gen-set-macro): Rewrite.
	(-hw-gen-fun-get,-hw-gen-fun-set): Delete.
	(-hw-cxmake-get): New arg `gstate'.  Rewrite.
	(<hw-register>,cxmake-get-raw): New method.
	(-hw-gen-set-quiet): New arg `gstate'.  Rewrite.
	(<hw-register>,gen-set-quiet-raw): New method.
	(-gen-hw-index-raw): Update call to rtx-c.  Update cxmake-get
	invocation.
	(-gen-hw-index): Ditto.
	(<hw-index>): New arg `gstate'.
	(-gen-hw-selector): Update call to rtx-c.
	(<pc>): New arg `gstate'.
	(op:read): Update gen-read invocation.
	(op:write): Update gen-write invocation.
	(<operand>,cxmake-get): Handle raw-reg.
	(-op-gen-set-quiet,-op-gen-set-quiet-parallel): New arg `gstate'.
	(-op-gen-set-trace,-op-gen-set-trace-parallel): Ditto.
	(<operand>,gen-set-quiet): Handle raw-reg.
	(<operand>,gen-set-trace): Handle raw-reg.
	(-gen-mach-data): mach:cpu renamed to mach-cpu.

	* desc-cpu.scm (gen-operand-decls): Take nub of operands for
	cgen_operand_type enum.
	(gen-operand-table): Add operand type enum.  Replace pointer to
	hardware element with its enum.  Null terminate table.
	(-gen-cpu-open): Add new `isa' argument to @arch@_cgen_cpu_open.
	Build operand table.
	* ifield.scm (-ifield-parse): Recognize ISA attribute.
	* mach.scm (<arch-data>): New member `isas'.
	(adata-isas): New accessor.
	(<isa>): New class.
	(isa-default-insn-word-bitsize): New accessor.
	(isa-enum): New proc.
	(current-arch-default-insn-word-bitsize): Delete.
	(current-isa-list,current-isa-lookup): New procs.
	(-arch-parse-isa): New proc.
	(-arch-parse): Rewrite.
	(-arch-read): Recognize `isas'.  Delete `default-insn-word-bitsize'.
	(define-arch): Define ISA attribute.
	(def-isa-attr!,isa-supports?): New procs.
	(<mach>): New member `isas'.
	(mach-isas): New accessor.
	(-mach-parse): New arg `isas', all callers updated.
	(-mach-read): Recognize `isas'.
	(arch-finish!): Rewrite.
	* opc-ibld.scm (-gen-fget-switch): Add `cd' arg to
	@arch@_cgen_get_{int,vma}_operand.
	(-gen-fset-switch): Add `cd' arg to @arch@_cgen_set_{int,vma}_operand.
	* opc-opinst.scm (-gen-operand-instance): Output operand enum instead
	of pointer to table entry.
	* opcodes.scm (gen-switch): Handle multiply defined operands.
	* operand.scm (op-sort): New proc.

	* hardware.scm (<hardware-base>): Rename getters/setters to get/set.
	(hw-getter,hw-setter): Renamed from hw-getters,hw-setter.
	(hw-enum): Accept symbol argument.
	(hardware-builtin!): Delete attribute FUN-ACCESS.
	* ifield.scm (ifld-encode-mode,ifld-decode-mode): New procs.

	* attr.scm (atlist-source-form): New proc.
	(attr-builtin!): New attr `PRIVATE'.
	* desc.scm (<keyword>,gen-defn): Make keyword entry table static.
	* desc-cpu.scm (-gen-hw-defn): Only output index and value tables
	if they have `PRIVATE' attribute.
	(gen-hw-table-defns): Output definitions of explicitly defined
	keyword tables.
	* hardware.scm (<keyword>): New member print-name.  Rename member
	`value' to `values', all uses updated.
	(kw-mode,kw-print-name,kw-prefix,kw-values): New procs.
	(keyword-parse): Rewrite.
	(-keyword-read): New proc.
	(define-keyword): New proc.
	(-hw-parse-keyword): New proc.
	(-hw-parse-indices): Rewrite keyword handling, support new index spec
	`extern-keyword'.
	(-hw-parse-values): Ditto.
	(-hw-parse-get,-hw-parse-set): Rewrite.
	(hardware-init!): Add new comment define-keyword.
	* mach.scm (<arch>): New member `kw-list'.
	(arch:kw-list,arch_set-kw-list!): New accessors.
	(current-kw-list,current-kw-add!,current-kw-lookup): New procs.

	* hardware.scm (<hw-register>,mode-ok?): Rewrite.
	* mode.scm (mode-class-integral?): New proc.
	(mode-class-float?,mode-class-numeric?): New procs.
	(mode-integral?,mode-float?,mode-numeric?): New procs.
	(mode-compatible?): New proc.
	* opcodes.scm (<ifield>,gen-insert): Update alist arg to
	rtx-c-with-alist.
	(<ifield>,gen-extract): Ditto.
	* rtl.scm (-rtl-simulator?,-rtx-current-obj): Delete.
	(<gstate>): New class.
	(gstate-simulator?,gstate-set-simulator?!): New accessors.
	(gstate-context,gstate-set-context!): New accessors.
	(gstate-macro?,gstate-set-macro?!): New accessors.
	(gstate-make,gstate-copy): New procs.
	(-rtl-current-gstate): New global.
	(current-gstate-simulator?): New proc.
	(current-gstate-context,current-gstate-macro?): New procs.
	(current-gstate,current-gstate-set!): New procs.
	(rtl-gen-init!): Rewrite.
	(-rtx-valid-types): Add INTMODE, FLOATMODE, NUMMODE.
	(tstate-make): New arg `gstate', all callers updated.
	(tstate-set-expr-fn!,tstate-set-op-fn!): New accessors.
	(tstate-set-cond?!,tstate-set?,tstate-set-set?!): New accessors.
	(tstate-gstate,tstate-set-gstate!): New accessors.
	(tstate-copy): New proc.
	(tstate-new-cond?,tstate-new-set?): Rewrite.
	(-rtx-traverse-operands): Handle INTMODE, FLOATMODE, NUMMODE.
	(rtx-traverse): New arg `gstate', all callers updated.
	(rtx-strdump): New proc.
	(-simplify-for-compilation): New arg `gstate', all callers updated.
	(semantic-in-out-operands): Ditto.
	(semantic-attrs): Ditto.
	(rtx-eval): Rewrite.  New arg `gstate', all callers updated.
	(rtx-eval-with-temps,rtx-eval-with-alist): Ditto.
	(rtx-value): Rewrite.
	(<c-expr>,gen-name): New method.
	(<c-expr>,gen-set-quiet): New arg `gstate', all callers updated.
	(<c-expr>,gen-set-trace): New arg `gstate', all callers updated.
	(cx-new-mode): New proc.
	(-rtx-c-with-tstate): New proc.
	(rtx-c,rtx-c-with-temps,rtx-c-with-alist): New arg `gstate', all
	callers updated.
	(-rtx-mode): Rewrite.
	(-rtx-mode-compatible?): New proc.
	(<c-expr-temp>): New member `value'.
	(cx-temp:value): New accessor.
	(<c-expr-temp>,make!): Override default method.
	(<c-expr-temp>,cxmake-get): Rewrite.
	(<c-expr-temp>,gen-set-quiet): Rewrite.
	(<c-expr-temp>,gen-set-trace): Rewrite.
	(gen-temp-defs): Use cx-temp:value.
	(record-temp!): New arg value, all callers updated.
	(cx-temp:cx:make): Delete.
	(-cx-temp-dump-stack): New proc.
	(rtx-get): New arg `gstate', all callers updated.  Do mode
	compatibility checks.  Ensure result has specified mode.
	(rtx-set-quiet): New arg `gstate', all callers updated.
	(rtx-set-trace): Ditto.
	(s-c-call): New arg `tstate', all callers updated.
	(s-c-raw-call): Ditto.
	(s-unop,s-binop,s-binop-with-with,s-shop,s-boolifop,s-convop): Ditto.
	(s-cmpop,s-if,e-if): Ditto.
	(s-subreg): New proc.
	(-par-new-temp!): New proc.
	(-par-next-temp!): Rewrite.
	(-par-replace-set-dests): Use -par-new-temp!.
	(s-parallel): Rewrite temp handling.  Use -rtx-c-with-state.
	(s-sequence): Use -rtx-c-with-state.
	* rtx-funcs.scm (*): Update.
	(raw-reg:): New rtx function.
	(make-di): Delete.
	(join:,subreg:): New rtx functions.

	* insn.scm (<insn>): New members pre-cond-trap, condition,
	post-cond-trap, compiled-condition.

	* insn.scm (syntax-break-out): Replace eval with current-op-lookup.

	* opcodes.scm (<pc>,cxmake-get): New arg `selector'.

	* utils-cgen.scm (parse-symbol): New proc.
	(parse-string): New proc.
	(gen-get-macro,gen-set-macro): New arg `index-args'.
	(gen-set-macro2): Ditto.  Enclose code in do { } while (0).
	Prepend \ to newlines.

	* utils.scm (alist-remove-duplicates): Delete.

	* sid.scm (sim-init!): Delete private debugging code.

1999-03-10  Frank Ch. Eigler  <fche@cygnus.com>

	* cgen-sid.scm: New file for C++ simulator application.
	* sid-arch.scm: Ditto.
	* sid-cpu.scm: Ditto.
	* sid-decode.scm: Ditto.
	* sid-model.scm: Ditto.
	* sid.scm: Ditto.
	* utils-cgen.scm (gen-mach-sid-name): Remove this accident.

1999-03-05  Ben Elliston  <bje@cygnus.com>

	* arm.cpu: New file.

1999-03-03  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.am (CGEN_HOB_INPUT_FILES): Add hardware.scm.
	* Makefile.in: Rebuild.

	* attr.scm (<integer-attribute>,parse-value-def): Tweak.
	(-attr-parse): Validate default value.

	* read.scm (-CGEN-VERSION): Change to 0.7.1.
	(-CGEN-LANG-VERSION): Ditto.
	(-keep-all-machs): Renamed from -keep-all, all uses updated.
	(<reader>): New member keep-isa plus accessors.
	(-keep-isa-set!,keep-isa-validate!): New procs.
	(keep-isa?,keep-isa-atlist?,keep-isa-obj?): New procs.
	(common-arguments): New variable.
	(cgen-usage,getarg,catch-with-backtrace,option-arg): New procs.
	(-debug-repl,continue): New procs.
	(-cgen,cgen): New procs.
	* cgen-gas.scm: Rewrite.
	* cgen-opc.scm: Rewrite.
	* cgen-sim.scm: Rewrite.
	* cgen-stest.scm: Rewrite.

	* gas-test.scm (gas-test-init!): Call opcodes-init!.
	(gas-test-finish!): Call opcodes-finish!.
	(gas-test-analyze!): Call opcodes-analyze!.
	(<hw-asm>): New method test-data.
	(<operand>,testdata): Rewrite.
	* sim-test.scm (sim-test-init!): Call opcodes-init!.
	(sim-test-finish!): Call opcodes-finish!.
	(sim-test-analyze!): Call opcodes-analyze!.
	(<hw-asm>): New method test-data.
	(<operand>,testdata): Rewrite.

1999-03-01  Doug Evans  <devans@casey.cygnus.com>

	* fixup.scm (reverse!): Define if missing.
	* *.scm: Use reverse! instead of list-reverse!.

	* utils.scm (leading-id-char?): New proc.
	(id-char?): Rewrite.
	(chars-until-delimiter): New proc.
	* opc-itab.scm (extract-syntax-operands): Rewrite.
	(strip-mnemonic): Rewrite.
	(compute-syntax): Rewrite.

	* pmacros.scm (-pmacro-substr): New proc.
	(pmacros-init!): Add builtin .substr.

1999-02-26  Doug Evans  <devans@casey.cygnus.com>

	* thumb.cpu: New file.

1999-02-24  Doug Evans  <devans@casey.cygnus.com>

	* Makefile.am (CGENCFLAGS): New variable.
	(WITH_HOBBIT): Use automake conditional.
	(CGEN_HOB_SRC): New variable.
	(libcpu_a_SOURCES): Use $(CGEN_HOB_SRC).
	(*.o): Compile with CGENCFLAGS.
	(cgen-hob.c): Simplify.
	(cgen-nohob.c): New rule.
	(hobbit): Renamed from hob.x.
	(CLEANFILES): Add cgen-nohob.c.
	* Makefile.in: Rebuild.
	* doc/Makefile.in: Rebuild.
	* configure.in (AM_INIT_AUTOMAKE): Update CGEN version to 0.7.1.
	(WITH_HOBBIT): Use AM_CONDITIONAL.
	* configure: Rebuild.
	* aclocal.m4: Rebuild.

	* sim-arch.scm (-gen-arch-reg-access-defns): Replace string-map
	with string-write-map.

	* sim-cpu.scm (hw-need-storage?): New proc.
	(-gen-hardware-types): Use it.
	(gen-parallel-exec-elm): Call op-save-index?.

	* sim-decode.scm (cgen-decode.c): Call rtl-gen-init!.

	* sim.scm (-gen-ifld-extract-base): Use mode:class instead of
	UNSIGNED attribute.
	(-gen-ifld-extract-beyond): Ditto.
	(<integer>): Delete all references.
	(<sim-hardware>): Delete.
	(hw-profilable?): New proc.
	(<hardware-base>): New methods gen-get-macro,gen-set-macro.
	(<hw-register>): Rename method get-index-mode to save-index?.
	(<hw-register>): New methods gen-get-macro,gen-set-macro.
	(<hw-register>,gen-sym-decl): Make virtual.
	(<hw-memory>,gen-sym-decl): Make virtual.
	(<hw-memory>): Rename method get-index-mode to save-index?.
	(<hw-address>,gen-sym-decl): Make virtual.
	(<operand>): New method save-index?.
	(sim-init!): Delete calls to sim-hw-init!,sim-hw-init-parsers!.

	* opc-itab.scm (opc-{parse,insert,extract,print}-handlers): opc-
	prefix added.  All uses updated.

	* opc-opinst.scm (-gen-operand-instance): Output hw enum value
	rather than pointer to table entry.

	* opcodes.scm: Remove all attribute support, lives in desc.scm.
	Remove all hw-asm,op-asm support.
	(-gen-parse-number,-gen-parse-address): New procs.
	(<keyword>,gen-parse): Redo function name computation.
	(<keyword>,gen-print): Ditto.
	(<operand>,gen-function-name): Rewrite.
	(<operand>,gen-fget,gen-fset,gen-parse,gen-print): Ditto.
	(opcodes-init!): Delete call to add-parser!.

	* desc-cpu.scm (gen-hw-decls): Rename enum hw_type to cgen_hw_type.
	Define enum using hardware semantic name.
	(-gen-hw-decl,-gen-hw-defn): New procs.
	(gen-hw-table-decls): Use -gen-hw-decl.
	(gen-hw-table-defns): Use -gen-hw-defn.  Rewrite generation of
	CGEN_HW_ENTRY structs.
	(gen-operand-table): Output hw's enum, not pointer to table entry.
	(-gen-cpu-open): Build table of selected hardware elements.

	* desc.scm (-hw-asm-specs,-parse-hw-asm): Delete.
	(<hardware> support): Delete.
	(<hw-asm>): Delete, moved to hardware.scm.
	(normal-hw-asm,hw-asm:parse,hw-asm:print): Delete.
	(<hw-asm>,gen-table-entry): New method.
	(<hw-asm>,parse!): Delete.
	(<keyword>,gen-table-entry): New method.
	(<keyword>,parse!): Delete.
	(<hw-{register,memory,immediate,address}>): Delete forwarding methods
	for gen-decl,gen-defn,gen-ref,gen-init.
	(desc-init!): Don't create parser for operand asm specs.

	* attr.scm (attr-builtin!): Delete UNSIGNED attribute.
	* ifield.scm (<ifield>): New member `mode'.
	(<ifield>,make!): New arg `mode'.
	(ifld-mode): Rewrite.
	(ifld-hw-type): Rewrite.
	(<ifield>,min-value): Rewrite.
	(<ifield>,max-value): Rewrite.
	(-ifield-parse): New arg `mode'.
	(-ifield-read): Update.
	(define-full-ifield): New arg `mode'.
	(define-full-multi-ifield): Ditto.
	(-multi-ifield-parse): Ditto.
	(-multi-ifield-read): Update.
	(define-full-multi-ifield): New arg `mode'.
	(ifield-builtin!): Update definition of f-nil.
	* simplify.inc (define-normal-ifield): Update call to
	define-full-ifield.
	(define-normal-multi-ifield): Update call to define-full-multi-ifield.
	(define-normal-hardware): Delete arg asm.  New args indices, values,
	handlers.  Update call to define-full-hardware.
	(define-simple-hardware,dsh): New pmacros.
	(define-normal-operand): Update call to define-full-operand.
	* fr30.cpu (f-*): Delete UNSIGNED attribute.  Default is now UNSIGNED.
	Specify INT/UINT mode instead.
	(h-gr,h-cr): Use "indices" instead of "asm".
	(h-dr,h-ps): Update keyword syntax.
	(h-r13,h-r14,h-r15): Ditto.
	(h-nbit,h-zbit,h-vbit,h-cbit): Use dsh instead of dnh.
	(h-d0bit,h-d1bit,h-ibit,h-sbit,h-tbit,h-ccr,h-scr,h-ilm): Ditto.
	(m4): Fix typo on HASH-PREFIX.  Use "handlers" instead of "asm".
	(reglist_low_ld,reglist_hi_ld,reglist_low_st,reglist_hi_st): Ditto.
	* i960.cpu (f-*): Delete UNSIGNED attribute.  Default is now UNSIGNED.
	Specify INT/UINT mode instead.
	(h-gr): Use "indices" instead of "asm".
	(h-cc): Update keyword syntax.
	* m32r.cpu (f-*): Delete UNSIGNED attribute.  Default is now UNSIGNED.
	Specify INT/UINT mode instead.
	(h-hi16,h-slo16,h-ulo16): Update.
	(h-gr,h-cr): Use "indices" instead of "asm".
	(h-accum,h-cond,h-psw,h-bpsw,h-bbpsw,h-lock): Use dsh instead of dnh.
	(h-accums): Update keyword syntax.
	(hash,hi16,slo16,ulo16): Use "indices" instead of "asm".
	* sparc.cpu (f-*): Delete UNSIGNED attribute.  Default is now UNSIGNED.
	Specify INT/UINT mode instead.
	(h-gr-indices): New pmacro.
	(h-gr32,h-gr64): Split up from h-gr.
	(h-a): Update type spec.  Use values instead of asm spec.
	(h-icc-[cnvz],h-xcc-[cnvz]): Use dsh instead of dnh.
	(h-y,h-annul-p): Ditto.
	(h-asr): Update keyword spec.
	(h-lo10,h-lo13,h-hi22): Update.
	(get-freg-spec,set-freg-spec): New pmacros.
	(h-fr32,h-fr64): Split up from h-fr.
	(rdd): Comment out get/set specs.
	(lo10,lo13,hi22): Use "handlers" instead of "asm".
	* sparc32.cpu (h-psr): Use dsh instead of dnh.
	(h-s,h-ps,h-pil,h-et,h-tbr,h-cwp,h-ag,h-ec,h-ef,h-fsr): Ditto.
	* sparc64.cpu (f-*): Delete UNSIGNED attribute.  Default is now
	UNSIGNED.  Specify INT/UINT mode instead.
	(h-*): Use dsh instead of dnh where appropriate.
	(h-ixcc): Update type spec.  Use "values" instead of "asm".
	(h-p,h-membarmask): Ditto.
	(membarmask): Use "handlers" instead of "asm".

	* hardware.scm (<hardware-base>): New member sem-name,type,indices,
	values,handlers,getters,setters plus accessors.
	(hw-mode-ok?,hw-default-mode): New procs.
	(<hardware-base>): Rename method new-mode to mode-ok?
	(<hardware-base>): New method get-index-mode.
	(hw-index-mode): New proc.
	(pc?): Delete, moved to operand.scm.
	(address?): New proc.
	(<hardware>): Delete.
	(<hw-asm>): Definition moved here from desc.scm.
	(keyword-parse): New proc.
	(hardware-parsers): Delete.
	(-parse-hw-type,-parse-hw-asm,-parse-hw-profile): Delete.
	(-hw-parse-indices,-hw-parse-values,-hw-parse-handlers): New procs.
	(-hw-parse-get,-hw-parse-set): New procs.
	(-hw-parse): Delete args aasm,profile,extra.  New args semantic-name,
	indices,values,handlers,get,set.  Rewrite.
	(-hw-read-extra): Delete.
	(-hw-read): Update.
	(define-hardware): Don't add object if not selected.
	(define-full-hardware): Ditto.
	(current-hw-sem-lookup,current-hw-sem-lookup-1): New procs.
	(<hw-register>): Member `type' moved to baseclass.  Delete member
	hw-asm.
	(<hw-register>,parse!): Rewrite.
	(<hw-register>): Delete methods get-rank,get-mode.
	(<hw-register>): Method new-mode renamed to mode-ok?
	(<hw-register>): New method get-index-mode.
	(<hw-pc>,parse!): Rewrite.
	(<hw-memory>): Member `type' moved to baseclass.  Delete member hw-asm.
	(<hw-memory>,parse!): Rewrite.
	(<hw-memory>): Delete methods get-rank,get-mode.
	(<hw-memory>): Method new-mode renamed to mode-ok?
	(<hw-memory>): New method get-index-mode.
	(<hw-immediate>): Member `type' moved to baseclass.  Delete member
	hw-asm.
	(<hw-immediate>,parse!): Rewrite.
	(<hw-immediate>): Delete methods get-rank,get-mode.
	(<hw-immediate>): Method new-mode renamed to mode-ok?
	(<hw-address>): Delete member hw-asm.
	(<hw-address>,parse!): Rewrite.
	(<hw-address>): Delete methods get-rank,get-mode.
	(<hw-address>): Method new-mode renamed to mode-ok?
	(hw-profilable?): Delete.
	(hardware-init!): Delete hardware-parsers reference.
	Update argument specs of command define-full-hardware.
	(hardware-builtin!): Update definitions of hardware builtins.
	* operand.scm (<operand>): New members hw-name,mode-name.
	Delete member op-asm.  New member handlers.
	(<operand>,make!): Update.
	(op:hw-name,op:mode-name,op:handlers): New procs.
	(op:type): Rewrite.
	(op:mode): Rewrite.
	(<operand>): New method get-index-mode.
	(<pc>,make!): Update.
	(op:new-mode): Rewrite.
	(operand-parsers): Delete.
	(-operand-parse): Rewrite.  Return #f if insn not selected.
	(-op-read-extra): Delete.
	(-operand-read): Update.
	(define-operand,define-full-operand): Update.
	(operand-init!): Delete operand-parsers reference.
	Update syntax of define-full-operand command.

	* insn.scm (-insn-parse): Rewrite.  Return #f if insn not selected.
	(define-full-insn): Update.
	* minsn.scm (-minsn-parse): Rewrite.  Return #f if insn not selected.
	(define-full-minsn): Update.

	* mode.scm (<mode>): New member class.
	(mode:class): New proc.
	(mode?): Rewrite.
	(-mode-parse): New arg class.
	(define-full-mode): Update.
	(mode-find): Rewrite.
	(mode-make-int,mode-make-uint): New procs.
	(mode-init!): Update syntax of define-full-mode command.
	(mode-builtin!): Update definitions of builtin modes.

	* model.scm (<profile>): Delete.

	* read.scm (keep-atlist?): New proc.
	(keep-multiple?): New proc.
	(<parser-list>): Delete.
	(add-parser!,parse-spec!): Delete.

	* rtl.scm (def-rtx-node): Prepend arg *tstate* to all handlers.
	(def-rtx-syntax-node): Ditto.
	(-rtx-traverse-debug?): New variable.
	(tstate-make): New proc.
	(tstate-expr-fn,tstate-op-fn,tstate-cond?,tstate-set?): New procs.
	(tstate-new-cond?,tstate-new-set?): New procs.
	(-rtx-traverse-normal): Delete args cond?,expr-fn,op-fn.  New arg
	tstate.  All callers updated.
	(-rtx-traverse-expr,-rtx-traverse-debug): Ditto.
	(-rtx-traverse-list,-rtx-traverse-operands): Ditto.
	(-build-operand!): Replace arg cond? with tstate.
	(-build-reg-operand!,-build-mem-operand!): Ditto.
	(-build-index-of-operand!): Update making of <operand> object.
	(s-ifield): New arg tstate.  All callers updated.
	(hw:): New arg tstate.  All callers updated.  Replace call to
	current-hw-lookup with current-hw-sem-lookup-1.
	(s-index-of): New arg tstate.  All callers updated.
	(reg:,mem:): Ditto.
	(-rtx-use-sem-fn?): New proc.
	(s-unop,s-binop,s-shop): Use it.  Only use semantic mode when using
	semantic cover fns.
	(s-convop): Only use semantic mode when using semantic cover fns.
	(s-cmpop): Call -rtx-use-sem-fn?.
	(s-cond,s-case): New arg tstate.  All callers updated.
	(s-parallel,s-sequence): Ditto.

	* rtx-funcs.scm (set,set-quiet:): Use SETRTX to mark the set dest.

	* types.scm (<scalar>): Rewrite implementation.
	(<integer>): Delete.
	(parse-type): Rewrite.

	* utils-cgen.scm (parse-handlers): New proc.

	* utils.scm (!=): New proc.

Tue Feb 23 12:10:29 1999  Doug Evans  <devans@canuck.cygnus.com>

	* pmacros.scm (-pmacro-expand): Fix typo.

1999-02-12  Doug Evans  <devans@casey.cygnus.com>

	* pmacros.scm (-pmacro-hex,-pmacro-upcase,-pmacro-downcase): New procs.
	(pmacros-init!): Install builtins .hex, .upcase, .downcase.
	* i960.cpu (build-hex2): New pmacro.
	(insn-opcode): Simplify.
	(insn-opcode2): Ditto.

	* cgen-sim.scm (catch-with-backtrace): Comment out debugging printf.
	* cgen-stest.scm (catch-with-backtrace): Ditto.

1999-02-11  Doug Evans  <devans@casey.cygnus.com>

	* pmacros.scm (-pmacro-lookup): Renamed from -pmacro-ref.
	All callers updated.
	(-pmacro-invoke): New proc.
	(-pmacro-sym,-pmacro-str): New procs.
	(-pmacro-iota,-pmacro-map,-pmacro-apply): New procs.
	(pmacros-init!): Install builtins .iota, .map, .apply.
	* sparc.cpu (cc-tests): Add CC_NZ,CC_Z,CC_GEU,CC_LU aliases.
	(h-fr): Simplify register name spec.
	* sparc64.cpu (cond-move-1): New arg mnemonic.  All callers updated.
	* utils.scm (num-args-ok?): New proc.

1999-02-10  Doug Evans  <devans@casey.cygnus.com>

	* pmacros.scm (-pmacro-error): New proc.
	(-pmacro-expand): Use it.
	(-pmacro-splice): New proc.
	(pmacros-init!): Install new builtin .splice.

	* sparc.cpu: Include sparc64.cpu when appropriate.
	(f-mmask,f-simm11): Moved to sparc64.cpu.
	(insn-fmt2): Add FLUSH,FLUSHW,IMPDEP1,IMPDEP2,MEMBAR,MOVCC.
	(ANNUL attribute): Delete.
	(test-* pmacros): New arg cc, all callers updated.
	(uncond-br-sem,cond-br-sem): New arg cc, all callers updated.
	* sparc32.cpu (atom-op): Moved to sparccom.cpu and renamed to
	atomic-opc.
	(ldstub,swap): Moved to sparccom.cpu.
	* sparc64.cpu: Add more insns.

1999-02-09  Doug Evans  <devans@casey.cygnus.com>

	* sim-cpu.scm (cgen-semantics.c): Replace CGEN_INSN_ATTR with
	CGEN_ATTR_VALUE.
	(cgen-sem-switch.c): Ditto.
	* sim-decode.scm (-gen-idesc-decls): struct idesc definition
	moved to cgen-engine.h.
	(-gen-insn-sem-type): Delete, struct insn_sem mvoed to cgen-engine.h.
	(-gen-idesc-init-fn,init_idesc): Lookup insn table via descriptor, not
	global.  Cache attributes and insn length in IDESC.
	* sim-model.scm (-gen-cpu-defns): Generate new func @cpu@_prepare_run.
	@cpu@_opcode renamed to @cpu@_get_idata.
	(-gen-mach-defns,@mach@_init_cpu): Don't initialize IDESC table here,
	done later underneath sim_resume.
	(@mach@_mach): Record @cpu@_prepare_run.
	* sim.scm (<hardware-base>,cxmake-get): New arg selector, all callers
	updated.
	(-hw-gen-set-quiet-pc): Ditto.
	(-hw-cxmake-get,-hw-gen-set-quiet): Ditto.
	(<hw-memory>,cxmake-get,gen-set-quiet): Ditto.
	(<hw-addr>,cxmake-get): Ditto.
	(<hw-iaddr>,cxmake-get): Ditto.
	(<pc>,cxmake-get): Ditto.
	(<operand>,cxmake-get,gen-set-quiet,gen-set-trace): Ditto.
	(-op-gen-set-quiet,-op-gen-set-quiet-parallel): Ditto.
	(-op-gen-set-trace,-op-gen-set-trace-parallel): Ditto.
	(<hw-pc>,gen-write): Use hw-selector-default.
	(<hw-register>,gen-write): Ditto.
	(<hw-memory>,gen-write): Ditto.
	(-gen-hw-index-raw,-gen-hw-index): Handle selector.
	(-gen-hw-selector): New proc.

	* desc.scm: New file.
	* desc-cpu.scm: New file.
	* opcodes.scm: Split up into several smaller files.
	* opc-asmdis.scm: New file.
	* opc-ibld.scm: New file.
	* opc-itab.scm: New file.
	* opc-opinst.scm: New file.
	* Makefile.am (desc): New target.
	(opcodes): Update args to cgen-opc.scm.
	* Makefile.in: Rebuild.
	* aclocal.m4: Rebuild.
	* config.in: Rebuild.
	* configure.in: Update arg to AC_INIT.
	Update version number to 0.7.0.  Change AM_EXEEXT to AC_EXEEXT.
	Update AC_PREREG arg to 2.13.  Change AM_PROG_INSTALL to
	AC_PROG_INSTALL.
	* configure: Rebuild.
	* cgen-gas.scm: Update files to load.
	* cgen-opc.scm: Ditto.  Reorganize option letters.
	* cgen-sim.scm: Update files to load.
	* cgen-stest.scm: Ditto.
	* dev.scm (cload): New app "DESC".
	(load-opc): Update files to load.
	(load-gtest,load-sim,load-stest): Ditto.

	* attr.scm (bool-attr?): New proc.
	(attr-list-enum-list): New proc.
	(-attr-sort): Rewrite.
	(attr-builtin!): Give ALIAS attribute a fixed index.
	* utils-cgen.scm (gen-attr-enum-decl): Call attr-list-enum-list to
	calculate attribute enum list.
	(gen-attr-mask): Subtract CGEN_ATTR_BOOL_OFFSET from attribute's enum.

	* insn.scm (-insn-parse): Renamed from parse-insn.

	* hardware.scm (-hw-parse): New arg errtxt, all callers updated.
	(-hw-read): Ditto.

	* mode.scm (-mode-parse): Renamed from parse-mode.

	* operand.scm (<operand>): New member `selector'.
	(<operand>,make!): Use default selector.
	(hw-selector-default): New variable.
	(hw-selector-default?): New proc.

	* pmacros.scm (pmacros-init!): New proc.
	(-pmacro-{make,name,arg-spec,transformer,comment}): New procs.
	(-env-set!): Delete.
	(-pmacro-expand): New proc apply-macro.
	Use it in scan-list,scan.  Scan list first, then see if macro
	invocation.
	(define-pmacro): Rewrite.
	* read.scm (-init-parse-cpu!): Call utils-init!,parse-init!.

	* rtl.scm (-simplify-for-compilation): Ensure at least one mach
	selected if (current-mach) seen.
	(rtx?): Renamed from rtx-uneval?, all callers updated.
	(<c-expr>,gen-set-quiet,gen-set-trace): New arg selector, all callers
	updated.
	(<c-expr-temp>,cxmake-get,gen-set-quiet,gen-set-trace): New arg
	selector, all callers updated.
	(hw:): New arg selector, all callers updated.  Delete old comments
	and code.
	(reg:,mem:): Handle selectors
	* rtx-funcs.scm (reg:): Handle selectors.

	* read.scm: Renamed from cpu.scm.
	(<command>): New class.
	(<reader>): New member commands.
	(reader-add-command!): New proc.
	(reader-lookup-command): New proc.
	(reader-error,-reader-process-expanded,reader-process): New procs.
	(reader-read-file!): New proc.
	(include): Call reader-read-file!.
	(cmd-if): New proc.
	(cpu-load): Call reader-read-file!.
	* utils.scm (num-args): New proc.
	* simplify.inc: New file.
	* *.scm: Delete def-foo procs.  Rewrite define-foo/define-full-foo
	procs.  Move define-normal-foo procs (and abbreviated forms) to
	simplify.inc.  Install define-foo/define-full-foo commands in foo-init!
	routines.
	* fr30.cpu: Include simplify.inc.
	* fr30.opc: CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
	* i960.cpu: Include simplify.inc.
	* m32r.cpu: Include simplify.inc.
	* m32r.opc: CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
	(CGEN_PRINT_NORMAL): Use CGEN_BOOL_ATTR.
	* sparc.cpu: Include simplify.inc.
	* sparc.opc: CGEN_OPCODE_DESC renamed to CGEN_CPU_DESC.
	* utils-cgen.scm (parse-error): Moved to read.scm.
	(sanitize): Rewrite.
	(utils-init!): New proc.

1999-02-02  Doug Evans  <devans@casey.cygnus.com>

	* sparc.cpu: New file.
	* sparc32.cpu: New file.
	* sparc64.cpu: New file.
	* sparccom.cpu: New file.
	* sparc.opc: New file.

1999-01-27  Frank Eigler  <fche@cygnus.com>

	* utils.scm (gen-copyright): New proc.

1999-01-27  Doug Evans  <devans@casey.cygnus.com>

	Parameterize rtl parsing, rather than having lots of little handlers.
	* rtl.scm (<rtx-func>): New members arg-types,arg-modes.
	Delete member traverse.
	(rtx:set-traverse!): Delete.
	(-rtx-valid-types,-rtx-valid-matches): New variables.
	(-rtx-func-lookup): Take symbol or <rtx-func> object as argument
	instead of expression.  All callers updated.
	(def-rtx-node): New args arg-types,arg-modes.
	(def-rtx-syntax-node): Ditto.
	(def-rtx-dual-mode): Ditto.
	(-rtx-macro-expand-list): Renamed from -rtx-macro-maybe-expand-list.
	All callers updated.
	(-rtx-macro-expand): Renamed from -rtx-macro-maybe-expand.
	All callers updated.
	(rtx-macro-expand): New proc.
	(-rtx-traverse-check-args): Delete.
	(-rtx-traverse-normal): Call -rtx-traverse-expr rather than calling
	an rtx specific traverser.
	(-rtx-any-mode?,-rtx-symornum?): New procs.
	(-rtx-traverse-rtx-list,-rtx-traverse-error): New proc.
	(-rtx-traverse-no-mode): Delete.
	(-rtx-traverse-syntax-expr,-rtx-traverse-syntax-no-mode): Delete.
	(-rtx-traverse-operands): Rewrite.
	(-rtx-traverse-expr): Rewrite.
	(rtx-traverse): Don't expand macros here, leave for caller to do.
	(rtx-simplify): Delete.
	(rtx-compile-time-constant?): Rewrite.  Handle FALSE/TRUE for boolean
	attributes.
	(rtx-true?,rtx-false?): Ditto.
	(-rtx-ref-type): Set dest is operand 1 now.
	(-simplify-for-compilation): New proc.
	(semantic-in-out-operands): Recognize regno as an alias for index-of.
	Expand macros before calling rtx-traverse.  Sort operands by name
	to avoid unnecessary semantic formats.
	(semantic-attrs): New proc.
	(rtx-uneval?): Handle (<rtx-func> ...).
	(s-boolifop): Delete arg mode.  All callers updated.
	* rtx-funcs.scm (all non-macros): Add arg-type and arg-mode specs.
	(eq-attr): New arg obj.
	(eq-attr:): Delete.
	* m32r.cpu (rach): Update calls to andif.

	* minsn.scm (-minsn-parse-expansion): Renamed from
	parse-minsn-expansion.
	(-minsn-parse): Renamed from parse-minsn.
	(-minsn-read): Renamed from read-minsn.
	(def-minsn): Don't check APPLICATION here.
	(def-full-minsn): New proc.
	(define-macro-insn): Check APPLICATION here.  Expand macros.
	(define-normal-macro-insn): Ditto.

	* utils.scm (word-value): New arg start-lsb?.
	(word-mask,word-extract): Ditto.
	(split-bits,powers-of-2): Use integer-expt instead of expt.
	(bit-set?): Handle 32 bit values (which are bignums).
	(cg-logand,cg-logxor): New functions.
	* ifield.scm (<ifield>,field-mask): Update call to word-mask.
	(<ifield>,field-value): Update call to word-value.
	(<ifield>,min-value): Use integer-expt instead of expt.
	(<ifield>,max-value): Ditto.

	* hardware.scm (<hw-register>,new-mode): Rename local mode to cur-mode.

	* insn.scm (def-full-insn): Discard ALIAS insns if simulator.

	Compute raw instruction format in addition to semantic based format.
	* iformat.scm: Delete members cti?,sem-in-ops,sem-out-ops.
	(<iformat> accessors): Rename accessors to ifmt-*.
	(<sformat>): New class.
	(fmt-enum): Renamed from fmt:enum.
	(-ifmt-search-key): Rewrite.
	(-sfmt-search-key): New proc.
	(ifmt-analyze): Rename arg include-sem-operands? to compute-sformat?
	Compute iformat and sformat search keys.
	(ifmt-build): Update.
	(sfmt-build): New proc.
	(-ifmt-lookup-ifmt!,-ifmt-lookup-sfmt!): New procs.
	(ifmt-compute!): Compute instruction format <iformat> based on
	instruction fields alone.  Compute new semantic format <sformat>
	based on instruction fields and semantic information.
	(ifmt:lookup): Delete.
	* mach.scm (<arch>): New member sfmt-list, plus accessors.
	(current-sfmt-list): New proc.
	* insn.scm (<insn>): Rename member fmt-tmp to tmp.
	Rename member fmt to ifmt.  New members fmt-desc, sfmt.
	(insn-length,insn-length-bytes): Update.
	(insn:mask-length,insn:mask): Update.
	(insn-lookup-op): Update.
	* gas-test.scm (gas-test-analyze!): Update.
	(gen-gas-test): Ditto.
	* sim-test.scm (sim-test-analyze!): Update.
	(gen-sim-test): Ditto.
	* opcodes.scm (gen-operand-instance-table): Update.
	(gen-operand-instance-ref): Ditto.
	(max-operand-instances): Use heuristic if semantics not parsed.
	(ifmt-opcode-operands): Renamed from fmt-opcode-operands.
	(opcodes-analyze!): Only scan semantics of building operand instance
	tables.
	* sim-cpu.scm (*) Update calls to <iformat>/<sformat> accessors.
	(-gen-extract-ifmt-macro): Renamed from -gen-extract-fmt-macro.
	* sim-decode.scm (*) Update calls to <iformat>/<sformat> accessors.
	(gen-sfmt-argvars-defns): Renamed from gen-ifmt-argvars-defns.
	(gen-sfmt-argvars-assigns): Renamed from gen-ifmt-argvars-assigns.
	* sim-model.scm (*) Update calls to <iformat>/<sformat> accessors.
	* sim.scm (*) Update calls to <iformat>/<sformat> accessors.

	* sim-decode.scm (usable-decode-bit?): Rename from decode-bit?
	New arg lsb0?  All callers updated.
	(decode-bits): New arg lsb0?.  All callers updated.
	(opcode-slots): Update call to bit-set?.  Call integer-expt instead
	of expt.
	(-gen-decode-bits): New arg lsb0?.  All callers updated.
	(build-slots): Call integer-expt instead of expt.
	(build-decode-table-entry): Handle crossing word boundaries better.
	(-gen-decode-switch): New arg lsb0?.  All callers updated.
	(-gen-extract-decls): Rename decode format entry from ifmt to sfmt.

	* enum.scm (define-enum): Rewrite.
	(define-normal-enum): Ditto.
	(def-full-insn-enum): New proc.
	(define-normal-insn-enum): Rewrite.

	* attr.scm (<bitset-attribute>,gen-value-for-defn): Ensure result is
	valid C.
	(<{integer,enum}-attribute>,gen-value-for-defn): Ditto.

	* dev.scm: Add sid support.

	* Makefile.am (opcodes,sim-arch,sim-cpu): New targets.
	(CLEANFILES): Add tmp-*.
	* Makefile.in: Rebuild.

	* doc/Makefile.am: New file.
	* doc/Makefile.in: New file.
	* doc/cgen.texi: New file.
	* Makefile.am (SUBDIRS): Define.
	* Makefile.in: Rebuild.
	* configure.in: Create doc/Makefile.
	* configure: Rebuild.

1999-01-18  Doug Evans  <devans@casey.cygnus.com>

	* insn.scm (insn:syn): Delete.

1999-01-15  Doug Evans  <devans@casey.cygnus.com>

	* fr30.cpu (model fr30-1): Add state variables load-regs,
	load-regs-pending.  Delete h-gr.  Clean up operand names of all units.
	* m32r.cpu (model m32r/d): Clean up operand names of u-exec.
	(model m32rx): Ditto.
	(addi): Simplify function unit usage spec.
	(ld-plus): Rewrite operand names in function unit usage spec.
	(mvtachi,mvtachi-a,mvtaclo,mvtaclo-a,st-plus,st-minus): Ditto.
	* sim.scm (<unit>,gen-profile-code): Redo how operand names are
	overridden.  Allow operand to appear in input and output spec.
	(<insn>,gen-profile-code): string-append -> string-list.

	* ifield.scm (define-ifield): Call pmacro-expand.
	(define-full-ifield,define-normal-ifield): Ditto.
	(define-multi-ifield,define-normal-multi-ifield): Ditto.

	* sim.scm (gen-argbuf-type): Keep leading part of ARGBUF same for
	with-scache and without-scache cases.

1999-01-14  Doug Evans  <devans@casey.cygnus.com>

	* fr30.cpu (fr30-1): Add state variable h-gr.
	Add units u-cti, u-load, u-store, u-ldm, u-stm.
	(all insns): First pass at providing cycle counts.
	* sim.scm (<unit>,gen-profile-code): Only check for output operands
	when initializing unit output operands, ditto for input operands.

	* insn.scm (insn-length,insn-length-bytes): New procs.
	* mach.scm (-adata-set-derived!): Use them.
	* sim-cpu.scm (-gen-sem-case): Ditto.

	* sim-cpu.scm (-gen-trace-record-type): PCADDR->IADDR.
	(-gen-write-case): Ditto.
	(gen-semantic-fn): Ditto.  Split into two:
	-gen-scache-semantic-fn and -gen-no-scache-semantic-fn.  Fix bitrot
	in non-scache case.
	(-gen-all-semantic-fns): Renamed from -gen-all-semantics.  Handle
	scache/no-scache appropriately.  All callers updated.
	(-gen-sem-case): PCADDR->IADDR.
	* sim.scm (gen-argbuf-type): PCADDR->IADDR.

	* sim-decode.scm (*): Replace string-append,string-map with
	string-list,string-list-map where the result is sufficiently large.
	(-gen-decode-insn-table): Go back to simple version for non-scache
	case: just record IDESC in decoder tables and leave field extraction
	to the caller.
	(-gen-decode-switch): Ditto.
	(-gen-decode-fn): Ditto.
	(-gen-extract-decls): Only emit format enum if with-scache?.
	* sim-model.scm (-gen-model-insn-fn): Extract ifields here in
	non-scache case.
	(-gen-model-insn-fns): Don't emit model fns for virtual insns.
	(-gen-insn-timing): Ditto.
	* sim.scm (gen-argbuf-type): Only output sem_fields union in
	with-scache case.

	* sim.scm (-hw-gen-fun-get): Use GET_<H-NAME> macro.
	(-hw-gen-fun-set): Use SET_<H-NAME> macro.

1999-01-12  Doug Evans  <devans@casey.cygnus.com>

	* cpu.scm (keep-mach-validate!): New proc.
	(include): New proc.

	* mach.scm (current-arch-mach-name-list): New proc.
	(-parse-arch-machs): Always return canonical form.
	(def-arch): Validate user specified machs to be kept.
	(def-mach-attr!): Simplify.

	* opcodes.scm (-opcodes-build-operand-instance-table?): New global.
	(option-init!): Initialize it.
	(option-set!): Set it.
	(gen-insn-table-entry): Emit 0 for operand instance ref if not
	output operand instance tables.
	(cgen-opc.in): Only output operand instance tables if asked to.

	* sim.scm (option-init!,option-set!): Clarify returned value.

	* sim.scm (gen-mach-bfd-name): Move from here.
	* utils-cgen.scm: To here.

1999-01-11  Doug Evans  <devans@casey.cygnus.com>

	* fr30.cpu (ilm): Fix comment field.
	(cond-branch): Remove explicit setting of COND-CTI, let cgen
	compute it.

	* rtl.scm (rtx-simplify,rtx-compile-time-constant?): New procs.
	(rtx-true?, rtx-false?): New procs.
	* rtx-funcs.scm (annul): Rename vpc to pc.
	(-rtx-traverse-if): Improve determination of whether then/else parts
	are conditionally executed.

	* sim.scm (-gen-argbuf-fields-union): Move definition of union to
	outer level.
	(gen-argbuf-type): Simplify generated definition (big sem_fields
	union moved outside).

1999-01-11  Ben Elliston  <bje@cygnus.com>

	* doc/porting.texi: New file.

	* doc/intro.texi: New file.
	(Layout): Use @example to insert preformatted ASCII text (such as
	diagrams). @code is inappropriate here.

1999-01-06  Doug Evans  <devans@casey.cygnus.com>

	* ifield.scm (-multi-ifield-read): Fix handling of insert/extract.

	* m32r.opc (print_hash): Cast dis_info.

	* sim-cpu.scm (-gen-hardware-types): Sanitize get/set macros.
	* sim.scm (<sim-hardware>,make!): Emit a comment for user-written
	get/set macros.

1999-01-05  Doug Evans  <devans@casey.cygnus.com>

	* i960.cpu (f-br-disp): Remove RELOC attribute.
	(f-ctrl-disp): Ditto.
	(callx-disp): set-quiet -> set for (reg h-gr 2).
	(callx-indirect,callx-indirect-offset): Ditto.

	* Makefile.am (gas-test): Fix dependencies.
	* Makefile.in: Rebuild.
	* cgen-gas.asm: File creation args are -<uppercase-letter>.
	* gas-test.scm (break-out-syntax,make-file-name): Delete.
	(gas-test-analyze!): Use syntax-break-out.
	* sim-test.scm (break-out-syntax,make-file-name): Delete.
	(sim-test-analyze!): Use syntax-break-out.
	(cgen-build.sh): Use gen-file-name.
	(cgen-allinsn.exp): Compute and pass all machs to run_sim_test.
	* insn.scm (syntax-break-out): New proc.
	* utils.scm (gen-file-name): New proc.

	* fixup.scm (nil,<?,<=?,>?): Delete.

	* utils.scm (count-true): Rewrite.

	* slib/sort.scm: Move sort.scm to slib directory.
	* cpu.scm: Update.

	* iformat.scm (ifmt-compute!): Record empty format.

	* rtl.scm (semantic-in-out-operands): Simplify by moving several
	internal procs outside.  Handle expression register numbers.
	Handle index-of.

	* rtx-funcs.scm (annul): Rename new_pc to vpc.

	* sim-cpu.scm (-gen-cpu-reg-access-defns): Define access fns for
	every register.
	(-gen-write-case): Pass vpc to SEM_BRANCH_FINI.
	(gen-semantic-fn,-gen-sem-case): Ditto.
	(cgen-cpu.c): Define WANT_CPU to @cpu@.
	(cgen-semantics.c): Ditto.
	* sim-decode.scm (-gen-extract-decls): Handle non-with-scache case.
	(gen-ifmt-argvars-defns): New proc.
	(gen-ifmt-argvars-assigns): New proc.
	(-gen-all-extractors): Delete FMT_EMPTY case, now handled like others.
	(-gen-decode-fn): Handle non-with-scache case.
	(cgen-decode.c): Define WANT_CPU to @cpu@.
	* sim-models.scm (-gen-mach-defns): Emit bfd name.
	(cgen-model.c): Define WANT_CPU to @cpu@.
	* sim.scm (gen-ifld-extract-argvar): New proc.
	(<sim-hardware>,make!): Don't emit [GS]ET_H_FOO macros for elements
	with FUN-ACCESS specified.
	(hw-fun-access?): New proc, as <hardware-base>:fun-access? method.
	(<hw-register>,gen-extract): New arg local?.
	(<hw-address>,gen-extract): Ditto.
	(-hw-cxmake-get): Handle non-with-scache case.
	(-hw-gen-set-quiet): Ditto.
	(<hw-address>,cxmake-get): Handle non-with-scache case.
	(gen-op-extract-argvar): New proc.
	(<operand>,gen-record-profile): Rewrite.
	(<operand>,gen-profile-code): Rewrite.
	(<unit>,gen-profile-code): Use -gen-argfld-ref.
	(gen-argbuf-fields-union): New proc.
	(gen-argbuf-type): Use it.  Handle non-scache case.

	* *.scm: class:foo procs renamed to class-foo.
	* attr.scm (<attribute>): New member `for'.
	(-attr-parse): New first value in list for default if
	none specified.
	(non-bool-attr-list,attr:add!): Delete.
	(def-attr): Use current-attr-add!.
	(atlist-attr-value-no-default): New proc.
	(attr-lookup-default): Handle boolean attributes.
	(gen-attr-enum): New proc.
	(-attr-remove-meta-attrs-alist): New proc.
	(attr-nub): New proc.
	(current-attr-list-for): New proc.
	(current-{ifld,hw,op,insn}-attr-list): New procs.
	(attr-builtin!): New proc.
	* cpu.scm (keep-obj?): Rewrite.
	(-init-parse-cpu!): Call arch-init!.
	(-install-builtin!): Call {attr,mode,ifield,insn}-builtin!.
	(-finish-parse-cpu!): Call arch-finish!.
	* enum.scm (enum-list,enum:add,enum:lookup): Delete.
	(def-enum,def-full-enum): Use current-enum-add!.
	(gen-obj-list-enums): New proc.
	* hardware.scm (hw:add!,hw:lookup): Delete.
	(def-hardware,def-hardware-ext): Use current-hw-add!.
	(hw:std-attrs,hw:attr-list): Delete.
	(hardware-builtin!): Define builtin hardware attributes.
	* ifield.scm (ifld:add!,ifld:lookup): Delete.
	(def-ifield,def-full-ifield): Use current-ifld-add!.
	(ifld:std-attrs,ifld:attr-list): Delete.
	(ifield-builtin!): New proc.
	* insn.scm (insn:add!,insn:lookup): Delete.
	(def-full-insn): Use current-insn-add!.
	(insn:std-attrs): Delete.
	(insn-builtin!): New proc.
	* mach.scm (<arch>): New members attr-list,enum-list,op-list,
	minsn-list.
	(<arch-data>): New member machs.
	(current-attr-list,current-enum-list): New procs.
	(current-op-list,current-minsn-list): New procs.
	(current-{attr,enum,ifld,op,hw,insn,minsn,cpu,mach,model}-add!): Ditto.
	(current-{attr,enum,ifld,op,hw,insn,minsn,cpu,mach,model}-lookup):
	Ditto.
	(-parse-arch-machs): New proc.
	(-arch-parse): New arg machs, all callers updated.
	(-arch-read): Handle machs spec.
	(def-arch): Define MACH attribute here.
	(mach-init!,mach-finish!): Not here.
	(cpu:add!,cpu:lookup): Delete.
	(def-cpu): Use current-cpu-add!.
	(<mach>): New member bfd-name.
	(-mach-parse): New arg bfd-name, all callers updated.
	(-mach-read): Handle bfd-name spec.
	(mach:add!,mach:lookup): Delete.
	(def-mach): Use current-mach-add!.
	(def-mach-attr!): New proc.
	(arch-init!): New proc.
	(arch-finish!): New proc.  Reverse all object lists here.
	* minsn.scm (minsn-list,minsn-add!,minsn:lookup): Delete.
	(def-minsn): Use current-minsn-add!.  Ignore minsn if mach not kept.
	(define-normal-macro-insn): Ignore minsn if mach not kept.
	* mode.scm (mode-builtin!): New proc.
	* model.scm (model:add!,model:lookup): Delete.
	(def-model): Use current-model-add!.
	* opcodes.scm (insn:attr-list): Delete.
	(attr-bool-gen-decl,attr-bool-gen-defn): New procs.
	(gen-attr-table-defn): Emit value for default.
	(gen-attr-table-defns): Emit bool_attr.  Emit ifield attr table.
	(op:attr-list): Delete.
	(gen-operand-decls,gen-insn-decls): New proc.
	(compute-insn-attr-list): Delete.
	(cgen-opc.h): Reorganize and simplify.
	* operand.scm (-operand-list,operand-list,op:add,op:lookup): Delete.
	(def-operand,def-full-operand): Use current-op-add!.
	(op:std-attrs): Delete.
	(operand-enum): Delete.
	(operand-builtin!): Define builtin operand attrs.
	* utils-cgen.scm (sanitize): Update calls to lookup procs.
	(gen-attr-enum-decl): Use gen-obj-list-enums.
	(gen-obj-attr-defn): Renamed from gen-attr-defn, all callers updated.
	Rewrite.
	* fr30.cpu (define-arch): Add machs spec.
	(f-i4): SIGNED attribute -> !UNSIGNED.
	(f-disp8,f-disp9,f-disp10,f-s10,f-rel9,f-rel12): Ditto.
	(HASH-PREFIX): Define operand attribute.
	(NOT-IN-DELAY-SLOT): Define insn attribute.
	* i960.cpu (define-arch): Add machs spec.
	* m32r.cpu (define-arch): Add machs spec.
	(h-hi16): Remove UNSIGNED,SIGN-OPT attributes.
	(HASH-PREFIX): Define operand attribute.
	(FILL-SLOT): Define insn attribute.

Thu Dec 17 17:15:06 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (stilm): Correct mask for and operation.

1998-12-17  Doug Evans  <devans@casey.cygnus.com>

	* sim-test.scm (cgen-build.sh): Use `mach' to specify machs, not `cpu'.
	Replace START/EXIT with start/pass.
	(gen-sim-test): Delete ".text".

Wed Dec 16 16:16:39 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (cond-branch): Conditional branches not allowed in delay slots.

Tue Dec 15 17:30:01 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu: Add NOT-IN-DELAY-SLOT as appropriate.
 	(h-sbit): Make it FUN-ACCESS.
	(h-gr): Reorder so that general regs are always printed by number.

1998-12-14  James E Wilson  <wilson@wilson-pc.cygnus.com>

	* i960.cpu (flushreg): Use nop.

1998-12-14  Doug Evans  <devans@casey.cygnus.com>

	* m32r.cpu (default-alignment): Specify.
	* mach.scm (<arch-data>): New member default-alignment.
	(adata:default-alignment): New proc.
	(current-arch-default-alignment): New proc.
	(-arch-parse): New arg default-alignment.
	(parse-alignment): New proc.
	(-arch-read): Handle default-alignment spec.

	* rtx-funcs.scm (attr:): Pass attr-name through gen-c-symbol.

	* insn.scm (f-%): Delete.
	* sim-cpu.scm (gen-define-fields): Delete support for f-%.  Can
	be readded if proved useful.
	(gen-extract-fields): Ditto.  Use gen-ifetch.
	* sim.scm (<hw-memory>,cxmake-get): Pass pc to GETMEM*.
	(<hw-memory>,gen-set-quiet): Pass pc to SETMEM*.

Mon Dec 14 16:20:59 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (div2): Set zbit properly when remainder not zero.

1998-12-14  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu: Remove stub macros.
	(div1): Shift bits from mdl into mdh. Don't use addc/subc.
	(div2): Don't use addc/subc.

1998-12-11  Doug Evans  <devans@casey.cygnus.com>

	* utils-cgen.scm (gen-obj-sanitize): Only catch spelling errors
	if opcodes.

Thu Dec 10 18:37:34 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (div0s,div0u,div1,div2,div3,div4s): Implemented.

Thu Dec 10 12:28:53 1998  Doug Evans  <devans@canuck.cygnus.com>

	* cpu.scm (keep-all?): New proc.
	(assert-keep-all): Use it.
	* opcodes.scm (gen-ifmt-table-1): Use gen-obj-sanitize.
	* utils-cgen.scm (gen-obj-sanitize): Handle macro-insns.
	Check for spelling errors.

1998-12-09  Doug Evans  <devans@casey.cygnus.com>

	* rtl.scm (s-convop): Call -rtx-sem-mode.

Tue Dec  8 10:58:38 1998  Doug Evans  <devans@canuck.cygnus.com>

	* hardware.scm (-parse-hw-type): parse! no longer returns a result.
	(-parse-hw-profile): Ditto.
	(<hw-register>, parse!): Return `void' result.
	(<hw-pc>, parse!): Ditto.
	(<hw-memory>, parse!): Ditto.
	(<hw-immediate>, parse!): Ditto.
	(<hw-address>, parse!): Ditto.

	* ifield.scm (-ifield-parse): Validate encode/decode fields.
	(-ifld-parse-encode-decode): New proc.
	(-ifld-parse-encode,-ifld-parse-decode): New proc.
	(-multi-ifield-parse): Set encode/decode to #f.
	(ifld:decode-mode): New proc.
	* utils.scm (nub): Rewrite.
	* operand.scm (op-nub): Rewrite.
	* sim.scm (<ifield>, gen-type): Rewrite.
	(-gen-ifld-argbuf-defn): New proc.
	(gen-ifld-extract,gen-ifld-trace-extract): New procs.
	(<sim-hardware>): Forward gen-trace-extract onto `type'.
	Ditto for needed-iflds.  gen-argbuf-defn renamed from gen-argbuf-elm.
	(<hardware-base>): New method needed-iflds.  gen-argbuf-defn
	renamed from gen-argbuf-elm, return "".  Rewrite gen-extract.
	New method gen-trace-extract.
	(<hw-register>): New method needed-iflds.  gen-argbuf-defn renamed
	from gen-argbuf-elm, return "" if not caching register address.
	Rewrite gen-extract.  New method gen-trace-extract.
	(<hw-address>): New methods needed-iflds, gen-argbuf-defn,
	gen-extract, gen-trace-extract, cxmake-get.
	(<hw-iaddress>): New method cxmake-get.
	(op-needed-iflds): New proc.
	(<operand>): Delete methods gen-argbuf-elm, gen-extract.
	(-gen-op-argbuf-defn): New proc.
	(gen-op-extract): Renamed from op:extract.
	(gen-op-trace-extract): Renamed from op:trace-extract.
	(fmt-extractable-operands): Renamed from fmt-semantic-operands
	and rewritten.
	(gen-argbuf-elm): Rewrite.
	* sim-decode.scm (-gen-record-args): Update.

	* sim.scm (c-cpu-macro): Renamed from cpu-deref.  All uses changed.

	* pmacros.scm (-pmacro-expand): Handle procedural macros in
	argument position.  Flag symbolic macros in function position as
	an error.
	(define-pmacro): Handle quoting in definition of symbolic macros.
	(pmacro-trace): Call -pmacro-expand, not -pmacro-ref.

Tue Dec  8 13:06:44 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.opc (parse_register_list): Account for reverse masks
	for load and store.
	(print_register_list): Ditto.
	(parse_low_register_list_ld): New function.
	(parse_hi_register_list_ld): New function.
	(parse_low_register_list_st): New function.
	(parse_hi_register_list_st): New function.
	(print_hi_register_list_ld): New function.
	(print_hi_register_list_st): New function.
	(print_low_register_list_ld): New function.
	(print_low_register_list_st): New function.
	* fr30.cpu (ldr15dr): Implement workaround.
	(ldm0,ldm1,stm0,stm1): Implemented.

1998-12-08  Doug Evans  <devans@casey.cygnus.com>

	* configure.in: Rename --with-hobbit to --with-cgen-hobbit.
	* configure: Regenerate.
	* Makefile.am (WITH_HOBBIT): Update.
	(cgen-hob.c): Remove Makefile dependency.
	(cgen.o): Depend on cgen-gh.h, config.h.
	* Makefile.in: Regenerate.
	* aclocal.m4: Regenerate.

1998-12-07  James E Wilson  <wilson@wilson-pc.cygnus.com>

	* i960.cpu, i960.opc: New files.

Mon Dec  7 14:30:24 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.opc (parse_register_number): New function.
	(parse_register_list): New function.
	(parse_low_register_list): Use parse_register_list.
	(parse_hi_register_list): Use parse_register_list.
	* fr30.cpu (sth): Fix assembler syntax. Implement more
	insns.

Fri Dec  4 16:07:13 1998  Doug Evans  <devans@canuck.cygnus.com>

	* sim-cpu.scm (cgen-sem-switch.c): Update definition of TRACE_RESULT.
	* sim-decode.scm (-gen-record-args): Update call to TRACE_EXTRACT.
	* sim.scm (-op-gen-set-trace): Update call to TRACE_RESULT.
	(-op-gen-set-trace-parallel): Ditto.
	(gen-argbuf-type): New ARGBUF members trace_p,profile_p;

	* fr30.cpu (call,calld): Fix setting of pc.
	(f-op5): Fix start bit number.

Fri Dec  4 17:06:28 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (st): Fix operand ordering. Implement more
	insns.

Thu Dec  3 23:59:40 1998  Doug Evans  <devans@canuck.cygnus.com>

	* ifield.scm (ifld:mode,ifld:hw-type): New procs.
	* iformat.scm (fmt-opcode-operands): Move to opcodes.scm.
	(fmt-semantic-operands): Move to sim.scm.
	* opcodes.scm (fmt-opcode-operands): Moved here from iformat.scm.
	* operand.scm (<hw-index>): New member `name'.  All builders updated.
	(<hw-index>): New method get-name.
	(op-profilable?): Moved to sim.scm.
	(op-nub): New proc.
	* sim.scm (fmt-semantic-operands): Moved here from iformat.scm.
	(op-profilable?): Moved here from operand.scm.
	(gen-extract-type): Delete.
	(c-argfld-macro): Renamed from c-ifield-macro.  All uses updated.
	(-gen-argfld-ref): New proc.
	(-gen-ifld-argfld-name): New proc.
	(gen-ifld-argfld-ref): Renamed from -gen-ifld-ref.  All uses updated.
	(-gen-ifld-decoded-val): Renamed from -gen-ifld-raw-val.
	(-gen-hw-index-argfld-name,-gen-hw-index-argfld-ref): New procs.
	(<hardware-base>): Delete method gen-extract-type.  New method
	gen-argbuf-elm.
	(<hw-register): Ditto.  Update method gen-extract.
	(<operand>, method gen-argbuf-elm): Rewrite.
	* rtl.scm (semantic-in-out-operands): Handle (ifield f-name).
	(s-cmpop): Fix handling of eq,ne for unsigned modes.
	* rtx-funcs.scm (eq,ne,lt,le,gt,ge,ltu,leu,gtu,geu): Update.

	* sim-decode.scm (-gen-record-args): Tweak.

	* sim.scm (gen-argbuf-elm): Handle case of all constant opcode fields.

Thu Dec  3 14:23:27 1998  Dave Brolley  <brolley@cygnus.com>

	* doc/porting: Fix typo: gas->sim.
	* fr30.opc (print_m4): New function.
	* fr30.cpu: Implemented many insns.

Thu Dec  3 00:03:16 1998  Doug Evans  <devans@canuck.cygnus.com>

	* rtl.scm (build-reg-operand!): Remove redundant setting of hw-name.

	* fr30.cpu (f-rel9): Delete RELOC attribute.
	(f-rel12): Add PCREL-ADDR attribute.
	(label9): Make an h-iaddr, not h-uint.  Delete asm print spec.
	(label12): Delete PCREL-ADDR attribute.  Make an h-iaddr, not h-sint.
	* fr30.opc (print_label9): Delete.

	* iformat.scm (ifmt-analyze): Check attributes derived from semantic
	code for CTI indicators.
	* insn.scm (insn-cti?): Simplify.
	* utils-cgen.scm (atlist:cti?): New proc.

1998-11-30  Doug Evans  <devans@casey.cygnus.com>

	* fr30.cpu (arch): default-insn-bitsize -> default-insn-word-bitsize.
	(f-i20-4,f-i20-16,f-i20): New fields.
	(i20): New operand.
	(ldi8): Implement.
	(ldi20): New insn.
	(ldi32m): Delete.
	(jmpd): Implement.
	* fr30.opc (CGEN_DIS_HASH_SIZE,CGEN_DIS_HASH): Define in opc.h.
	* m32r.cpu (arch): default-insn-bitsize -> default-insn-word-bitsize.
	* mach.scm (arch-data): Ditto.
	(current-arch-default-insn-word-bitsize): Renamed from
	current-arch-default-insn-bitsize [ya, that's a pretty long name].
	(-arch-read): Update.

	* hardware.scm (hw:attr-list): Move here ...
	* opcodes.scm: ... from here.

	* ifield.scm (fld:bitrange): Delete.
	(fld:word-offset,fld:word-length): New procs.
	(ifield?): Use class-instance.
	(<ifield>, method field-start): Rewrite.
	(ifld:enum): New proc.
	(<ifield>, methods field-mask,field-value): Rewrite.
	(-ifield-parse): Rewrite.
	(<multi-ifield> support): Rewrite.
	(ifld-beyond-base?): Rewrite.
	(ifld:std-attrs): New variable.
	(ifld:attr-list): New proc.
	* iformat.scm (-compute-insn-mask): Rewrite.
	* insn.scm (-parse-insn-format): New arg errtxt, all callers updated.
	Simplify.
	(-parse-insn-format-symbol,-parse-insn-format-list): New procs.
	* opcodes.scm (<hardware>): No longer forward gen-insert,gen-extract
	onto type.
	(<operand>): Ditto.  Forward onto index instead.
	(gen-ifld-decls,gen-ifld-defns): New procs.
	(ifld:insert,ifld:extract): New procs.
	(<ifield>): New methods gen-insert, gen-extract.
	(<multi-ifield>): Ditto.
	(<hw-index>): Forward gen-insert,gen-extract onto value.
	(<hw-asm>): Delete insert/extract support.
	(<hw-register,hw-memory,hw-immediate>): Ditto.
	(gen-hash-defines): Use string-list.
	Define CGEN_MAX_IFMT_OPERANDS.
	(gen-switch): Use string-list,string-list-map.
	(gen-fget-switch,gen-fset-switch): Use string-list.
	(gen-parse-switch,gen-insert-switch): Ditto.
	(gen-extract-switch,gen-print-switch): Ditto.
	(gen-insert-switch,gen-extract-switch): New local `total_length'.
	(gen-ifmt-table-1,gen-ifmt-table): New procs.
	(gen-ifmt-entry): Renamed from gen-iformat-entry, rewrite.
	(gen-ivalue-entry): New proc.
	(gen-insn-table-entry): Use string-list.  Update iformat,ivalue
	computation.  Use 0 for operand ref table if ALIAS insn.
	(gen-minsn-table-entry): Use string-list.
	(gen-macro-insn-table): Temporarily emit format tables for ALIAS insns.
	(gen-opcode-open): Record address of ifield table.
	(cgen-opc.h): Call gen-ifld-decls.
	(cgen-opc.in): Call gen-ifld-defns, gen-ifmt-table.
	* types.scm (<bitrange>): New members word-offset,word-length.
	Delete member total-length.  Delete methods start,mask,value.
	(bitrange:word-offset,bitrange:word-length): New procs.
	* sim-cpu.scm (gen-define-fields): Simplify.
	(gen-extract-fields): Simplify.
	* sim.scm (<ifield>, gen-ifld-extract): Rewrite.
	(<ifield>): New methods gen-ifld-extract-decl.
	Delete method gen-ifld-extract-beyond.
	(<multi-ifield>): New methods gen-ifld-extract-decl.
	(<multi-ifield>, method gen-ifld-extract): Implement.
	(-gen-ifld-extract-base,-gen-ifld-extract-beyond): New procs.
	(gen-ifld-exttact,gen-ifld-extract-beyond): Delete.

	* rtl.scm (-rtx-traverse-no-mode): Process operands.
	(-rtx-traverse-syntax-no-mode): New proc.
	(semantic-in-out-operands): Watch for `delay' and add DELAY-SLOT attr.
	(s-ifield): New proc.
	(s-shop): Don't prepend `unsigned' for unsigned modes.
	* rtx-funcs.scm (ifield): New rtx function.
	(ref,symbol): Use standard -rtx-traverse-syntax-no-mode.
	(delay): New rtx function.
	* insn.scm (insn:std-attrs): Add DELAY-SLOT.

	* cos.scm (-elm-make-method-getter): Fix typo.

	* utils.scm (backslash): Handle lists of strings.

Thu Nov 26 11:47:29 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (f-rel9): Correct for pc+2.
	(label9): Use print_label9.
	* fr30.opc (print_label9): New function.

Tue Nov 24 11:19:35 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu: Change $r13,$r14,$r15 to uppercase.
	* fr30.opc (parse_low_register_list): Renamed.
	(parse_hi_register_list): Renamed.
	(print_hi_register_list): Renamed.
	(print_low_register_list): Renamed.

Mon Nov 23 18:26:36 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (f-rel9): Now a pc relative offset.

1998-11-23  Doug Evans  <devans@casey.cygnus.com>

	* opcodes.scm (op-asm): Move to here, from operands.scm.
	(<op-asm>, method parse!): Validate arguments.
	(<operand>, method gen-function-name): Fix thinko.
	* operand.scm (<operand>, method make!): Don't set op-asm here.
	* utils.scm (list-elements-ok?): New proc.

	* opcodes.scm: Clean up pass.

1998-11-20  Doug Evans  <devans@tobor.to.cygnus.com>

	* fr30.cpu (int): Defer saving of ps,pc and setting ibit,sbit to
	the fr30_int function.
	(h-cr): Remove PROFILE,CACHE-ADDR attributes.
	(h-dr): Add FUN-ACCESS attribute.

1998-11-20  James E Wilson  <wilson@wilson-pc.cygnus.com>

	* sim-model.scm (-gen-mach-defns): Use gen-sym instead of obj:name
	for C symbol for models array.

Thu Nov 19 15:57:45 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.opc (parse_reglist_low): New function.
	(parse_reglist_hi): New function.
	(print_reglist_low): New function.
	(print_reglist_hi): New function.
	* fr30.cpu: Finish remaining insn stubs.

1998-11-19  Doug Evans  <devans@tobor.to.cygnus.com>

	* sim.scm (-gen-extract-word): Handle fields shorter than entire word.

	* fr30.cpu (ldi32m): Don't use for disassembly.

Wed Nov 18 21:34:41 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (int): Implement it.

1998-11-18  Doug Evans  <devans@casey.cygnus.com>

	* rtx-funcs.scm (nop): Fix C code.

	* rtl.scm (semantic-in-out-operands): Fix setting of sem-attrs.

	* fr30.cpu (f-i32): New ifield.
	(i32): New operand.
	(ldi32): New insn.
	(ldi32m): New macro insn.
	(inte): Provide simple version for now.

	* sim-arch.scm: New file.
	* sim.scm: Move architecture support generation to sim-arch.scm.
	* cgen-sim.scm: Load sim-arch.scm.
	* dev.scm: Ditto.

	* hardware.scm (pc?) New proc.
	(class <hardware-base>): Rewrite method 'pc?.
	(class <hardware>): Forward 'pc? to the hardware type.
	(class <hw-pc>): New method 'pc?.

	Add support for variable length ISAs.
	* ifield.scm (ifld-beyond-base?): New proc.
	* m32r.cpu: Remove integral-insn? spec.
	* mach.scm (arch:derived,arch:set-derived!): New procs.
	(arch:app-data,arch:set-app-data!): New procs.
	(class <arch>): New members derived, app-data.
	(class <cpu>): Delete member integral-insn?.
	(cpu:integral-insn?): Delete.
	(-cpu-parse): Delete arg integral-insn?.  All callers updated.
	(-cpu-read): Delete integral-insn? support.
	(state:decode-assist): Delete.
	(state:int-insn?): Delete.
	(<derived-arch-data>): New class.
	(-adata-set-derived!): New proc.
	(mach-finish!): Call it.
	* opcodes.scm (<hw-asm>, method gen-extract): Pass pc to C handler.
	(gen-operand-instance): Add COND_REF support.
	(gen-operand-instance-table): Ditto.
	(gen-hash-defines): Update.
	(gen-extract-switch): Update type of `insn_value' arg.
	(gen-opcode-open): Update type of `value' arg of dis_hash_insn.
	* rtl.scm (-rtx-ref-type): Renamed from -rtx-set?.  All callers
	updated.
	(semantic-in-out-operands): Compute UNCOND-CTI,COND-CTI from rtl.
	* sim-cpu.scm (gen-define-fields): Create vars to hold insn value
	beyond the base insn (for large insns).
	(-gen-extract-beyond-var-list): New proc.
	(gen-extract-fields): Handle large insns.
	(-gen-write-case): Update sem_arg computation.
	Update initial vpc computation.
	(gen-semantic-fn): Ditto.  Update type of `insn'.
	(-gen-sem-case): Update sem_arg computation.
	Update initial vpc computation.
	* sim.scm (<ifield>, gen-ifld-extract): Renamed from `extract'.
	(-gen-extract-word): New proc.
	(<ifield>): New method gen-ifld-extract-beyond.
	(gen-ifld-extract-beyond): New proc.
	* types.scm (bitrange-overlap?): New proc.

	* utils.scm (bits->bytes): New proc.
	(bytes->bits): New proc.

	Move extraction support into decoder.
	* sim-cpu.scm (-gen-record-args,-gen-record-profile-args,
	-gen-extractor,-gen-all-extractors,cgen-extract.c): Move extraction
	support to sim-decode.scm.
	* sim-decode.scm (-gen-decode-insn-table): Change decoder data to
	be array of IDESC,FMT entries.  Make the array const.
	(-gen-gcc-label-table): Make array const.
	(-gen-decode-switch): Branch to extraction code after insn has been
	identified.
	(-gen-decode-insn-globals): Delete extract handler from
	@cpu@_insn_sem.
	(gen-decode-fn): Add extraction support.
	(-gen-sem-fn-decls): Delete extraction fn decls.
	(-gen-idesc-decls): Update @cpu@_decode decl.
	(-gen-idesc-init-fn): Delete extraction support.
	(-gen-extract-decls): New proc.

	* sim-cpu.scm (cgen-sem-switch.c): Update switch test.
	(sim-finish!): Surround pbb only code with #if WITH_SCACHE_PBB.

	* sim-decode.scm (build-decode-table-entry): New arg invalid insn.
	All callers updated.
	(table-entry:make): Record insn value as insn object, not name.
	All uses updated.

	* hobbit.scm (path_basename): Renamed from `basename' to avoid
	collision with C function.
	(path_dirname): Similarily.
	* hobbit.c,hobbit.h: Rebuild.

Wed Nov 18 11:26:17 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu (dir2r15-predec-stub): Reference to R15 must be indirect.

Mon Nov 16 19:19:50 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu: Implement more instruction stubs.

Thu Nov 12 19:20:28 1998  Dave Brolley  <brolley@cygnus.com>

	* fr30.cpu: Implement more instruction stubs.

Tue Nov 10 10:53:55 1998  Doug Evans  <devans@canuck.cygnus.com>

	* rtl.scm (-rtx-expr-mode-name): Handle sequence locals.

	* rtx-funcs.scm (zflag:,zflag,nflag:,nflag): New rtx fns.

	* operand.scm (<pc>, method make!): FAKE renamed to SEM-ONLY.
	(op:std-attrs): Ditto.
	* opcodes.scm (gen-operand-instance): Ditto.
	(gen-switch): Ditto.
	* m32r.cpu (condbit,accum): Update.
	* fr30.cpu (nbit,vbit,zbit,cbit): Update.

Mon Nov  9 14:30:51 1998  Doug Evans  <devans@seba.cygnus.com>

	* enum.scm (-enum-read): Fix typo.

	* iformat.scm (-ifmt-search-key): Simplify a little.

Mon Nov  9 12:07:56 1998  Dave Brolley  <brolley@cygnus.com>

	* doc/porting: semantics.c -> sem.c.
	* Makefile.in: Regenerate.
	* fr30.cpu (add): Change ADD to add. Add more registers and set
	status bits on 'add' instruction.

Fri Nov  6 18:15:05 1998  James E Wilson  <wilson@wilson-pc.cygnus.com>

	* sim.scm (-gen-arch-model-decls):  Default MAX_UNITS to 1 instead
	of 0.

Fri Nov  6 17:43:16 1998  Doug Evans  <devans@seba.cygnus.com>

	* minsn.scm (minsn:enum): Update, call current-arch-name.

	* pmacros.scm (-pmacro-expand): Make `cep' a variable.

	* Makefile.am (CGEN_HOB_INPUT_FILES): Add pmacros.scm,enum.scm,
	mach.scm,model.scm,types.scm,ifield.scm,minsn.scm.
	(ARCH,CGEN,CGENFLAGS): New variables.
	(gas-test,sim-test): New rules.
	* Makefile.in: Rebuild.
	* configure.in (arch): Define.
	* configure: Rebuild.

	* cgen-hob.scm (*UNSPECIFIED*): Renamed from UNSPECIFIED.
	* All .scm files: Ditto.

	* dev.scm: Fix gas-test call to cpu-load.
	* gas-test.scm: Clean up pass to remove bit-rot.
	* sim-test.scm: Ditto.

	* enum.scm (read-enum): Fix typo in `vals' handling.

	* hardware.scm (-parse-hw-type): Fix typo.
	(parse-hardware): Rename `asm' to `aasm' to avoid GCC reserved word.
	(def-hardware,define-normal-hardware): Ditto.

	* hobbit.scm (*case-sensitive-flag*): New configuration variable.
	(display-var): Use it.
	* hobbit.c: Rebuild.
	* hobbit.h: Rebuild.

	* ifield.scm (-ifield-read): Rename local `length' to `length-' to
	avoid hobbit problem.
	* mach.scm (-cpu-read): Rename local `parallel-insns' to
	`parallel-insns-' to avoid hobbit problem.

Fri Nov  6 17:19:12 1998  Doug Evans  <devans@canuck.cygnus.com>

	* m32r.opc (parse_hi16): Fix call to cgen_parse_address.
	(parse_slo16,parse_ulo16): Ditto.
	* opcodes.scm (<hw-address>, method gen-parse): Ditto.

Thu Nov  5 13:04:53 1998  Doug Evans  <devans@canuck.cygnus.com>

	* Makefile.am (GUILELDFLAGS,GUILELDADD): New variables.
	(cgen_LDFLAGS,cgen_LDADD,hob.x): Use them.
	* Makefile.in: Rebuild.
	* insn.scm (define-normal-insn): Expand pmacros.
	* mode.scm (<mode>): New member `host?'.  All uses updated.
	(mode:host?): New proc.
	* rtl.scm (define-rtx-node): Make a syntax proc, not a macro.
	(define-rtx-syntax-node,define-rtx-macro-node): Ditto.
	(define-rtx-dual-mode): Ditto.
	(s-index-of): New proc.
	(s-unop): Use plain C for host mode operations.
	(s-binop,s-shop,s-boolifop,s-cmpop): Ditto.
	* rtx-funcs.scm (index-of): New rtx function.
	* sim.scm (<hw-index>): New method cxmake-get.

Wed Nov  4 23:58:08 1998  Doug Evans  <devans@seba.cygnus.com>

	* sim-cpu.scm (-gen-engine-decls): Delete.

Wed Nov  4 18:40:47 1998  Dave Brolley  <brolley@cygnus.com>

	* doc/rtl (Example): Correct Typo.
	* doc/porting: Add 'make dep' step to opcodes port instructions.
	* fr30.opc: New file.
	* fr30.cpu: New file.

Wed Oct 28 13:36:15 1998  Doug Evans  <devans@canuck.cygnus.com>

	* configure.in: Handle guile $exec_prefix = $prefix/foo.
	* Makefile.am (GUILEINCDIR): New variable.
	(INCLUDES): Use it.
	* configure: Regenerate.
	* Makefile.in: Ditto.
	* aclocal.m4: Ditto.

Mon Oct 19 13:19:34 1998  Doug Evans  <devans@seba.cygnus.com>

	* sim-cpu.scm (cgen-extract.c): Delete #include cpu-sim.h
	(cgen-semantics.c): Ditto.
	* sim-decode.scm (cgen-decode.c): Delete #include cpu-sim.h,cpu-opc.h.
	* sim-model.scm (cgen-model.c): Ditto.
	* sim.scm (cgen-arch.h): Delete #include @arch@-opc.h.
	(cgen-arch.c): Delete #include cpu-sim.h,cpu-opc.h.

	* opcodes.scm (read-cpu.opc): Handle empty file.

	* cos.scm (-elm-make-method-setter): Fix typo.

	* cpu.scm (-init-parse-cpu!): Call types-init!.
	(-finish-parse-cpu!): Call types-finish!.
	* ifield.scm (<ifield>): Delete members start,length.
	New member bitrange.
	(<ifield>, methods field-start,field-length): Update.
	(fld:start): New arg insn-len.  All callers updated.
	(<ifield>, methods field-mask,field-value): Update.
	(-ifield-parse): Update.
	(ifield-init!): Update.
	* iformat.scm (compute-insn-length): Simplify.
	(compute-insn-mask): Update.
	* insn.scm (insn:value): Update.
	* mach.scm (<arch-data>): New members default-insn-bitsize,insn-lsb0?.
	(current-arch-default-insn-bitsize): New proc.
	(current-arch-insn-lsb0?): New proc.
	(-arch-parse,-arch-read): Update.
	(<cpu>): New member file-transform.
	(-cpu-parse,-cpu-read): Update.
	* opcodes.scm (<hw-asm>, method gen-extract): Pass ex_info to handler.
	(gen-hash-defines): Define CGEN_INSN_LSB0_P.
	(CGEN_INT_INSN_P): Renamed from CGEN_INT_INSN.
	(gen-insert-switch): Update args of @arch@_cgen_insert_operand.
	(gen-extract-switch): Update args of @arch@_cgen_extract_operand.
	(gen-opcode-open): Set CGEN_OPCODE_INSN_ENDIAN.
	* operand.scm (op:start): Update call to field-start method.
	* sim-decode.scm (opcode-slots): New arg lsb0?.
	(fill-slot!,build-slots): Ditto.
	(build-decode-table-entry,build-decode-table-guts): Ditto.
	(gen-decoder-table,gen-decoder-switch,gen-decoder): Ditto.
	(gen-decode-fn): Ditto.
	(cgen-decode.c): Update call to gen-decode-fn.
	* sim.scm (gen-argbuf-type): Move `semantic' to cpu specific part.
	(-gen-cpu-header,-gen-cpuall-includes): New procs.
	(cgen-cpuall.h): Call -gen-cpuall-includes.
	* types.scm (<bitrange>): New class.
	(types-init!,types-finish!): New procs.
	* utils-cgen.scm (parse-number): New proc.
	(parse-boolean): New proc.
	* utils.scm (word-value): Renamed from shift-bits, rewrite.
	(word-mask): Rewrite.
	* m32r.cpu (define-arch): New fields default-insn-bitsize,insn-lsb0?.
	(m32rxf): New field `file-transform'.
	* m32r.opc (my_print_insn): print_int_insn -> print_insn.

	* hobbit.h: Fix include file name.

Fri Oct  9 16:58:10 1998  Doug Evans  <devans@seba.cygnus.com>

	* slib: New directory of slib files used by cgen/hobbit.
	* hobbit.scm: New file.
	* hobbit.c: New file.
	* hobbit.h: New file.
	* hobscmif.h: New file.
	* hob-main.c: New file.
	* hobslib.scm: New file.
	* hob.sh: New file.
	* Makefile.am: Add support for compiling hobbit, and using compiled
	version of hobbit to compile cgen.
	* Makefile.in: Regenerate.
	* configure.in: Support --with-hobbit.
	* configure: Regenerate.
	* acconfig.h (WITH_HOBBIT): Add.
	* config.in: Regenerate.

	* rtl.scm: New file, was cdl-c.scm.
	Definition of rtx funcs moved to rtx-funcs.scm.
	(semantic-in-out-operands): Rewrite to compute object form of
	semantic code.
	* rtx-funcs.scm: New file.

	* cgen-gh.c: #include "config.h".
	(gh_cadddr,gh_cddddr): New fns.
	(cgh_vector_to_list): New fn.
	(cgh_map1,cgh_map2,cgh_map1_fn2): Rewrite.
	(cgh_init): Prefix qsort procs with "cgh-".
	* cgen-gh.h (gh_cadddr,gh_cddddr,cgh_vector_to_list): Declare.
	* cgen.c: #include "config.h".

	* attr.scm (bitset-attr?): New proc.
	(<bitset-attribute>, method parse-value): Value syntax changed from
	(val1 val2 ...) to val1,val2,....
	(<bitset-attribute>): New method gen-value.
	(<integer-attribute>): New method gen-value.
	(<enum-attribute>): New method gen-value.
	* cpu.scm: Disable debugging evaluator if (not (defined? 'DEBUG-EVAL)).
	(<reader>): New class.
	(CURRENT-ARCH,CURRENT-READER): New globals.
	(keep-mach?): Move here from mach.scm.
	* mach.scm (arch,arch-comment,arch-default-mach): Delete.
	(<arch>): New class.
	(<arch-data>): New class.
	(<cpu>): Make subclass of <ident>.
	(*ENDIAN* variables): Delete.
	(process-state-vars): Delete.
	(mach-finish!): Add `base' value to MACH attribute.
	* hardware.scm (<hardware>): Make subclass of <ident>.
	(hw:std-attrs): New global.
	(hw-profilable?): New proc.
	* ifield.scm (<ifield>): Make subclass of <ident>.
	(sort-ifield-list): Move here from iformat.scm.
	* iformat.scm (<iformat>): Renamed from <insn-format>.
	Make subclass of <ident>.
	(-ifmt-search-key): Include cti? in categorization of formats.
	(ifmt-analyze): Compile semantics (turn to object form).
	* insn.scm (<insn>): Make subclass of <ident>.
	New member compiled-semantics.
	(insn:std-attrs): Add SKIP-CTI, VIRTUAL.
	* mode.scm (<mode>): Make subclass of <ident>.
	(UBI): Delete.
	* model.scm (<unit>): Make subclass of <ident>.
	New members inputs,outputs.
	(<model>): Make subclass of <ident>.  New member state.
	(-unit-parse): Parse inputs,outputs.
	(<iunit>): New class.
	(-insn-timing-parse-model): New proc.
	(parse-insn-timing): Function unit spec rewritten.
	* operand.scm (<operand>): Make subclass of <ident>.
	New members sem-name,num,cond?  New method gen-pretty-name.
	(hw-index-scalar): New global.
	(op-nub-hw): Move here from rtl.scm.
	(op:lookup-sem-name,op-profilable?): New procs.
	* pmacros.scm: Rewrite to pass through hobbit.
	* utils-cgen.scm (gen-attr-defn): Simplify using new gen-value method.
	* utils.scm (logit): Make a macro.
	(bit-set?): Rewrite.
	(high-part): Rewrite.

	* m32r.cpu (define-arch): Move to top of file.
	(cpu family m32rbf): Renamed from m32rb.
	(model m32r/d): Function unit spec rewritten.
	(all insns): Ditto.  Replace UBI with BI.

	* opcodes.scm (gen-attr-table-decls): Declare
	@arch@_cgen_hw_attr_table.
	(gen-attr-table-defns): Generate hw attribute table.

	* sim-cpu.scm (-gen-engine-decls): New proc.
	(-gen-model-decls): New proc.
	(gen-parallel-exec-type): Add new member `written' to struct parexec.
	(-gen-record-args): Add SEM_BRANCH_INIT_EXTRACT if cti insn.
	(-gen-record-profile-args): Simplify.
	(-gen-parallel-sem-case): Delete.
	(gen-semantic-fn): Emit SEM_BRANCH_{INIT,FINI} if cti insn.
	New local `written'.  Delete profiling code.
	(-gen-sem-case): Ditto.
	(-uncond-written-mask,-any-cond-written?): New procs.
	(cgen-sem-switch.c): Include duplicates of insns that can be executed
	parallelly or serially, and write-back handlers for all parallel insns.
	* sim-decode.scm (-gen-decode-insn-globals): Add parallel write-back
	support to initialization of struct insn_sem.
	(-gen-idesc-decls): Add parallel write-back support to struct idesc.
	(-gen-insn-sem-type): Add parallel write-back support to struct
	insn_sem.
	(-gen-idesc-init-fn): Add support for virtual insns.
	Add parallel write-back support.
	* sim-model.scm (gen-model-profile-fn): Delete
	(-gen-model-fn-decls): New proc.
	(-gen-model-insn-fn,-gen-model-insn-fns): New procs.
	(-gen-model-init-fn): New proc.
	(-gen-mach-defns): Initialize insn-name lookup and fast/full engine_fn
	members in @mach@_init_cpu.
	(cgen-model.c): Generate model handlers for each insn.
	* sim.scm (gen-define-field-macro): Cti insns handled differently.
	(<hw-pc>): New method gen-write.
	(<hw-register>, method gen-write): New arg `mode'.
	(<hw-register>): Delete method gen-record-profile!.
	New method gen-profile-index-type.
	(<hw-memory>, method gen-write): New arg `mode'.
	(<hw-address>, method gen-extract): Delete.
	(<hw-address>, method gen-write): New arg `mode'.
	(<hw-index>, method get-write-index): Rewrite.
	(<pc>, method cxmake-get-direct): Delete.
	(<pc>): New method cxmake-get.  Comment out methods
	gen-set-quiet,gen-set-trace.
	(<operand>): New methods gen-argbuf-elm,gen-profile-argbuf-elm,
	gen-profile-index-type,gen-profile-code.
	Delete method gen-pretty-name.  Rewrite method gen-write.
	Delete method cxmake-get-direct.
	(-op-gen-set-trace): Update `written'.
	(-op-gen-set-trace-parallel): Ditto.
	(-gen-hw-index-raw,-gen-hw-index): Handle strings.
	(gen-cpu-insn-enum-decl): Add extra entries for parallel
	insns and their write-back handlers.
	(insn-op-lookup): New proc.
	(<unit>): New method gen-profile-code.
	(<iunit>): New method gen-profile-code.
	(gen-argbuf-elm): Add profiling elements.
	(gen-argbuf-type): Define cti insns separately in their own struct.
	Add member `addr_cache' to this struct.  Add entries for pbb virtual
	insns.  Move semantic entries here from struct scache.
	Delete everything from struct scache except argbuf.
	(<insn>, method gen-profile-locals): Rewrite.
	(<insn>, method gen-profile-code): Rewrite.
	(sim-finish!): Create virtual pbb insns.

Tue Sep 15 15:22:02 1998  Doug Evans  <devans@canuck.cygnus.com>

	* m32r.cpu (h-cr): Add bbpc,bbpsw.
	(h-sm,h-bsm,h-ie,h-bie,h-bcond,h-bpc): Delete.
	(h-psw,h-bpsw,h-bbpsw): Define.
	(rte,trap): Handle bbpc,bbpsw.
	* opcodes.scm (max-operand-instances): Fix typo.
	* sim.scm (<hardware-base>, method 'fun-access?): Don't force virtual
	hardware elements to be fun-access.
	(-hw-gen-fun-get,-hw-gen-fun-set): Fix handling of scalars.

Wed Sep  9 15:28:55 1998  Doug Evans  <devans@canuck.cygnus.com>

	* m32r.cpu (trap): Pass `pc' to m32r_trap.

Mon Aug 10 14:29:33 1998  Doug Evans  <devans@canuck.cygnus.com>

	* opcodes.scm (gen-insn-table-entry): Comment out generation of cdx.

Mon Aug  3 11:51:04 1998  Doug Evans  <devans@seba.cygnus.com>

	* m32r.cpu (cpu m32rb): Renamed from m32r to distinguish from
	architecture name.
	(mach m32r): Update.

	* mach.scm (mach:supports?): New proc.
	* sim-cpu.scm (gen-cpu-reg-access-{decls,defns}): Renamed from
	gen-reg-access-{decls,defns}.
	* sim.scm (gen-reg-access-{decl,defn}): New procs.
	(gen-mach-bfd-name): New proc.
	(gen-arch-reg-access-{decls,defns}): New procs.
	(cgen-arch.[ch]): Output register access cover fns.

	* hardware.scm (hardware-builtin!): Set print handlers for
	h-addr,h-iaddr.
	* m32r.opc (parse_hash,parse_hi16,parse_slo16,parse_ulo16): New arg
	`od'.
	(CGEN_PRINT_NORMAL,print_hash): Ditto.
	(my_print_insn): Ditto.  Delete args buf, buflen.
	* opcodes.scm: Pass `od' (opcode-descriptor) to all C handlers.
	(-hw-asm-specs): Add `handlers' spec.
	(-parse-hw-asm): Lookup class at runtime.  If no asm-spec, use
	`normal-hw-asm'.
	(<hw-asm>): Renamed from <opval>.  New elements parse,insert,extract,
	print.
	(<hw-asm>, gen-insert,gen-extract,gen-print): Use them.
	(<hw-asm>, parse!): New method.
	(gen-insn-table-entry): Print semantics.
	(gen-opcode-open): Renamed from gen-opcode-table.

	* utils.scm (string-write): No longer a macro.
	(-string-write): Handle procedure args.
	* opcodes.scm: Update all calls to string-write.
	* sim-cpu.scm: Ditto.
	* sim-decode.scm: Ditto.
	* sim-model.scm: Ditto.
	* sim.scm: Ditto.

Fri Jul 31 14:40:38 1998  Doug Evans  <devans@seba.cygnus.com>

	* opcodes.scm (cgen-ibd.h,gen-extra-ibd.h): New procs.
	(-gen-insn-builders,-gen-insn-builder): New procs.

Fri Jul 24 11:38:59 1998  Doug Evans  <devans@canuck.cygnus.com>

	* opcodes.scm (gen-syntax-entry): Fix bracketing for -Wall.
	(gen-opcode-table): Properly terminate comment.

Tue Jul 21 10:51:42 1998  Doug Evans  <devans@seba.cygnus.com>

	* Version 0.6.0.
	Clean up pass over everything, so starting fresh.

Copyright (C) 1998-2017 Free Software Foundation, Inc.

Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
notice and this notice are preserved.

Local Variables:
mode: change-log
left-margin: 8
fill-column: 74
version-control: never
End:
