Review microblaze.md, required changes

Michael Eager eager@eagercon.com
Fri Feb 19 20:35:00 GMT 2010


Richard Henderson wrote:

>  > (define_insn "*negdi2_internal"
>  >   [(set (match_operand:DI 0 "register_operand" "=d")
>  >         (neg:DI (match_operand:DI 1 "register_operand" "d")))
>  >   (clobber (match_operand:SI 2 "register_operand" "=d"))]
>  >   ""
>  >   "rsub\t%L0,%L1,r0\;rsubc\t%M0,%M1,r0"
> 
> Where is operand 2 used?  I think you were interested in saving %M1 if 
> there is overlap between %M1 and %L0, but forgot to do it.
> 
> I honestly can't remember if this is something that you have to worry 
> about.  And if it is, you have the same problem with every other 
> double-word operation.

I don't think that there is a register overlap issue.

> What might be best in the short-term is to simply mark the outputs on 
> all of these instructions as early-clobber, and avoid the extra scratch. 
>  That will be good enough until you rewrite the patterns to model the 
> carry flag and be split before reload, at which point the early clobber 
> problem goes away.

Removed unused operand 2.

http://gcc.gnu.org/viewcvs?view=revision&revision=156790
or
svn diff svn://gcc.gnu.org/svn/gcc/branches/microblaze -r r156788:r156790


-- 
Michael Eager	 eager@eagercon.com
1960 Park Blvd., Palo Alto, CA 94306  650-325-8077





More information about the Gcc-patches mailing list