-
Notifications
You must be signed in to change notification settings - Fork 6
/
ChangeLog
877 lines (581 loc) · 29.6 KB
/
ChangeLog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
2014-09-18 James Pallister <[email protected]>
Added the swap AVR instruction.
* superopt.c (output_assembly): Added assembly output for the above
* synth.def: Added calls to the above instructions.
2014-09-10 James Pallister <[email protected]>
Added the clc and sec AVR instructions.
* superopt.c (output_assembly): Added assembly output for the above
* synth.def: Added calls to the above instructions.
2014-09-08 James Pallister <[email protected]>
Added the ror, rol, asr and lsr AVR instructions
* superopt.c (output_assembly): Added assembly output for the above
* synth.def: Added calls to the above instructions.
2014-09-08 James Pallister <[email protected]>
Made the hashtable usage conditional on DO_HASHTABLE
* superopt.c: Added the DO_HASHTABLE preprocessor defined, to decide
whether to use the hashtable speed up or not
2014-09-05 James Pallister <[email protected]>
Added more instructions to the AVR port: dec, sbc, clr, ser, cpc
* superopt.c (output_assembly): Added assembly output for the above
instrucitons.
* synth.def: Synth the above instructions.
2014-09-05 James Pallister <[email protected]>
Added the compare with carry instruction definition (cmpc), and updated
cmp to work with other bit widths.
* insn.def: Added CMPC instruction.
* run_program.def: Added a case to execute the CMPC instruction.
* superopt.h: Added CMPC and modified CMP to compute the carry for all bit
widths.
2014-08-29 James Pallister <[email protected]>
Small bug fix in the pruning method.
* superopt.c (recurse): Use the accepted heuristic counter instead of
total success count, since we are only considering the possible
correctness of the one set of input values, not all.
2014-08-29 James Pallister <[email protected]>
Added a new pruning method. This method records the state of the registers
and carry if no solutions are found after recursing. Before subsequent
calls to synth this hash table is checked. If the current registers and
carry are in the table, and the allowed cost is lower or equal to the
stored value then the current sequence cannot be optimal, so skip it.
* superopt.c: Include hashtable.c and add a hash_skipped global to count
the amount of pruning.
(recurse): Before calling synth look up the registers and carry in the
table. Don't do this if allowed_cost is small, since it is quicker
just to test in this case. If no more results are found, add registers
and carry to the hashtable
* hashtable.c: New file. Implementation of a hashtable.
2014-08-29 James Pallister <[email protected]>
* superopt.h: 8 bit word should be selected if the bits per word is 8,
not just if AVR is selected.
2014-08-19 James Pallister <[email protected]>
* superopt.c: Changed the test counters and limits to 64 bit to
avoid overflow.
2014-08-18 James Pallister <[email protected]>
* superopt.c: Add a -test-limit option to specify the maximum
number of tests to evaluate.
2014-08-18 James Pallister <[email protected]>
* goal.def: Changed p24 to work with smaller bit widths.
2014-08-18 James Pallister <[email protected]>
* superopt.c (output_assembly: Added adc instruction for AVR.
* synth.def (synth): Added adc instruction for AVR.
2014-08-18 James Pallister <[email protected]>
* superopt.c: Added a test count, for the number of full sequences
that have been evaluated.
2014-08-18 James Pallister <[email protected]>
* goal.def: To keep compatability don't generate any constants
larger than 32-bits.
2014-08-17 James Pallister <[email protected]>
* goal.def: Some of the goals use the 0x80000000 constant. These are
changed to be 0x80 when the bit width of the target is 8-bits,
for example.
2014-08-17 James Pallister <[email protected]>
* All files: Add AVR support. Support for the add, sub, inc, cmp, xor,
or, and, mov instruction.
2014-08-17 James Pallister <[email protected]>
* All files: Fix white space. All tabs converted to whitespace
2010-18-07 Richard Osborne <[email protected]>
* superopt.h: Fix incorrect use of unsigned_word type in PERFORM_SEXT macro
2009-28-08 Richard Osborne <[email protected]>
* superopt.c: Fix printing of ldaw / lda16.
* superopt.h: Fix error in the PERFORM macros for ldaw / lda16.
2009-07-08 Richard Osborne <[email protected]>
* All files: Add XCore support
Sat Jun 3 01:28:17 1995 Torbjorn Granlund <[email protected]>
* superopt.c (random_word): Delete unused variable tot_bits.
Thu Jun 1 04:05:25 1995 Torbjorn Granlund <[email protected]>
* superopt.c (init_random_word): Make state1 have char type.
Use random() on alpha, since srand48 doesn't work there.
Wed May 31 17:08:12 1995 Torbjorn Granlund <[email protected]>
* superopt.c (test_operands): Add -3, -2, 3, 30, 31, 32, 63, 64.
(random_word): Return small numbers with high probability.
Sat May 27 18:32:03 1995 Torbjorn Granlund <[email protected]>
* superopt.c (N_RANDOM_TEST_OPERANDS): Set to 25000.
(random_word): Rewrite.
(RANDOM): New macro, internal to random_word.
* goal.def (DBL_SHIFT_LO, DBL_SHIFT_LO_TRUNC): Arity is 2.
Wed May 24 07:40:49 1995 Torbjorn Granlund <[email protected]>
* superopt.c (N_RANDOM_TEST_OPERANDS): New macro.
(init_test_sets): Use N_RANDOM_TEST_OPERANDS.
Also, zero n_words when in declarator.
(random_word): Conditionally complement x before loop.
* synth.def (synth_skip): Loop over dr also for unary operations.
* superopt.c (recurse): Delete inline declaration.
Tue May 23 01:35:16 1995 Torbjorn Granlund <[email protected]>
* goal.def: Add *_SEL goals.
Mon May 22 23:00:31 1995 Torbjorn Granlund <[email protected]>
* Makefile (*.res rules): Use "./" when running superoptimizers.
Delete spurious tab after rule.
(ALL_MACHINES): Put hppa last.
Thu May 18 22:36:58 1995 Torbjorn Granlund <[email protected]>
* synth.def (I960 synth): Break out conditional add and subtract
instructions into separate loops, and get the pruning conditions
right.
* synth.def (ALPHA synth): Try CMOVcc with (1) as 2:nd operand.
* synth.def (ALPHA synth): Read v every time before executing
CMOVcc. Also, don't do CMOVcc with any immediate 1:st operands.
(I960 synth): Likewise, but for ADDO_cc_960 and SUBO_cc_960.
* run_program.def: Read v every time before executing ADDO_cc_960
and SUBO_cc_960.
* superopt.c (ALPHA output_assembly): Fix typo in CMPLEU and CMPLTU.
* synth.def (I960 synth): Pass CY_0 in insn that sets cc to 100b.
Wed May 17 09:19:13 1995 Torbjorn Granlund <[email protected]>
* synth.def (I960 synth): Use CRECURSE_2OP for CHKBIT.
* superopt.c (I960 output_assembly): Output two operands for CHKBIT.
* superopt.c (output_assembly): Use new PERFORM_CONCMPx_960
name here too.
Tue May 16 00:07:12 1995 Torbjorn Granlund <[email protected]>
* superopt.c (main_synth): Print C code for goal sequence before
outputtting the sequences.
(all functions): Print to stdout, not stderr, unless an error occured.
* superopt.h (PERFORM_CONCMPx_960): New name for
PERFORM_CONCMPx_NO_960. Rewrite, they were completely wrong.
* synth.def, run_program.def, insn.def:
Use new name PERFORM_CONCMPx_960.
* synth.def (I960 synth): Delete I960_1_1 condition on CONCMPcc.
* Makefile: For i960 build, pass -DI960_1_1.
* superopt.c (recurse): Change test of HPPA to HAS_NULLIFICATION
in search for goal_value in values array. Also compare v to
goal_value, since it is not yet stored in values array.
* superopt.h, synth.def: Handle i960 1.1 instructions specifically.
(POWER): Fix typo testing for POWERPC.
Mon May 15 23:49:56 1995 Torbjorn Granlund <[email protected]>
* synth.def (I960 synth): Fix typos for CONCMPcc instructions.
Try SELcc, CONCMPcc, ADDOcc, SUBOcc with immediate arguments.
Try LSHUFTR_NT with op1 being 1.
Mon May 15 19:10:36 1995 Torbjorn Granlund <[email protected]>
* synth.def (I960 synth): Pass correct prune hint for SELcc.
Try SELcc with immediate 0 and 1.
Mon May 15 10:28:20 1995 Torbjorn Granlund <[email protected]>
* superopt.c (init_random_word): New function.
(main_synth): Call init_random_word.
* Update copyright headers.
* superopt.c: Use "assembly", not "assembler" consistently.
(main): Default maxmax_cost to 4 (was 5).
Sun May 14 12:24:44 1995 Torbjorn Granlund <[email protected]>
* insn.def: Add `<' and `=' as instruction classes.
(test_sequence): Use new sequences for suppresion of destination
register printing.
* Fold in i960 port. All files affected.
* superopt.h (PERFORM_LSHIFT*): Cast r1 to unsigned_word,
not signed_word.
* superopt.c (recurse): In loop to find goal value when the last insn
is nullified, loop from 0, not from goal_function_arity.
Sat May 13 12:00:46 1995 Torbjorn Granlund <[email protected]>
* synth.def: New file, move all synth functions here.
* superopt.c: Include synth.def twice, once for generating non-leaf
synth functions, once for generating leaf synth functions, with
different definitions of the various RECURSE macros.
(SYNTH): New macro.
(recurse): Use SYNTH.
(main_synth): Likewise.
(recurse_last): New function, called by the leaf synth variants.
Sun May 7 11:46:50 1995 Torbjorn Granlund <[email protected]>
* superopt.c (HPPA synth): Split into several smaller functions.
(synth_nonskip, synth_condskip, synth_skip): New functions.
Sat May 6 10:35:25 1995 Torbjorn Granlund <[email protected]>
* superopt.c (ALL synth): Split extract-of-1 and extract-of-2 into
separate loops; make latter loops terminate at BITS_PER_WORD-2.
(ALL synth): Delete SHIFTS and EXTRACTS macros; use run-time
conditionals instead.
(flag_shifts, flag_extracts): New variables.
(main): Set new variables.
* superopt.h (SHIFTS): Delete.
Wed May 3 15:35:23 1995 Torbjorn Granlund <[email protected]>
* superopt.c (HPPA synth): Do comiclr with -1 and 1, not just 0.
(output_assembler, PYR): Handle rsubw in ADC_CO case.
Tue May 2 21:09:37 1995 Torbjorn Granlund <[email protected]>
* superopt.h (EXTRA_SEQUENCE_TESTS, SH): Only detect non-zero immediate
values. Also allow sequences that twice (or more) demand the *same*
variable to be allocated to r0.
Tue May 2 10:39:22 1995 Torbjorn Granlund <[email protected]>
* superopt.c (PA_RECURSE): Don't increment N_VALUES unconditionally;
make it depend in if D equals N_VALUES.
Mon May 1 23:04:17 1995 Torbjorn Granlund <[email protected]>
* superopt.h (word typedefs):
Use long long also when _LONGLONG is defined.
Mon May 1 17:59:11 1995 Torbjorn Granlund <[email protected]>
* superopt.c (output_assembler, POWER): For SUB, use INS_SUBF
when not immediate operand.
(INS_SUBF): New #define.
Mon May 1 09:17:25 1995 Torbjorn Granlund <[email protected]>
* superopt.c (main): Use exit instead of return consistently.
(output_assembler, HPPA): Handle EXT[SU][12]_S and ROTATEL_S.
Sun Apr 30 00:14:14 1995 Torbjorn Granlund <[email protected]>
* superopt.c (output_assembler, ALPHA, case ADD): Cast immediate
value to int.
* superopt.c (RISC synth): Try COPY of registers for ALPHA.
* superopt.c (HPPA synth): Also COPY 0 (it might be nullified).
(HPPA synth): Correct several typos for COPY_S variants.
* superopt.h (PSTR): Define as appropriate.
* superopt.c (print_operand): New function. Use PSTR.
(test_sequence): Move operand printing code to print_operand.
* superopt.c (RISC synth): Try COPY of immediates also for ALPHA.
(output_assembler, ALPHA): Handle COPY.
(RISC synth): Don't do cmpltu(r,0) or cmpleu(0,r) or cmplt(r,0).
* superopt.h (TRUNC_CNT): Use % instead of & for portability.
(inline): Define to empty also if DEBUG.
* superopt.c (synth): Add TIMING stuff to all variants of synth.
Also, make type of time_start agree with type of cputime().
Sat Apr 29 09:32:58 1995 Torbjorn Granlund <[email protected]>
* longlong.h (C umul_ppmm): Use UWtype, not USItype for temps.
(udiv_qrnnd): For cases implemented with call to __udiv_qrnnd,
protect with new symbol LONGLONG_STANDALONE.
* goal.def (CLEAR_LSB): Fix typo.
* longlong.h: Replace with version from GNU MP.
* superopt.h: Set up #defines for new longlong.h.
Sat Apr 29 01:43:25 1995 Torbjorn Granlund <[email protected]>
* superopt.h (FF1_CHECK): Delete.
(PERFORM_FF1): Don't use FF1_CHECK.
(PERFORM_CLZ): Rewrite to handle 64 bit words.
(PERFORM_FFS): Use BITS_PER_WORD, not the constant 32.
* superopt.c (main): When printing list of goals, terminate with \n.
* superopt.c (RISC synth): Try ADD with immediate -1.
(output_assembler, ALPHA): Handle ADD with negative s2.
* goal.def: Delete redundant goal divide_by_minus_2e31.
Fri Apr 28 11:39:51 1995 Torbjorn Granlund <[email protected]>
* superopt.c (HPPA synth): In code protected by #if EXTRACTS,
loop to 30, not 31.
(RISC synth): Likewise.
(output_assembler, HPPA): Handle EXT[SU][12].
Thu Apr 27 10:46:24 1995 Torbjorn Granlund <[email protected]>
* run_program.def (run_program): Use memset, not bzero.
* superopt.c (output_assembler, HPPA): Handle COPY_S.
Rearrange code for plain COPY. Enable unconditionally nullifying
shift/rotate/extract.
(HPPA synth): Delete spurious duplicate code within #if SHIFTS
in the conditional-nullify block. Delete spurious 0-ary and copy code
in the same block. Add systematically missing _S to
shift/rotate/extract instruction names in unconditional-nullify block;
Correct and enable 0-ary instructions and variants of COPY_S.
* superopt.h (PERFORM_ROTATEL): Check TRUNC_CNT(r2), not plain r2.
(PERFORM_ROTATEL_S): Likewise.
* superopt.h (PERFORM_COPY_S): Define.
(PERFORM_*SHIFT*_S, PERFORM_ROTATEL_S, PERFORM_EXT*_S): Define
* insn.def: Corresponding changes.
* run_program.def: Corresponding changes.
Tue Apr 25 18:58:26 1995 Torbjorn Granlund <[email protected]>
* Makefile (superopt): Depend on HDRS.
(HDRS): Add many missing included files.
(superopt-*): Depend on HDRS.
(superopt.o): Delete rule.
(superopt): Depend on SRCS, not OBJS. Corresponding change to rule.
Sat Apr 22 18:51:59 1995 Torbjorn Granlund <[email protected]>
* Makefile (FILES): Add ChangeLog (again).
* superopt.c (CISC synth): Handle all immediate counts for MC68020
(if -DSHIFTS), not just 31.
Wed Mar 15 09:20:46 1995 Michael Meissner <[email protected]>
* Makefile (CFLAGS): Add new macro MACHINE to override the machine
desired.
(superopt): New alternate name for gso.
(install): New rule.
(all, install-all): New rule to build superopt for all of the
supported machines.
* superopt.h (POWEPC): Define if _ARCH_PPC is defined.
(I386): Also check __i386__.
* superopt.c (random_word): Eliminate inline, since it was
previously declared without it.
(output_assembler): For PowerPC, use PowerPC instruction names,
rather than Power. Abort if Power only instructions used.
(test_sequence): Print newline between patterns if -nl.
(main): Recognize -nl switch. If unknown switch, print a usage
message, including all supported goal functions.
Sun Nov 13 22:59:42 1994 Torbjorn Granlund ([email protected])
* superopt.c (CISC synth): Use SHIFTS macro here too, just like in
RISC synth.
* superopt.h (SHIFTS): Make sure it is defined to 1 or 0.
Tue Nov 8 01:33:40 1994 Torbjorn Granlund ([email protected])
* superopt.c (synth): Add missing SH conditional for "subc rx,ry"...
(synth): Generate "add rx,ry" and "sub rx,ry" for SH...
superopt.c (synth): Fix several SH-specific typos with prune hint
setting.
* superopt.h (EXTRA_SEQUENCE_TESTS): New macro; define for SH.
* superopt.c (test_sequence): Use EXTRA_SEQUENCE_TESTS.
* superopt.c (CISC synth): Generate ext[su].[bw], dt, swap.w, xtrct,
and tst rx,ry for SH.
(output_assembler): Print them.
superopt.h: Handle immediates 0xff and 0xffff.
(init_immediates): Initialize `values' with new immediates.
superopt.c (synth): Shifts with count > 1 doesn't set T on the SH.
(output_assembler, SH): Add support for carry-free shifts.
* All files (EXTS8, EXTS16, CYAND, DECR_CYEQ, MERGE16): New opcodes.
Sat Nov 5 13:21:11 1994 Torbjorn Granlund ([email protected])
* superopt.c (synth): Use ASHIFTR_CON for POWER consistently,
never use ASHIFTR.
superopt.c (synth): Delete ROTATEXL_CIO with count BITS_PER_WORD-1.
(synth): Try ROTATEXR_CIO with count 1.
superopt.h (PERFORM_ROTATEXR_CIO): New definition.
(PERFORM_ROTATEXL_CIO): Rewrite.
(PERFORM_ROTATEL_CIO): Make sure we use logical shifts.
(PERFORM_ROTATER_CIO): New definition.
insn.def, run_program.def: Add new instructions.
(output_assembler, M68000): Handle rotate right instructions.
* superopt.c (random_word): Use mrand48 for __svr4__.
(operand_names): Merge I386 and PYR.
(output_assembler, I386, ADD): Output "decl" here...
(output_assembler, I386, SUB): ...not here.
(synth): Bump shift cost for I386 from 2 to 1.
(synth): Merge I386 shift patterns that now became identical to
other patterns.
(CISC synth): Don't try ROTATEXL_CIO with count 1; ADD_CIO performs
the very same operation.
* insn.def (CPEQ): Use 'c' for commutative.
(CPNEQ, CMPEQ): Likewise.
(COMCY): This is not a binary operation; use class 'x'.
* superopt.c (main): Print target information for -v.
* superopt.h (TARGET_STRING): New #define.
* Ported to Hitatchi SH. Most files affected.
Sun Jul 17 04:34:49 1994 Torbjorn Granlund ([email protected])
* superopt.c (HPPA synth): Fix typos for shifting conditionalized on
SHIFTS.
* Makefile (FILES): Include ChangeLog.
Thu Jun 16 19:41:10 1994 Torbjorn Granlund ([email protected])
* superopt.c (output_assembler, I386, case AND_RC):
Fix typo in condition for andb.
(case IOR_RC): Likewise.
(case XOR_RC): Likewise.
(CISC synth): Try "movl $0,d" for I386.
Sun Jan 30 22:35:02 1994 Torbjorn Granlund ([email protected])
* superopt.c (ffs_internal): Initialize ci to silent compiler
warning.
* superopt.c (header): Declare random_word.
Sat Oct 16 21:21:51 1993 Torbjorn Granlund ([email protected])
* superopt.c (CISC synth): Fix typo, MC68020 was M68020.
Mon Jul 12 20:37:12 1993 Torbjorn Granlund ([email protected])
* superopt.c (CISC synth): Try BSF86 for I386.
* superopt.h, run_program.def, insn.def: Add defs for BSF86.
Fri May 28 11:59:43 1993 Torbjorn Granlund ([email protected])
* superopt.c (RISC synth): Try subf on POWERPC.
(output_assembler)[POWER]: Handle subf.
Mon May 24 09:46:56 1993 Torbjorn Granlund ([email protected])
* All files: Conditionalize on POWER, not RS6000.
* superopt.h: Add handling of POWERPC.
* superopt.c: Exclude ABS, NABS, DOZ if POWERPC.
Sun Feb 21 14:21:20 1993 Torbjorn Granlund ([email protected])
* superopt.h (struct insn_t): Make opcode field wider at expense of
other fields.
* superopt.c (HPPA synth): Make pruning less agressive after
nullifying insn.
* run_program.def: Special case for N_INSNS == 0.
* superopt.c (ALPHA synth, CMOV*): Move pruning test inside DR loop.
Add condition (DR != LAST_DEST).
* superopt.c (outside of functions): Declare malloc and realloc.
* Ported to HP-PA. Most files affected.
Thu Feb 18 21:23:17 1993 Torbjorn Granlund ([email protected])
* superopt.h (VALUE_MIN_SIGNED): Make it work for non 32-bit
computers.
(VALUE_MAX_SIGNED): Likewise.
(__immediate_val): Use VALUE_MIN_SIGNED and VALUE_MAX_SIGNED.
Mon Feb 15 11:41:16 1993 Torbjorn Granlund ([email protected])
* version.h: Now 2.2.
* superopt.c (operand_names): Define constants up to 63 for ALPHA.
(operand_names): Remove ...0,0,0... as array filler.
* superopt.h (BITS_PER_WORD): Conditionalize on ALPHA.
(unsigned_word, signed_word): Define depending on BITS_PER_WORD and
compiler.
Sun Feb 14 20:25:05 1993 Torbjorn Granlund ([email protected])
* superopt.c (output_assembler): Define Alpha asm syntax.
* run_program.def: Special code for CMOVxx.
Sat Feb 13 01:10:06 1993 Torbjorn Granlund ([email protected])
* Ported to Alpha. Most files affected.
Sat Jan 2 15:50:40 1993 Torbjorn Granlund ([email protected])
* superopt.h (PERFORM_FFS): New macro.
* superopt.c (ffs_internal): New function.
* goal.def (FFS): Use ffs_internal.
* superopt.c (output_assembler)[I386]: Fix typo, %s -> %d, two
places.
Thu Dec 17 13:58:33 1992 Torbjorn Granlund ([email protected])
* superopt.c (output_assembler)[RS6000,AM29K]: Handle CLZ.
Sat Dec 12 15:40:05 1992 Torbjorn Granlund ([email protected])
* version.h: Now 2.1.
* Makefile (dist): Make sed command more robust.
* superopt.h: Handle MC68000 and MC68020, not M68000.
* superopt.h: Define M68000 #if MC68000 || MC68020.
* superopt.h (SHIFT_COST): Define. For MC68000 it's depends on
count.
* superopt.c (CISC synth): Use SHIFT_COST for all shifting on
MC68000.
* superopt.c (CISC synth): Try logical operation with #1.
* superopt.c (output_assembler)[M68000 AND,IOR,XOR]: Output
operation with small immediates using word (w) suffix.
* superopt.c (output_assembler)[I386 AND,IOR,XOR]: Likewise.
* superopt.c (output_assembler)[M88000 ADC_CI]: Output subu.ci, not
subu.co.
* superopt.c (RISC synth)[0-ary instructions]: Major enhancements.
Next 3 from Paul Eggert:
* goal.def (DIVIDE_BY_MINUS_2e31): New name flo DIVIDE_BY_2e31,
better describing the operation.
* goal.def (DEF_GOAL for GRAY, GRAY2, DIVIDE_BY_MINUS_2e31): Avoid
overflow by shifting -1 instead of 1.
* superopt.h (__immediate_val): Avoid overflow by casting 1 to word.
overflow.)
* superopt.c (timings): New name for 'time'. (Clashed with defs in
<time.h>).
* superopt.c (recurse): Assign sequence[n_insn] using constructor
#if __GNUC__. (Gives better code.)
* superopt.c: Update comments.
* superopt.c (ARITH_BITS #define): Remove. (Not used any more.)
* superopt.c (cputime): #if USG, use clock() instead of getrusage.
* superopt.c (init_test_sets): Remove #ifdef UDIV_WITH_SDIV code.
(Obsolete.)
Wed Dec 9 14:58:17 1992 Torbjorn Granlund ([email protected])
* superopt.c (init_test_sets): Remove unused label 'next'.
* superopt.c (CISC synth, I386, PYR)[COPY 0 => v]: Cost is 1.
Pass n_values for s1,s2,d operands. (Bug fix.)
* superopt.c (RISC synth, SPARC)[r1 + 1 - cy]: Try this, with and
without generating carry out. (Bug fix.)
* superopt.h: Define __CLOBBER_CC and __AND_CLOBBER_CC.
(sparc asm PERFORM macros): Use __CLOBBER_CC. (Bug fixes.)
Sat Nov 28 13:50:09 1992 Torbjorn Granlund ([email protected])
* version.h: Now 2.0.
* superopt.c (init_test_sets): Remove code inside UDIV_WITH_SDIV
conditional.
* superopt.c (output_assembler): Output pyramid assembler.
Output MUL for all CPUs that have it.
* superopt.c (CISC synth): Fix many pyramid-related errors.
* superopt.c (random_word): #ifdef hpux, use mrand48.
* superopt.h, superopt.c (synth), insn.def, run_program.def:
UMULWIDEN_LO => MUL, PERFORM_UMULWIDEN_LO => PERFORM_MUL.
* superopt.h (PERFORM_MUL): Simply use (r1 * r2), don't call
umul_ppmm.
* superopt.h: Define all PERFORM_* macros unconditionally.
* insn.def: Remove #ifdef DM conditionals.
* goal.def (UMULH): New goal.
* goal.def: Remove #ifdef DM conditionals. Include some goals only
with GCC. Switch off division goals due to domain problems.
* run_program.def: Remove #ifdef DM conditionals.
* superopt.c (synth): Try shifts by 16, #if SHIFT16.
* superopt.h: Include longlong.h unconditionally.
* Makefile (FILES): Add longlong.h.
(dist): Rewrite to have tar file creating a directory.
Tue Jul 28 15:05:09 1992 Torbjorn Granlund ([email protected])
* goel.def: Add new goals for signed division.
* Makefile: Create superopt-VERSION.tar.Z.
* version.h: New file.
* superopt.c: Include "version.h".
* superopt.c (main): Handle `-version' option.
* superopt.c (main): Better error messages.
* superopt.c (main): Move initialization of goal_function to handle
empty command lines.
* superopt.c: Add timing per recursion level #ifdef TIMING.
Thu Jun 25 20:10:23 1992 Torbjorn Granlund ([email protected])
* superopt.c (test_sequence): Remove STATISTICS.
(recurse): Put it here.
* superopt.c (random_word): Back to random.
* superopt.c (recurse): Make it static.
* superopt.c (RISC synth): Don't copy 0 on sparc and 88k.
Fri Jun 12 17:16:54 1992 Tom Wood ([email protected])
* superopt.c (test_sequence): Make n_test_operands const to avoid
re-computation.
Thu Jun 11 23:23:26 1992 Torbjorn Granlund ([email protected])
* Version 1.91.
* superopt.c (main): Check argc before calling atoi.
Thu Jun 11 20:38:20 1992 Tom Wood ([email protected])
* goal.def: New file.
* superopt.[ch]: Use goal.def.
Thu Jun 11 19:19:37 1992 Torbjorn Granlund ([email protected])
* Version 1.90.
Thu Jun 11 10:38:20 1992 Tom Wood ([email protected])
* insn.def: New file.
* superopt.[ch]: Use insn.def.
* superopt.c (output_assembler, m88k COPY): Specify use of r0 and
print small constants right.
* superopt.c (synth): Correct indentation.
* superopt.c (main): Add -all option to run thorough all know goal
functions. This can be done quickly with -max-cost 2.
* superopt.h (IMMEDIATE_VAL): Evaluate sparse values properly.
* superopt.h (PERFORM_ADD_CIO, PERFORM_ADC_CIO): Operand 0 is
written before the inputs are read.
* superopt.h (PERFORM_CMPPAR): Add m88110 bits and don't check
with the native cmp instruction.
Thu Jun 11 02:37:01 1992 Torbjorn Granlund ([email protected])
* Version 1.16.
* superopt.h: Hack PERFORM_{CLZ,FF1} to be faster.
* superopt.c (clz_tab): Corresponding changes.
* superopt.c (ff1_tab): New table for PERFORM_FF1.
* superopt.c (RISC synth): Try ADD_CI(x,x).
* superopt.c (main_synth): Always pass NO_PRUNE to synth.
* superopt.c (output_assembler): Generalize "cmp" output.
* superopt.c (synth): Rename cy_in to ci, and cy_out to co.
* superopt.h (sparc asm): Clobber "cc".
* superopt.h: Include asm iff USE_ASM is defined. Off by default.
Wed Jun 10 15:40:45 1992 Tom Wood ([email protected])
* superopt.c (output_assembler): Fix typos in 88k assembler.
* superopt.c (operand_names): Make the constant names agree with
the new values.
* run_program.def (run_program): Have this return the value of the
carry flag or -1 if the flag was never set.
* superopt.h: run_program now returns an int.
* superopt.c (main_synth): Allow the specification of an initial
sequence of instructions and provide an example sequence.
* superopt.h (PERFORM_FF1, PERFORM_CMPPAR): When running native,
compare the native instruction's output to the generic
computation.
Thu Jun 10 02:00:22 1992 Torbjorn Granlund ([email protected])
* Version 1.15.
* Add for CLZ, CTZ, and 88k's FF0, FF1, EXT*, and CMPPAR.
* superopt.[ch]: Rewrite handling of immediates to allow arbitrary
shifts.
Sat Jun 6 20:04:03 1992 Torbjorn Granlund ([email protected])
* Version 1.14.
* superopt.c: 88k subu.c* and addu.c* insn were incorrectly asumed
to accept immediate values.
Wed Apr 1 22:03:04 1992 Torbjorn Granlund ([email protected])
* superopt.[ch], run_program.def: ROTATEXL_CIO, new name for
ROTATEXL_CO.
* superopt.c: Only use ROTATEXL_CIO when carry is defined.
* superopt.c (test_sequence): Add some values to test_operands
vector.
* superopt.c (RISC synth): Try add of immediate 1.
* superopt.[ch]: Add new goals for GS paper.
Thu Mar 5 05:56:12 1992 Torbjorn Granlund ([email protected])
* superopt.[ch], run_program.def: Ported to pyramid. Added
<LOGICAL>_CC internal insns.
Fri Feb 14 23:19:11 1992 Torbjorn Granlund ([email protected])
* superopt.c (output_assembler M88100): Handle negative values for
ADD_CIO, by outputting subu.
* superopt.c (RISC synth): Fix comment add ADD_CIO (..., -1).
Thu Dec 12 21:54:14 1991 Torbjorn Granlund ([email protected])
* superopt.c (test_sequence): Add comments.
Tue Dec 10 21:37:01 1991 Torbjorn Granlund ([email protected])
* superopt.c (main_synth): Make nested for loops have different
induction variables...
Thu Dec 5 19:33:40 1991 Torbjorn Granlund ([email protected])
* superopt.c (output_assembler several places): Cast IMMEDIATE_VAL
to signed_word when comparing to zero.
Wed Nov 13 21:20:11 1991 Torbjorn Granlund ([email protected])
* superopt.c (main_synth): Hack to generate the initial random
arguments such that the goal function take a value != 0.
Mon Nov 11 11:41:50 1991 Torbjorn Granlund ([email protected])
* superopt.c (output_assembler RS6000 and M88000): Handle (op1 & 1).
* superopt.c (RISC synth): Try (op1 & 1) on all machines.
Sat Nov 2 16:24:35 1991 Torbjorn Granlund ([email protected])
* superopt.c (RISC synth): Try 29k CPXX insns with immediate 0.
* superopt.c (test_sequence): Output small negative operands in
decimal.
Fri Oct 25 01:01:54 1991 Torbjorn Granlund ([email protected])
* superopt.c (test_sequence): Test with VALUE_MAX_SIGNED too.
* superopt.c (CISC synth): Try CMP operation for VALUE_MAX_SIGNED
and VALUE_MIN_SIGNED on '386.
* superopt.c, superopt.h, run_program.def: Add new operation
ROTATEXL_CO. Try it for CISCs.
* ROTATEL new name for ROTATE.
* superopt.c (output_assembler I386): Fix syntax for if statement.
* superopt.h (PERFORM_*SHIFT*, PERFORM_ROTATE*): Truncate shift
counts with BITS_PER_WORD.
* superopt.h (TRUNC_CNT): New macro for shift count truncation.
* superopt.c (output_assembler M68000 COPY): Output "moveq" for
negative numbers as intended, by casting operands to signed_word.
* superopt.c (RISC synth): Try SUB for two regs even on M88000.
* superopt.c (RISC synth, CISC synth): Try rotate and shift
instruction with count 1.
* superopt.c (output_assembler): Output rotate instructions.
* superopt.c, superopt.h, run_program.def: Add new operation
"ASHIFTR_CON" for RS/6000 arithmetic right shifts. (The
arithmetic shift insns used to be incorrectly described as not
affecting carry.)
Local Variables:
mode: indented-text
left-margin: 8
fill-column: 76
version-control: never
End: