diff options
author | Jeff Law <law@gcc.gnu.org> | 1995-12-17 12:32:56 -0700 |
---|---|---|
committer | Jeff Law <law@gcc.gnu.org> | 1995-12-17 12:32:56 -0700 |
commit | 0f05dcc2c239a72f763649796b68158f29ff5132 (patch) | |
tree | 589aa7dbaa45e7f049db6bf3004ce8bd27fe26bd /gcc | |
parent | 041d71807974f04fc621367fe49b0bba6468bb5c (diff) | |
download | gcc-0f05dcc2c239a72f763649796b68158f29ff5132.zip gcc-0f05dcc2c239a72f763649796b68158f29ff5132.tar.gz gcc-0f05dcc2c239a72f763649796b68158f29ff5132.tar.bz2 |
* pa.md: Add 2nd reload peephole somehow omitted from Nov27 changes.
From-SVN: r10791
Diffstat (limited to 'gcc')
-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 b758aa8..80f5db3 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 |