The point is that the existing Altivec and SPE cast syntax requires that
a C-style cast from one vector type to another be bit-preserving. So,
we can't change that (or static_casts, which are the kind of C++ cast
that are using to implement this kind of C-style cast) without breaking
backwards compatibility.
I suppose, though, that Chris' proposed array-access extension to vector
types may make the situation a bit better. A value preserving cast from
V4SI to V4SF could be written as:
v4sf fv = { iv[0], iv[1], iv[2], iv[3] };
if the compiler could make sense of it and produce good code -- which is
probably all but trivial.
Paolo