assembler error in XFree86 snapshot

Eric Anholt anholt at FreeBSD.org
Wed May 7 15:39:19 PDT 2003


On Wed, 2003-05-07 at 15:11, Thomas Moestl wrote:
> On Mon, 2003/04/07 at 17:33:32 -0700, Kris Kennaway wrote:
> > On Thu, Jan 16, 2003 at 09:17:28PM +0100, Thomas Moestl wrote:
> > > This is a arguably a gcc bug. All (13-bit) immediate operands are
> > > sign-extended, even those to instructions which operate on unsigned
> > > values, so umul can handle a range of very small and a range of very
> > > large operands. gcc correctly recognizes that it can use an immediate
> > > here; however, it chooses to output it as an unsigned number and does
> > > not sign-extended it from 32 to 64 bit.
> > > 
> > > All sign extensions for instructions are made to the full 64 bit
> > > however (even if umul only happens to use 32 of those), so when the
> > > assembler checks whether a value is representable as an immediate, it
> > > will check that the 64-bit sign extension of the immediate creates
> > > the desired value (in sparc64 mode), i.e. it doesn't ignore the upper
> > > 32 bits even if a particular instruction does not use them.
> > > 
> > > One solution is to generate negative literals for immediates if we
> > > mean them to be sign-extended (which gcc does already for some other
> > > instructions). The attached patch implements this, I'm not sure it
> > > uses the best possible way to do this though, and it also needs a bit
> > > more testing.
> > 
> > *Ping*
> > 
> > Someone needs to take this up with the gcc developers so it can get fixed.
> 
> Sorry, I didn't have time to get this done for 5.2. The attached patch
> should work around the bug however; Eric, could you please add it to
> XFree86-4-libraries, until the problem is resolved in gcc or gas, so
> that there can be a package for the release?
> 
> Thanks,
> 	- Thomas

Done.  Thanks for the patch.

-- 
Eric Anholt                                eta at lclark.edu          
http://people.freebsd.org/~anholt/         anholt at FreeBSD.org



More information about the freebsd-sparc64 mailing list