This is the mail archive of the gcc-bugs@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]

[Bug c++/55726] assignment of a scalar to a vector


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55726

--- Comment #4 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2012-12-19 13:25:16 UTC ---
I understand your concern, Marc.

I think that the compiler shall either prefer double or produce
"error: call of overloaded 'f(float&)' is ambiguous"
I'm even more worried of
void f(float32x4_t);
void f(float32x8_t);

what about some sort of c++ "explicit"?

I must say that my immediate need come from template functions
that could accept any arithmetic AND vector type 
such as

template<typename Float>
inline
Float atan(Float t) {
  constexpr float PIO4F = 0.7853981633974483096f;
  constexpr Float zero = {0};
  Float ret = ( t > 0.4142135623730950f ) ? zero+PIO4F : zero;
â
}

where at the moment I need to perform a quite "unnatural" syntactic gymnastic
to assign
a scalar to either another scalar or to a vector of unknown length.


btw I think that altivec supports the assignment of a scalar: I've never tried
myself though
vector int vi1 = (vector int)(1);    // vi1 will be (1, 1, 1, 1).
vector int vi2 = (vector int){1};    // vi2 will be (1, 0, 0, 0).
vector int vi3 = (vector int)(1, 2); // error
vector int vi4 = (vector int){1, 2}; // vi4 will be (1, 2, 0, 0).
vector int vi5 = (vector int)(1, 2, 3, 4);


In any case I find  all these "exercises" quite useful to try to converge to a
unique vector syntax to propose as standard


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