This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: Patch to improve x86 FP move patterns



  In message <199904022037.PAA13810@jwlab.FEITH.COM>you write:
  > >   > Thu Apr  1 23:23:18 EST 1999  John Wehle  (john@feith.com)
  > >   > 
  > >   > 	* i386.md (movsf+1, movdf+1, movxf+1): Update constraints
  > >   > 	so that SECONDARY_MEMORY_RELOAD is used.  Remove dead code.
  > > Thanks.  Installed!
  > 
  > After posting the patch last night I tweaked the movdf+1 and movxf+1
  > constraints further by adding earlyclobber to alternative three.
  > 
  > So instead of:
  > 
  >   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,m,!*r,!o")
  > 
  > it reads:
  > 
  >   [(set (match_operand:DF 0 "nonimmediate_operand" "=f,m,!&*r,!o")
  > 
  > Okay to update the source tree?
Is that really necessary?  That alternative is a *rmF -> !*r copy.  Doesn't
output_move_double already handle the overlapping register issue?  ie, even
if the input & output overlap, output_move_double (I think) will generate the
correct code.

If that is the case, then adding the '&' doesn't help, and in fact just makes
register allocation worse.

Am I missing something?

jeff

ps.  No, I don't think output_move_double is required to handle overlapping
moves; however most if not all do.  And a very quick scan of the x86 version
leads me to believe it handles overlapping moves.



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]