[PATCH] Start adding support for VIS 3.0 instructions.

David Miller davem@davemloft.net
Tue Oct 4 01:43:00 GMT 2011


From: Richard Henderson <rth@redhat.com>
Date: Mon, 03 Oct 2011 15:19:00 -0700

> On 10/01/2011 11:40 AM, David Miller wrote:
>> +;; Conditional moves are possible via fcmpX --> cmaskX -> bshuffle
> 
> Does this comment mean you can fairly efficiently implement the
> vcond<cmpmode><datamode> patterns?

That seems to be the case.  So such an expander would emit something
like:

	fcmple32	%f0, %f2, %g1
	cmask32		%g1
	bshuffle	%f0, %f2, %f4

for an "le" conditional move.

When modes N and M use different vector element types, I'll have
to frob the bitmask produced by the fcmp and adjust the cmask
variant used.

What exactly is supposed to happen when, for example, the comparison
is between two v4hi values and the conditional move is done on
v2si values?  It seems the only requirement is that modes N and M
be vector modes of the same size.










More information about the Gcc-patches mailing list