RFC: using clz for comparing to zero on the tree level.

Richard Earnshaw rearnsha@arm.com
Fri May 9 15:47:00 GMT 2003


> > In the case I mainly was considering was x==0||y==0, where on PPC (and 
> > mostly likely on ARM) the asm with clz would be shorter and faster,

> On the ARM, that can be done as
> 
>	cmp	x, #0
>	cmpne	y, #0
>	moveq	out, #1
>	movne	out, #0


Or even, extending Olly Bett's suggestion:

	rsbs	out, x, #1
	rsbccs	out, y, #1
	movcc	out, #0

Which is certainly shorter than can be done with CLZ.

Note, in this case OUT must not overlap Y, but it may overlap X (but we 
can do the comparison of Y before that of X if that is the case).

R.



More information about the Gcc mailing list