From 962ef7fea28a33a5257ae4155e96edc357fb189b Mon Sep 17 00:00:00 2001 From: Uros Bizjak Date: Sat, 21 Oct 2006 21:27:02 +0200 Subject: re PR rtl-optimization/19398 (secondary reloads don't consider "m" alternatives) PR target/19398 * config/i386/i386.md (fix_trunc?f?i_sse): Add peephole2 patterns to use memory input operand in x87->mem->XMM reload sequences. Skip transformation for TARGET_K8. From-SVN: r117935 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/i386.md | 21 +++++++++++++++++++++ 2 files changed, 28 insertions(+) (limited to 'gcc') diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 953dd25..8d33188 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2006-10-21 Uros Bizjak + PR target/19398 + * config/i386/i386.md (fix_trunc?f?i_sse): Add peephole2 + patterns to use memory input operand in x87->mem->XMM + reload sequences. Skip transformation for TARGET_K8. + +2006-10-21 Uros Bizjak + * config/i386/i386.md (extendsfdf2, extendsfxf2, extenddfxf2): Do not force operand1 to register if both operands are memory operands. (*extendsfdf2_mixed, *extendsfdf2_sse, *extendsfdf2_i387) diff --git a/gcc/config/i386/i386.md b/gcc/config/i386/i386.md index 91596dd..997f051 100644 --- a/gcc/config/i386/i386.md +++ b/gcc/config/i386/i386.md @@ -4159,6 +4159,27 @@ (set_attr "mode" "DF") (set_attr "athlon_decode" "double,vector")]) +;; Shorten x87->SSE reload sequences of fix_trunc?f?i_sse patterns. +(define_peephole2 + [(set (match_operand:DF 0 "register_operand" "") + (match_operand:DF 1 "memory_operand" "")) + (set (match_operand:SSEMODEI24 2 "register_operand" "") + (fix:SSEMODEI24 (match_dup 0)))] + "!TARGET_K8 + && peep2_reg_dead_p (2, operands[0])" + [(set (match_dup 2) (fix:SSEMODEI24 (match_dup 1)))] + "") + +(define_peephole2 + [(set (match_operand:SF 0 "register_operand" "") + (match_operand:SF 1 "memory_operand" "")) + (set (match_operand:SSEMODEI24 2 "register_operand" "") + (fix:SSEMODEI24 (match_dup 0)))] + "!TARGET_K8 + && peep2_reg_dead_p (2, operands[0])" + [(set (match_dup 2) (fix:SSEMODEI24 (match_dup 1)))] + "") + ;; Avoid vector decoded forms of the instruction. (define_peephole2 [(match_scratch:DF 2 "Y") -- cgit v1.1