Differentiate between a non-zero string and a constant zero field.
[external/binutils.git] / sim / igen / ChangeLog
1 Tue Sep 16 11:01:07 1997  Andrew Cagney  <cagney@b1.cygnus.com>
2
3         * gen.c (insns_bit_useless): Don't treat string fields restricted
4         to a range of values as useless.
5
6 Mon Sep 15 15:47:21 1997  Andrew Cagney  <cagney@b1.cygnus.com>
7
8         * igen.c (gen_run_c): Handle non-multi-sim case.
9
10         * gen-support.c (gen_support_h): Define SD_ - to replace _SD.
11         Define CIA from cia.
12
13 Thu Sep 11 10:27:39 1997  Andrew Cagney  <cagney@b1.cygnus.com>
14
15         * gen-semantics.c (print_semantic_body): Trace the instruction
16         after it has been validated.
17         (print_semantic_body): Count the instruction using sim-profile.
18         
19 Wed Sep 10 13:35:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>
20
21         * gen-itable.c (gen_itable_h): Collect summary info on instruction
22         table when traversing it.
23         (gen_itable_h): Output an enum defining the max size of each of
24         the itable string members.
25
26 Tue Sep  9 03:30:26 1997  Andrew Cagney  <cagney@b1.cygnus.com>
27
28         * igen.c (gen_run_c): New function. Generate sim_engine_run that
29         looks at the currently selected architecture.
30
31         * gen-engine.c, gen-idecode.c: Add multi-sim support - generate
32         one engine per model.
33         
34         * gen-semantics.c, gen-icache.c gen-support.c:
35         Update.
36
37         * ld-insn.h, ld-insn-h (load_insn_table): Rewrite.  table.h only
38         returns a line at a time.  Parse multi-word instructions.  Add
39         multi-sim support.
40
41         * table.h, table.c: Simplify.  Only parse a single line at a time.
42         ld-insn can handle the rest.
43
44         * filter.h, filter.c (filter_parse, filter_add, filter_is_subset,
45         filter_is_common, filter_is_member, filter_next): New filter
46         operations.
47         (dump_filter): Ditto.
48         
49         * gen.h, gen.c: New file.  Takes the insn table and turns it into
50         a set of decode tables and semantic functions.
51         
52         * ld-insn.c: Copy generator code from here.
53         * gen.c: To here.
54
55 Fri Aug  8 11:43:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>
56
57         * misc.h (NZALLOC): Allocate an N element array of TYPE.
58
59         * table.h, table.c: Simplify table parser so that it only
60         understands colon delimited lines and code blocks.
61         (table_read): Parse '{' ... '}' as a code block.
62         (table_print_code): New function, print out a code block to file.
63         (main): Add suport for standalone testing.
64         
65         * ld-insn.h, ld-insn.c:
66         
67         
68 Mon Sep  1 11:41:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>
69
70         * gen-idecode.c (error_leaf_contains_multiple_insn): Make static.
71         (print_jump_definition, print_jump, print_jump_internal_function,
72         print_jump_insn, print_jump_until_stop_body): Delete, moved to
73         sim-engine.c
74
75         * igen.c (print_itrace_format): Delete unused variable chp.
76         (gen-engine.h): Include.
77
78         * table.c (current_file_name, current_line_entry,
79         current_line_entry): Make static.
80
81 Wed Aug  6 12:31:17 1997  Andrew Cagney  <cagney@b1.cygnus.com>
82
83         * configure.in: Define AR_FOR_BUILD, AR_FLAGS_FOR_BUILD,
84         RANLIB_FOR_BUILD and CFLAGS_FOR_BUILD.
85         * configure.in: Include simulator common/aclocal.m4.
86         * configure.in: Add --enable-sim-warnings option.
87         * configure: Re-generate.
88         
89         * Makefile.in: Use.
90
91         * Makefile.in (tmp-filter): New rule.
92         (igen.o, tmp-table, tmp-ld-decode, tmp-ld-cache, tmp-ld-insn,
93         ld-decode.o, ld-cache.o, ld-insn.o): Fix dependencies.
94         
95         * gen.h, gen.c: New files.
96         
97         * Makefile.in (gen.o, tmp-gen): New rules, update all
98         dependencies.
99         
100 Tue Jun 24 11:46:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>
101
102         * ld-insn.c (load_insn_table): Accept %s as a function type.
103
104 Thu Jun  5 17:14:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>
105
106         * igen.c (print_itrace_prefix): Move printing of insn prefix to
107         here.
108         (print_itrace_format): Drop printing of MY_NAME in instruction
109         trace.  Printing of insn prefix moved.
110         (print_itrace): Ditto.
111
112 Fri May 30 11:27:37 1997  Andrew Cagney  <cagney@b1.cygnus.com>
113
114         * gen-icache.c (print_icache_function_header): Pass
115         table_line_entry instead of separate file and line.
116
117         * table.c (table_entry_read): Set assembler source file/line-nr to
118         the current not initial file.
119         (table_entry_read): Fix line numbering of source files.
120
121         table.h (table_line_entry): New structure.  Exactly specifies a
122         source file/line-nr.
123         (table_*_entry): Add this to all.
124         
125         table.c (table_entry_print_cpp_line_nr): Change to use values from
126         a table_line_entry struct.
127         (table_entry_read): Save table_line_entry in all structures read.
128
129         gen-icache.c, gen-support.c, gen-idecode.c, gen-semantics.c,
130         gen-model.c: Update all references.
131         
132 Thu May 29 10:29:57 1997  Andrew Cagney  <cagney@b1.cygnus.com>
133
134         * igen.c (print_my_defines): Define MY_NAME - a string.  For
135         MY_PREFIX, undefine the name of the function incase some dumb
136         header defined it.  it.
137         (print_itrace): Use MY_NAME not MY_PREFIX.
138
139         * lf.c (lf_write): New function write an N character buffer to the
140         file.
141
142         * igen.c (print_itrace): When available, use the assembler to
143         print the insn-trace.
144         (print_itrace_prefix): New function, print first part of call to
145         print_one_insn.
146         (print_itrace_format): New function, print fmt argument for
147         print_one_insn.
148         
149         * table.c (table_entry_read): Save any assembler lines instead of
150         discarding them.
151
152 Wed May 28 09:55:29 1997  Andrew Cagney  <cagney@b1.cygnus.com>
153
154         * gen-icache.c (print_icache_body): Process immeds.
155
156         * gen-semantics.c (print_semantic_body): When computing NIA, skip
157         any immed words that follow the instruction word.
158
159         * ld-insn.c (parse_insn_format): Parse immeds appended to an
160         instruction.
161
162         * igen.c (main): Allow any register to be specified as the zero
163         register.
164         (semantic_zero_reg): Global, index to zero register.
165
166         * gen-semantics.c (print_semantic_body): Zero selected register.
167
168 Tue May 27 14:12:32 1997  Andrew Cagney  <cagney@b1.cygnus.com>
169
170         * igen.h: Stop options and code gen type bit masks overlaping.
171
172 Fri May 23 12:01:08 1997  Andrew Cagney  <cagney@b1.cygnus.com>
173
174         * gen-semantics.c (print_semantic_body): Incorrect test for
175         zero-r0 code.
176
177 Fri May 16 14:32:31 1997  Andrew Cagney  <cagney@b1.cygnus.com>
178
179         * gen-semantics.c (print_semantic_body): Use common sim-engine
180         interface.
181
182 Fri May 16 11:48:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>
183
184         * gen-semantics.c (print_semantic_body): Add code to clear r0.
185
186         * igen.c (main): Add new option zero-r0, which adds code to clear
187         GPR(0) each cycle.
188
189 Wed May  7 12:31:30 1997  Andrew Cagney  <cagney@b1.cygnus.com>
190
191         * igen.c (print_itrace): Fix so line-nr is passed to trace
192         function.
193
194         * gen-idecode.c (print_idecode_validate): Correct FP code.
195
196         * gen-support.c (gen_support_h): Always pass MY_INDEX to support
197         functions.
198         (print_support_function_name): Ditto.
199
200 Tue May  6 06:12:04 1997  Mike Meissner  <meissner@cygnus.com>
201
202         * igen.c (print_itrace): Call trace_one_insn to trace
203         instructions, rather than doing it directly.
204
205 Mon May  5 14:11:46 1997  Mike Meissner  <meissner@cygnus.com>
206
207         * gen-engine.c (engine_switch_leaf): Remove extra %s.
208         (print_engine_floating_point_unavailable): Wrap in #ifdef
209         UNUSED/#endif, until somebody uses it.
210
211         * gen-idecode.c (error_leaf_contains_multiple_insn): Remove unused
212         variable.
213         (print_jump_until_stop_body): Wrap in #ifdef UNUSED/#endif, until
214         somebody uses it.
215         (print_idecode_validate): Use long formats to print long values.
216
217         * gen-semantics.c (print_idecode_invalid): Set name to "unknown"
218         if we get an unexpected type.
219
220 Fri May  2 13:28:06 1997  Andrew Cagney  <cagney@b1.cygnus.com>
221
222         * igen.c (print_itrace): Pass SD as well as CPU to calls to
223         trace_printf.
224
225         * gen-support.c (gen_support_h): Always pass sim_cia cia to
226         support functions.
227         (print_support_function_name): Ditto.
228
229 Wed Apr 30 17:35:51 1997  Andrew Cagney  <cagney@b1.cygnus.com>
230
231         * gen-support.c (support_c_function): Remove unnecessary memset of
232         cia.
233         * gen-semantics.c (print_semantic_body): Wasn't closing
234         generated comment.
235
236 Tue Apr 29 11:11:12 1997  Andrew Cagney  <cagney@b1.cygnus.com>
237
238         * ld-insn.c (load_insn_table): Report instructions that do not
239         have at least a format and name.
240         (insn_table_find_opcode_field): Check progress is being made.
241
242         * gen-support.c (support_c_function): Report empty function body.
243
244 Thu Apr 24 11:43:45 1997  Andrew Cagney  <cagney@b1.cygnus.com>
245
246         * ld-insn.c (insn_table_expand_opcode): Allow reserved fields to
247         be broken up.
248         (insn_table_expand_insns): Allow special rules to apply to groups
249         of instructions when all members of the group match the special
250         mask/value.
251
252         * gen-semantics.c (print_c_semantic): Ditto.
253         * igen.c (print_semantic_function_formal): Ditto.
254         (print_semantic_function_type): Ditto.
255         * igen.c (print_icache_function_formal): Ditto.
256         * gen-idecode.c (print_idecode_issue_function_body): Ditto.
257
258         * gen-idecode.c (gen_idecode_h): Prepend the global_prefix to the
259         instruction_address type.
260
261         * gen-semantics.c (print_semantic_body): Call cpu_error when an
262         unimplemented instruction is encountered - gives the interpreter
263         the chance to stop correctly.
264
265 Wed Apr 23 20:06:36 1997  Andrew Cagney  <cagney@b1.cygnus.com>
266
267         * igen.c (print_function_name): Allow dot's in instruction names.
268
269 Tue Apr 22 21:46:28 1997  Andrew Cagney  <cagney@b1.cygnus.com>
270
271         * igen.c (main), igen.h: Support new option - delayed-branch -
272         generate code to drive a delayed branch processor.
273
274         * gen-idecode.c (gen_idecode_h): Define instruction_address type.
275
276         * igen.c (print_icache_function_formal): Replace address_word with
277         instruction_address.
278         (print_semantic_function_formal): Ditto.
279         (print_semantic_function_type): Ditto.
280         * gen-idecode.c (print_idecode_issue_function_body): Ditto.
281
282         * gen-semantics.c (print_semantic_body): Ditto.
283         (print_c_semantic): Ditto.
284
285         * gen-support.c (support_c_function): Return a zeroed CIA instead
286         of just zero - works with any cia type.
287
288         * igen.c (print_itrace): For delayed branch case, print just the
289         current instruction.
290         
291 Thu Apr 17 07:02:33 1997  Doug Evans  <dje@canuck.cygnus.com>
292
293         * igen.c (print_itrace): Use TRACE_FOO_P and trace_printf.
294
295 Tue Apr 15 15:20:31 1997  Ian Lance Taylor  <ian@cygnus.com>
296
297         * Makefile.in (INSTALL): Set to @INSTALL@.
298         (INSTALL_XFORM, INSTALL_XFORM1): Remove.
299
300 Mon Apr 14 16:29:34 1997  Ian Lance Taylor  <ian@cygnus.com>
301
302         * Makefile.in (INSTALL): Change install.sh to install-sh.
303
304 Wed Apr  2 18:51:20 1997  Doug Evans  <dje@canuck.cygnus.com>
305
306         * gen-support.c (gen_support_c): sim-state.h renamed to sim-main.h.
307         * gen-idecode.c (gen_idecode_c): Likewise.
308         * igen.c (gen_semantics_c): Likewise.
309
310 Mon Mar 24 10:10:08 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
311
312         * gen-icache.c (print_icache_body): No longer define cpu/sd,
313         support.h now defines CPU/SD globally.
314
315         * gen-model.c (gen_model_h): Ditto.
316
317         * gen-idecode.c (print_idecode_issue_function_body): Ditto.
318         (print_jump): Ditto.
319         (print_jump_until_stop_body): Ditto.
320         (print_idecode_validate): Ditto.
321
322         * gen-icache.c (print_icache_body): Ditto.
323
324         * gen-semantics.c (print_semantic_body): Ditto.
325
326         * igen.c (print_semantic_function_formal): Rename cpu to sim_cpu,
327         processor to cpu.
328         (print_icache_function_formal): Ditto.
329
330         * gen-support.c (print_support_function_name): Include sd/cpu arg
331         in support function argument list.
332         (support_c_function): Generate code to cpu/sd from sd/cpu.
333         (gen_support_h): Define _SD the argument prefix for all support
334         functions.  Define SD/CPU to determine sd/cpu from value of _SD
335         macro.
336
337 Tue Mar 18 15:52:24 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
338
339         * gen-support.c (gen_support_c): Update for renaming of engine to
340         sim-state.
341         
342         * igen.c: Ditto.
343         * gen-idecode.c (gen_idecode_c): Ditto.
344
345 Mon Mar 17 15:17:07 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
346
347         * ld-decode.c (load_decode_table): Rename slash to reserved.
348         (dump_decode_rule): Ditto.
349
350         * ld-insn.c (parse_insn_format): Differentiate between a `/' -
351         reserved bit - and a `*' - wild card.
352         (parse_insn_format): Change is_slash to more informative reserved.
353         (dump_insn_field): Ditto.
354         (insn_field_is_constant): Ditto.
355         (insn_table_expand_opcode): Ditto.
356
357         * gen-idecode.c (print_idecode_validate): Make check_mask and
358         check_val the correct integer size.
359         (print_idecode_validate): Fix reserved bit check for 64 bit
360         targets.
361
362 Fri Mar 14 11:24:06 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
363
364         * ld-insn.c (parse_insn_format): Accept '*' as an alternative of
365         `/' in bit fields.  `/' denotes a wild bit.
366
367 Fri Mar  7 18:20:38 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
368
369         * igen.h, igen.c (main): New options. Control generation of
370         conditional issue and slot verification code.
371
372 Fri Mar  7 18:17:25 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
373
374         * gen-support.c (print_support_function_name): Prepend the global
375         name prefix when applicable.  Provide #define to map the user
376         specified name the generated globaly unique one.
377
378 Fri Mar  7 18:07:45 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
379
380         * gen-idecode.c (print_idecode_validate): Wrap each of the checks
381         - reserved bits, floating point and slot validation - with a
382         #ifdef so that they are optional.
383         
384 Fri Mar  7 16:35:13 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
385
386         * gen-idecode.c (error_leaf_contains_multiple_insn): New function
387         - report the error of a leaf node in the decision tree containing
388         several instructions.
389         (print_idecode_table_leaf): Detect a leaf with multiple instructions.
390         (print_idecode_switch_leaf): Ditto.
391
392         * gen-semantics.h, gen-semantics.c (print_idecode_illegal,
393         print_idecode_invalid): Rename former to latter.  Add argument so
394         that one function can generate all invalid instruction cases -
395         illegal, fp-unavailable, wrong-slot.
396         * gen-engine.c: Update.
397
398         * gen-idecode.c: Use print_idecode_invalid to generate a function
399         call for cases when fp-unavailable and the slot is wrong.
400
401         * gen-idecode.c (print_idecode_validate): New check, generate code
402         to verify that the instruction slot is correct.
403         
404         * igen.c (main): Simplify options.
405
406 Wed Mar  5 09:55:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
407
408         * igen.c (print_itrace): Remove source line reference for trace
409         code - let the user see the generated file.
410         (print_itrace): Print the trace code rather than reference a
411         macro.
412
413 Tue Mar  4 17:31:55 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
414
415         * igen.c (print_semantic_function_actual): Pass either the
416         processor - smp - or the engine - mono - into semantic functions.
417         Don't pass in both.
418
419         * gen-icache.c (print_icache_body): Dependant on smp, derive
420         processor from engine or engine from processor, and hence ensuring
421         that both are defined in all semantic functions.
422
423 Mon Mar  3 17:11:21 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
424
425         * ld-insn.c (parse_insn_format): Make the width field optional.
426         If missing assume that the number of characters in the value
427         determines the number of bits in the field.
428         
429 Thu Feb 27 11:27:48 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
430
431         * ld-insn.c (insn_table_expand_opcode): Replace assertion with
432         more useful error message.
433
434 Tue Feb 25 16:43:27 1997  Andrew Cagney  <cagney@kremvax.cygnus.com>
435
436         * misc.c (error): Output errors on stderr.
437
438         * ld-insn.c (parse_insn_format): Skip any leading spaces.
439         Verify the width of instructions being parsed.
440
441         * table.c (table_entry_read): Parse CPP's convention for
442         specifying original file name/line-nr.
443
444 Wed Feb 19 12:30:28 1997  Andrew Cagney  <cagney@critters.cygnus.com>
445
446         * ld-insn.c (parse_insn_format): Allow trailing spaces in
447         instruction fields.
448
449         * Makefile.in: Create using ../ppc/Makefile.in as a starting
450         point.
451         * configure.in: Ditto vis ../ppc/configure.in
452         
453 Mon Feb 17 10:44:18 1997  Andrew Cagney  <cagney@critters.cygnus.com>
454
455         * gen-support.c (gen_support_c): Always include engine.h instead
456         of cpu.h
457         * gen-idecode.c (gen_idecode_c): Ditto.
458
459         * words.h (instruction_word): Remove instruction_word - now
460         generated by igen.
461         (address_word): New.  Used by igen.
462         
463         * lf.c (lf_print_function_type_function): New, pass a function to
464         print out the type instead of a constant string.
465         
466         * igen.h, igen.c (print_semantic_function_formal,
467         SEMANTIC_FUNCTION_FORMAL): Relace macro with function.
468         (print_semantic_function_actual, SEMANTIC_FUNCTION_ACTUAL): Ditto.
469         (print_semantic_function_type, SEMANTIC_FUNCTION_TYPE): Ditto.
470         (print_icache_function_type, ICACHE_FUNCTION_TYPE): Ditto.
471         (print_icache_function_formal, ICACHE_FUNCTION_FORMAL): Ditto.
472         (print_icache_function_actual, ICACHE_FUNCTION_ACTUAL): Ditto.
473         * gen-idecode.c (print_idecode_table): Update.
474         (idecode_switch_leaf): Update.
475         (print_idecode_switch_function_header): Ditto.
476         (print_idecode_floating_point_unavailable): Ditto.
477         (print_idecode_issue_function_header): Ditto.
478         * igen.c (gen_icache_h): Ditto.
479         * gen-engine.c (print_engine_table): Ditto.
480         (engine_switch_leaf): Ditto.
481         * gen-support.c (print_support_function_name): Ditto.
482         * gen-semantics.c (print_semantic_function_header): Update.
483         Update.
484         * gen-icache.c (print_icache_function_header): Update.
485         (print_icache_function): Update.
486         (print_icache_internal_function_declaration): Update.
487         (print_icache_internal_function_definition): Update.
488
489         * gen-idecode.c (gen_idecode_h): Drop including of idecode_*.h
490         files, will at some stage need to move it into support.
491
492         * igen.h, igen.c (main): New option -e <engine> - generate a full
493         simulation engine.  Previously this was the -d <idecode-file>
494         option.
495         * gen-engine.h, gen-engine.c: Copies of gen-idecode.*.  Will need
496         to clean these up so that that call upon the updated gen-idecode
497         code.
498         
499         * gen-idecode.h, gen-idecode.c: Prune out any code not relevant to
500         generating a decode table.
501         
502         * Makefile.in (igen): Add dependencies for new gen-engine.* files.
503
504         * igen.h, igen.c (main): New option -M - Control what is returned
505         by semantic functions - -1/NIA vs CIA+N/NIA.  Add
506         generate_semantic_returning_modified_nia_only to igen_code enum.
507         * gen-semantics.c (print_semantic_body): As an alternative, make
508         NIA == -1 instead of CIA+insn_size by default.
509         
510         * igen.h, igen.c (main, global_name_prefix, global_uname_prefix):
511         New option -P <prefix> - Prepend all generated functions with the
512         specified prefix.
513         (gen_idecode_c): Adjust.
514         * gen-icache.c (print_icache_struct): Ditto.
515         * gen-support.c (gen_support_c): Ditto.
516
517 Sun Feb 16 15:23:15 1997  Andrew Cagney  <cagney@critters.cygnus.com>
518
519         * igen.c (main): Correct usage. Missleading message about ucase
520         options dumping internal tables.  -F now includes rather then
521         excludes instructions.
522
523         * misc.h, misc.c (a2i): Make 64bit.
524
525         * ld-insn.h (max_insn_bit_size, default_insn_bit_size): Increase
526         max to 64bits, expect trouble.  Make the default 32 bits.
527         * gen-idecode.c (print_idecode_table): Change EXTRACTED*
528         et.al. macro's to use the insn_bit_size instead of assuming 32
529         bits.
530         * gen-icache.c (print_icache_extraction): Ditto.
531         * gen-idecode.c (idecode_switch_start): Ditto.
532         * gen-idecode.c (gen_idecode_c): Ditto
533
534         * igen.h (insn_specifying_widths), igen.c (main): New option -W.
535         Indicates that the instruction field of the table is specifying
536         bit widths instead of bit offsets.
537         * ld-insn.c (parse_insn_format): Parse instruction fields
538         specifying widths.
539
540         * misc.c (a2i): Allow binary numbers to be specified using the
541         syntax 0bNNNN.
542         * ld-insn.c: Allow such numbers to appear in the instruction
543         format.
544
545         * table.c (table_entry_read): Make // a valid comment character.
546         (table_entry_read): Skip lines containing a leading " - these may
547         eventually be used in a disasembler.
548
549 Fri Feb 14 15:23:15 1997  Andrew Cagney  <cagney@critters.cygnus.com>
550
551         * filter.c, filter.h, gen-engine.c, gen-engine.h, gen-icache.c,
552         gen-icache.h, gen-idecode.c, gen-idecode.h, gen-itable.c,
553         gen-itable.h, gen-model.c, gen-model.h, gen-semantics.c,
554         gen-semantics.h, gen-support.c, gen-support.h, igen.c, igen.h,
555         ld-cache.c, ld-cache.h, ld-decode.c, ld-decode.h, ld-insn.c,
556         ld-insn.h, lf.c, lf.h, misc.c, misc.h, table.c, table.h: Copy in
557         from the ../ppc directory.
558
559         * filter_host.c, filter_host.h: Copy in from the ../ppc directory
560         renaming from filter_filename.[hc]