2020-12-21 Thien-Thi Nguyen [dist int] Add abstraction: tarname * Makefile (tarname): New var. (dist): Use $(tarname). 2020-01-23 Thien-Thi Nguyen [dist] Also distribute AUTHORS file. * Makefile (FILES): Add AUTHORS. 2020-01-23 Thien-Thi Nguyen [build] Update sed script that mines version info. * Makefile (VERSION): Only operate on the single line in version.h that begins w/ "char". 2020-01-23 Thien-Thi Nguyen [C int] Add forward delcs for "aux stuff" funcs. * superopt.c (ffs_internal, floor_log2, ceil_log2): Add forward decls prior to ‘insn_name’ declaration. 2020-01-23 Thien-Thi Nguyen [C int] Convert some funcs from K&R style to prototypes. * superopt.c (ffs_internal, floor_log2, ceil_log2): ...here. 2020-01-23 Thien-Thi Nguyen [C int] Add ‘\n\’ to separate assembly instructions. * longlong.h (add_ssaaaa, sub_ddmmss, umul_ppmm) (count_leading_zeros, umul_ppmmxx, udiv_qrnnd): ...here, for various architectures. * superopt.h [sparc || __GNUC__]: #undef alloca. (PERFORM_ADD_CIO, PERFORM_ADD_CO, PERFORM_SUB_CIO, PERFORM_SUB_CO) (PERFORM_ADC_CIO, PERFORM_ADC_CO): Add ‘\n\’ to separate assembly instructions, for various architectures. 2020-01-23 Thien-Thi Nguyen [C int] Include for ‘exit’. * superopt.c: #include . 2020-01-23 Thien-Thi Nguyen * COPYING: Update to GPLv3. Sat Jun 3 01:28:17 1995 Torbjorn Granlund * superopt.c (random_word): Delete unused variable tot_bits. Thu Jun 1 04:05:25 1995 Torbjorn Granlund * 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 * 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 * 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 * 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 * goal.def: Add *_SEL goals. Mon May 22 23:00:31 1995 Torbjorn Granlund * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * superopt.h (word typedefs): Use long long also when _LONGLONG is defined. Mon May 1 17:59:11 1995 Torbjorn Granlund * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 * 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 (tege@tiny.cygnus.com) * 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 (tege@tiny.cygnus.com) * 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 (tege@tiny.cygnus.com) * 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 (tege@tiny.cygnus.com) * superopt.c (HPPA synth): Fix typos for shifting conditionalized on SHIFTS. * Makefile (FILES): Include ChangeLog. Thu Jun 16 19:41:10 1994 Torbjorn Granlund (tege@adder.cygnus.com) * 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 (tege@adder.cygnus.com) * 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 (tege@adder.cygnus.com) * superopt.c (CISC synth): Fix typo, MC68020 was M68020. Mon Jul 12 20:37:12 1993 Torbjorn Granlund (tege@pde.nada.kth.se) * 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 (tege@pde.nada.kth.se) * superopt.c (RISC synth): Try subf on POWERPC. (output_assembler)[POWER]: Handle subf. Mon May 24 09:46:56 1993 Torbjorn Granlund (tege@pde.nada.kth.se) * 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 (tege@pde.nada.kth.se) * 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 (tege@pde.nada.kth.se) * 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 (tege@cyklop.nada.kth.se) * 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 (tege@cyklop.nada.kth.se) * superopt.c (output_assembler): Define Alpha asm syntax. * run_program.def: Special code for CMOVxx. Sat Feb 13 01:10:06 1993 Torbjorn Granlund (tege@cyklop.nada.kth.se) * Ported to Alpha. Most files affected. Sat Jan 2 15:50:40 1993 Torbjorn Granlund (tege@sics.se) * 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 (tege@sics.se) * superopt.c (output_assembler)[RS6000,AM29K]: Handle CLZ. Sat Dec 12 15:40:05 1992 Torbjorn Granlund (tege@sics.se) * 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 ). * 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 (tege@sics.se) * 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 (tege@sics.se) * 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 (tege@sics.se) * 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 (tege@sics.se) * 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 (wood@gen-rtx.rtp.dg.com) * superopt.c (test_sequence): Make n_test_operands const to avoid re-computation. Thu Jun 11 23:23:26 1992 Torbjorn Granlund (tege@sics.se) * Version 1.91. * superopt.c (main): Check argc before calling atoi. Thu Jun 11 20:38:20 1992 Tom Wood (wood@gen-rtx.rtp.dg.com) * goal.def: New file. * superopt.[ch]: Use goal.def. Thu Jun 11 19:19:37 1992 Torbjorn Granlund (tege@sics.se) * Version 1.90. Thu Jun 11 10:38:20 1992 Tom Wood (wood@gen-rtx.rtp.dg.com) * 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 (tege@sics.se) * 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 (wood@gen-rtx.rtp.dg.com) * 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 (tege@sics.se) * 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 (tege@sics.se) * 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 (tege@sics.se) * 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 (tege@sics.se) * superopt.[ch], run_program.def: Ported to pyramid. Added _CC internal insns. Fri Feb 14 23:19:11 1992 Torbjorn Granlund (tege@sics.se) * 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 (tege@sics.se) * superopt.c (test_sequence): Add comments. Tue Dec 10 21:37:01 1991 Torbjorn Granlund (tege@sics.se) * superopt.c (main_synth): Make nested for loops have different induction variables... Thu Dec 5 19:33:40 1991 Torbjorn Granlund (tege@sics.se) * 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 (tege@sics.se) * 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 (tege@sics.se) * 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 (tege@sics.se) * 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 (tege@sics.se) * 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.) Copyright (C) 1991-1995, 2020, 2021 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted provided the copyright notice and this notice are preserved.