This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: conversions between vectors



> > 	c2 = __builtin_vector_add_v4si_unsigned (a2, b2);
> > 
> > even if both builtins map to the same exact machine instruction.
> 
> If both are signed, or both unsigned, surely programmers will just use the
> + operator?

we have no support for any kind of operations on vectors.  dan berlin
had a patch for + and - a few weeks ago, but no one approved AFAICT.

> Signed addition and unsigned addition are different in C; in signed
> addition, overflow is undefined behaviour and GCC will optimise on the
> basis that it is undefined.  Thus the functions have conceptually
> different behaviour.

from what i've seen in vector extensions, signed and unsigned additions
for vector types are the same.  i don't think there's overflow.

> The programmers should normally be using the much less cumbersome +

i absolutely agree.  so, let's get Dan's patch approved.

> operator between two vectors of the same type.  If they want to add a
> signed to an unsigned - yes, make them explictly convert one to the other
> rather than repeating the problems of the type system for the standard
> types.

for operations between signed and unsigned in which one is signed and
the other unsigned, yes, i agree.  provided we have + - etc available. 
this would be great.

however, what do you do for a function:

	void foo (vector int, vector int);

that operates on vector int's but has the same effect for vector
unsigned as for vector signed?  are you going to explicitly require a
cast?  that's the part i don't like.

-- 
Aldy Hernandez			E-mail: aldyh@redhat.com
Professional Gypsy
Red Hat, Inc.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]