diff options
author | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-12-17 19:32:56 +0000 |
---|---|---|
committer | law <law@138bc75d-0d04-0410-961f-82ee72b054a4> | 1995-12-17 19:32:56 +0000 |
commit | e9afaae536e7ad5049605f5ac14b388754e423b9 (patch) | |
tree | 589aa7dbaa45e7f049db6bf3004ce8bd27fe26bd /gcc/config/pa/pa.md | |
parent | b9ff9eefb90cc047d327b56829267d1e43a88cdd (diff) | |
download | gcc-e9afaae536e7ad5049605f5ac14b388754e423b9.tar.gz |
* pa.md: Add 2nd reload peephole somehow omitted from Nov27 changes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@10791 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/pa/pa.md')
-rw-r--r-- | gcc/config/pa/pa.md | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/gcc/config/pa/pa.md b/gcc/config/pa/pa.md index b758aa876fd..80f5db3e201 100644 --- a/gcc/config/pa/pa.md +++ b/gcc/config/pa/pa.md @@ -4769,6 +4769,40 @@ return \"\"; }") +(define_peephole + [(set (match_operand 0 "register_operand" "f") + (match_operand 1 "reg_or_nonsymb_mem_operand" "")) + (set (match_operand 2 "register_operand" "f") + (match_dup 1))] + "! TARGET_SOFT_FLOAT + && GET_CODE (operands[1]) == MEM + && ! MEM_VOLATILE_P (operands[1]) + && GET_MODE (operands[0]) == GET_MODE (operands[1]) + && GET_MODE (operands[0]) == GET_MODE (operands[2]) + && GET_MODE (operands[0]) == DFmode + && REGNO_REG_CLASS (REGNO (operands[1])) + == REGNO_REG_CLASS (REGNO (operands[2]))" + "* +{ + enum machine_mode mode = GET_MODE (operands[0]); + rtx xoperands[2]; + + if (FP_REG_P (operands[0])) + output_asm_insn (output_fp_move_double (operands), operands); + else + output_asm_insn (output_move_double (operands), operands); + + xoperands[0] = operands[2]; + xoperands[1] = operands[0]; + + if (FP_REG_P (xoperands[1])) + output_asm_insn (output_fp_move_double (xoperands), xoperands); + else + output_asm_insn (output_move_double (xoperands), xoperands); + + return \"\"; +}") + ;; Flush the I and D cache line found at the address in operand 0. ;; This is used by the trampoline code for nested functions. ;; So long as the trampoline itself is less than 32 bytes this |