* [Bug c++/55726] assignment of a scalar to a vector
2012-12-18 7:17 [Bug c++/55726] New: assignment of a scalar to a vector vincenzo.innocente at cern dot ch
@ 2012-12-18 11:36 ` rguenth at gcc dot gnu.org
2012-12-18 11:39 ` vincenzo.innocente at cern dot ch
` (3 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: rguenth at gcc dot gnu.org @ 2012-12-18 11:36 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55726
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |NEW
Last reconfirmed| |2012-12-18
Ever Confirmed|0 |1
Severity|normal |enhancement
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> 2012-12-18 11:35:43 UTC ---
Confirmed. Does it work with C?
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/55726] assignment of a scalar to a vector
2012-12-18 7:17 [Bug c++/55726] New: assignment of a scalar to a vector vincenzo.innocente at cern dot ch
2012-12-18 11:36 ` [Bug c++/55726] " rguenth at gcc dot gnu.org
@ 2012-12-18 11:39 ` vincenzo.innocente at cern dot ch
2012-12-18 20:54 ` glisse at gcc dot gnu.org
` (2 subsequent siblings)
4 siblings, 0 replies; 6+ messages in thread
From: vincenzo.innocente at cern dot ch @ 2012-12-18 11:39 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55726
--- Comment #2 from vincenzo Innocente <vincenzo.innocente at cern dot ch> 2012-12-18 11:39:22 UTC ---
no
gcc -Ofast -march=corei7 assign.c -std=c99
assign.c: In function ‘main’:
assign.c:9:21: error: incompatible types when initializing type ‘float32x4_t’
using type ‘float’
float32x4_t va = a;
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/55726] assignment of a scalar to a vector
2012-12-18 7:17 [Bug c++/55726] New: assignment of a scalar to a vector vincenzo.innocente at cern dot ch
2012-12-18 11:36 ` [Bug c++/55726] " rguenth at gcc dot gnu.org
2012-12-18 11:39 ` vincenzo.innocente at cern dot ch
@ 2012-12-18 20:54 ` glisse at gcc dot gnu.org
2012-12-19 13:25 ` vincenzo.innocente at cern dot ch
2012-12-22 8:57 ` glisse at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: glisse at gcc dot gnu.org @ 2012-12-18 20:54 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55726
Marc Glisse <glisse at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
CC|marc.glisse at ens dot fr |glisse at gcc dot gnu.org
--- Comment #3 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-18 20:53:52 UTC ---
If I have:
void f(double);
void f(float32x4_t);
float a;
what should f(a) do? Not sure that's the right question (I am sick this week,
so I have an excuse for posting nonsense), but hopefully you see the point,
adding implicit conversions has a lot of consequences, which might be good but
need to be considered.
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/55726] assignment of a scalar to a vector
2012-12-18 7:17 [Bug c++/55726] New: assignment of a scalar to a vector vincenzo.innocente at cern dot ch
` (2 preceding siblings ...)
2012-12-18 20:54 ` glisse at gcc dot gnu.org
@ 2012-12-19 13:25 ` vincenzo.innocente at cern dot ch
2012-12-22 8:57 ` glisse at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: vincenzo.innocente at cern dot ch @ 2012-12-19 13:25 UTC (permalink / raw)
To: gcc-bugs
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
^ permalink raw reply [flat|nested] 6+ messages in thread
* [Bug c++/55726] assignment of a scalar to a vector
2012-12-18 7:17 [Bug c++/55726] New: assignment of a scalar to a vector vincenzo.innocente at cern dot ch
` (3 preceding siblings ...)
2012-12-19 13:25 ` vincenzo.innocente at cern dot ch
@ 2012-12-22 8:57 ` glisse at gcc dot gnu.org
4 siblings, 0 replies; 6+ messages in thread
From: glisse at gcc dot gnu.org @ 2012-12-22 8:57 UTC (permalink / raw)
To: gcc-bugs
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55726
--- Comment #5 from Marc Glisse <glisse at gcc dot gnu.org> 2012-12-22 08:57:14 UTC ---
(In reply to comment #4)
> 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;
> …
> }
Minor remark: I think you can just write PIO4F instead of zero+PIO4F. Since the
other alternative in ?: is a vector, it should convert the scalar
automatically.
I am actually planning for later that you can even replace zero with 0: when
the condition in ?: is a vector, the result has to be a vector, even if the 2
alternatives are scalars, so it could guess the return type based on the types
of the scalars and the size / number of elements of the condition. But that's
for a distant future.
^ permalink raw reply [flat|nested] 6+ messages in thread