Richard Kenner [Tue, 13 Oct 1992 23:08:44 +0000 (19:08 -0400)]
Use GEN_INT when appropriate.
(define_attr type): New types for SQRT.
(call patterns): Use SCRATCH for LR0.
Use new predicate call_operand so that some integers can be
used as addresses; fix CALLI so it doesn't accept constant.
(EXBYTE, EXTHW, INBYTE, INHW): Use ZERO_EXTEND instead of AND
when combine will make it.
Use PSImode for BP value and don't reference BP explicitly.
Clean up define_expands for these operations.
(rotlsi3): Use PSImode pseudo for FC.
(sign_extend): Sign extension insns clobber BP.
({load,store}_multiple): Use PSImode pseudo for CR.
(MTSR): Add pattern for TRUNCATE from SImode to PSImode.
(sqrtsf2, sqrtdf2, movpsi): New patterns.
(load/store bytes/halfword): Clean up to accept temporaries as
input and use PSImode when required.
(movhi, movqi): Allocate temporaries here.
(reload_inqi, reload_outqi, reload_inhi, reload_outhi): New patterns.
(movdf, movdi, movti): Use SCRATCH for BP register.
(reload_{in,out}{df,di,ti}): New patterns.
Richard Kenner [Tue, 13 Oct 1992 23:07:51 +0000 (19:07 -0400)]
(PROMOTE_MODE, ADJUST_COST): New macros.
(CALL_USED_REGISTERS): LR0 is call-used.
(HARD_REGNO_MODE_OK): Handle MODE_PARTIAL_INT and the special
registers that can only hold those modes.
(MODES_TIEABLE_P): Clean up and handle MODE_PARTIAL_INT modes.
(enum reg_class, REG_CLASS_NAMES, REG_CLASS_CONTENTS): Add new
classes LR0_REGS, FC_REGS, and CR_REGS.
(REGNO_REG_CLASS, REG_CLASS_FROM_LETTER): Likewise.
(PREDICATE_CODES): Update for new and deleted predicates.
Richard Kenner [Tue, 13 Oct 1992 23:07:05 +0000 (19:07 -0400)]
Now includes reload.h.
(spec_reg_operand): Validate mode and know that some regs support
MODE_PARTIAL_INT and some MODE_INT.
(call_operand, reload_memory_operand, a29k_get_reloaded_address)
New functions.
(in_operand): Allow constants with MODE_PARTIAL_INT.
(out_operand): Allow special registers with any mode.
Any MEM a word or wider is valid.
(extend_operator): Deleted.
(secondary_reload_class): A pseudo is the same as memory; we need
BP_REGS for multi-word memory or for bytes and halfword if -mndw.
(print_operand): Delete %X; add %m.
(print_operand, case 'F'): Check for SYMBOL_REF.
Tom Wood [Tue, 13 Oct 1992 18:45:45 +0000 (18:45 +0000)]
(loop_optimize): Verify that max_uid_for_loop is still larger than the uid of any insn.
(loop_optimize): Verify that max_uid_for_loop is still
larger than the uid of any insn. Increase the number of exit
blocks from 4 to 32 per loop.
(find_and_verify_loops): Stop trying to relocate exit blocks when
allocating a new label would exceed max_uid_for_loop.
Jim Wilson [Tue, 13 Oct 1992 18:21:37 +0000 (11:21 -0700)]
(*): Change 'f' constraint for dest to '*f' if it is not the only alternative.
(*): Change 'f' constraint for dest to '*f' if it is not the
only alternative. Add '*f' dest constraints to all patterns where
it is valid but was previously missing.
Jim Wilson [Tue, 13 Oct 1992 18:18:30 +0000 (11:18 -0700)]
(call, call_value): No longer call i960_expand_call,
instead call call_internal/call_value_internal pattern.
(call_internal, call_value_internal): Rewrite patterns to pass new
args to i960_output_call_insn.
Tom Wood [Fri, 9 Oct 1992 18:31:57 +0000 (18:31 +0000)]
(start_of_epilogue_needs): New variable.
(mark_target_live_regs): Add in start_of_epilogue_needs when
NOTE_INSN_EPILOGUE_BEG is scanned.
(dbr_schedule): Compute start_of_epilogue_needs and update
end_of_function_needs to include sets by all instructions
following NOTE_INSN_EPILOGUE_BEG.
Richard Kenner [Fri, 9 Oct 1992 11:28:53 +0000 (07:28 -0400)]
(optimize_reg_copy_1): Tighten up code to properly handle the case when...
(optimize_reg_copy_1): Tighten up code to properly handle the case
when SRC or DEST is a multi-word hard register and only some parts of
the register are set or used. Also, avoid updating register status
for DEST if we can't do the optimization.
Jeff Law [Thu, 8 Oct 1992 17:21:43 +0000 (11:21 -0600)]
pa.md (fp_alu function unit, case fpcc): Fpcc instructions use the fpalu unit.
* pa.md (fp_alu function unit, case fpcc): Fpcc instructions use
the fpalu unit. In the most common case their result will be used
in a ftest instruction. Minimum distance between the fcmp and
ftest instruction is 4.
Richard Kenner [Thu, 8 Oct 1992 08:42:53 +0000 (04:42 -0400)]
(mark_target_live_regs): Look at USE insns made by update_block when scanning forward past target.
(mark_target_live_regs): Look at USE insns made by update_block when scanning
forward past target.
(mark_target_live_regs, dbr_schedule): Use GET_RTX_CLASS.
Tom Wood [Wed, 7 Oct 1992 20:24:33 +0000 (20:24 +0000)]
(dwarfout_{begin,end}_function): New functions.
(body_{begin,end}_attribute): New functions.
(dwarf_attr_name): Print AT_body_begin and AT_body_end.
(output_{local,global}_subroutine_die): Output the new attributes.
Tom Wood [Wed, 7 Oct 1992 20:21:09 +0000 (20:21 +0000)]
(FASTEST_ALIGNMENT): Define as 8 for -m88110 otherwise 4.
(CONSTANT_ALIGNMENT, DATA_ALIGNMENT): Base on FASTEST_ALIGNMENT.
(READONLY_DATA_SECTION): Don't override svr4.h
(ASM_OUTPUT_CASE_LABEL): For svr4, use .rodata.
Tom Wood [Wed, 7 Oct 1992 20:19:22 +0000 (20:19 +0000)]
(best_from_align): Add a target processor dimension for -m88000, -m88110, and -m88100.
(best_from_align): Add a target processor dimension for
-m88000, -m88110, and -m88100.
(expand_block_move): Choose method and limits based on -m88xxx option.
(block_move_no_loop): Extend to allow DImode.
(output_call): Use different syntax for GAS.