* pa.md (zero_extendqihi2): No need to explicitly set a length,
the defaults are correct.
(zero_extendqisi2, floatsisf2, floatsidf2): Likewise.
(floatdisf2, floatdidf2, fix_truncsfsi2): Likewise.
(fix_truncdfsi2, fix_truncsfdi2, fix_truncdfdi2): Likewise.
From-SVN: r5181
* pa.c (emit_move_sequence): Always handle secondary reloads for
symbolic addresses.
(secondary_reload_class): Symbolic operands always need a secondary
reload from R1_REGS if their target class is not R1_REGS.
From-SVN: r5178
* pa.h (TARGET_GAS): New target flag to control use of GAS specific
assembler directives.
(TARGET_SWITCHES): Support -mgas and -mno-gas.
(ASM_DECLARE_FUNCTION_NAME): If TARGET_GAS, then emit .PARAM directives
for static functions so that argument relocations work.
From-SVN: r5173
* pa.c (hppa_legitimize_address): Rework address computation
for x[n - m] so that problems with implicit space register
selection are avoided.
From-SVN: r5172
* pa.md (uncond_branch): New type attribute. Explicitly disallow
uncond_branch in most delay slots.
(in_call_delay attribute): New test for delay slot of call insns.
Allow uncond_branches in the delay slot if TARGET_JUMP_IN_DELAY.
(define_delay for calls, millicode calls, branches, returns, etc):
Broken up into two define delays. One for calls and millicode
calls, a second for branches, returns, etc.
(millicode insns): Pass the current insn down to
output_{mul,div,mod}_insn.
(jump insn): Use "uncond_branch" type attribute. Length of this
insn varies if it is in the delay slot of a call.
(call_internal_symref): Use output_call.
(call_value_internal_symref): Likewise.
(call_internal_reg): Use %r syntax instead of just register numbers.
(call_value_internal_reg): Likewise.
From-SVN: r4916
* pa.c (output_call): New function to output a function call or
millicode call, possibly with a jump in the delay slot.
(output_mul_insn): Accept additional argument, use output_call.
(output_div_insn): Likewise.
(output_mod_insn): Likewise.
(jump_in_call_delay): New function to determine if the given
JUMP_INSN is in the delay slot of a call or millicode call.
From-SVN: r4915
* pa.h (TARGET_JUMP_IN_DELAY): New target flag to allow/disallow
jump instructions in call delay slots.
(TARGET_SWITCHES): Add -mjump-in-delay and -mno-jump-in-delay.
Provide -mno alternatives for most options.
(output_call): Declare.
From-SVN: r4914
* pa.c (pa_adjust_insn_length): dbra and movb insns which have
their output in a FP register do not need adjustment.
(output_cbranch, output_bb): Handle conditional jump to the
following instruction.
(output_dbra): New function extracted from dbra pattern.
(output_movb): New function.
(eq_neq_comparison_operator): New function.
(movb_comparison_operator): New function.
From-SVN: r4888
* pa.c (pa_adjust_insn_length): Rewrite so that it only adjusts
insns which really need adjustment.
(output_cbranch): Rework so that output templates are simpler.
Use shorter sequence for long backwards conditional branches with
a filled delay slot that is nullified. More agressively use "skip"
instructions. More agressively nullify the delay slot if nothing
useful could be placed there.
(output_bb): Likewise.
(forward_branch_p): New function.
From-SVN: r4875
* pa.md (conditional branches): Use the full displacement range
for the branch target. Update length computations to match current
reality.
(branch on bit patterns): Likewise.
(decrement_and_branch_until_zero): Re-enable pattern. Rewrite to
be simpler and more efficient. Also handle case where loop counter
is in a FP register.
From-SVN: r4874
* pa.md (call expanders): Emit different patterns for named calls
and indirect calls.
(call_internal_symref, call_internal_reg): New patterns.
(call_internal): Deleted. Now handled by call_interal_{symref,reg}.
(call_value_internal_symref, call_value_internal_reg): New patterns.
(call_value_internal): Deleted. Now handled by
call_value_internal_{symref,reg).
From-SVN: r4837
* pa.c (output_arg_descriptor): Reverse polarity of test for
HP_FP_ARG_DESCRIPTOR_REVERSED.
* pa.h (ASM_DOUBLE_ARG_DESCRIPTORS): Likewise.
From-SVN: r4817
(output_function_epilogue): If the last insn in the
current function is a (volatile) call, then emit an extra
nop after the call so that RP will point to a valid instruction.
From-SVN: r4630