Thread (36 messages) 36 messages, 8 authors, 2004-09-05

Re: [patch] MIPS/gcc: Revert removal of DImode shifts for 32-bit targets

From: Nigel Stephens <hidden>
Date: 2004-08-04 20:37:34

Maciej W. Rozycki wrote:
Here are my proposals I've referred to previously.  Instruction counts
are 9, 9 and 10, respectively, as I've missed an additional instruction
required to handle shifts by 0 (or actually any multiples of 64). 
IMHO handling a shift by zero correctly is important.
	"not	%1, %3\n\t"
	"srlv	%1, %L2, %1\n\t"
	"srl	%1, %1, 1\n\t"
Why not the shorter:
	"neg	%1, %3\n\t"
	"srlv	%1, %L2, %1\n\t"

 
And then in __ashrdi3:

		"andi	%1, %3, 0x20\n\t"
		".set	push\n\t"
		".set	noat\n\t"
		"sra	$1, %M2, 31\n\t"
		"movn	%L0, %M0, %1\n\t"
		"movn	%M0, $1, %1\n\t"
		".set	pop"

Cute, but I think that should be

	"sra	$1, %M0, 31\n\t"

(i.e %M0 not %M2)

Nigel
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help