[PATCH] Allow casts of mixed-size same-arity vectors
Hal Finkel
hfinkel at anl.gov
Fri Sep 13 06:02:13 PDT 2013
----- Original Message -----
>
> On Thu, Sep 12, 2013 at 2:14 PM, Hal Finkel < hfinkel at anl.gov >
> wrote:
>
>
>
>
>
>
> ----- Original Message -----
> >
> > On Sep 12, 2013, at 2:08 PM, Hal Finkel < hfinkel at anl.gov > wrote:
> >
> > > ----- Original Message -----
> > >>
> > >> On Wed, Sep 11, 2013 at 3:34 PM, Hal Finkel < hfinkel at anl.gov >
> > >> wrote:
> > >>
> > >> ----- Original Message -----
> > >>> On Sep 11, 2013, at 3:29 PM, Hal Finkel < hfinkel at anl.gov >
> > >>> wrote:
> > >>>
> > >>>
> > >>>
> > >>>
> > >>>
> > >>> ----- Original Message -----
> > >>>
> > >>>
> > >>> ----- Original Message -----
> > >>>
> > >>>
> > >>> Hal —
> > >>>
> > >>> Am I understanding this correctly:
> > >>>
> > >>> vector4float x;
> > >>> vector4int16 y = (vector4int16)x; // this is a conversion
> > >>> vector4int32 z = (vector4int32)x; // this is a bitcast
> > >>>
> > >>> This seems confusing in the extreme.
> > >>>
> > >>> On the other hand, I don't really like the implied int-to-float
> > >>> bitcast semantics. Maybe it would be better to just add a
> > >>> warning
> > >>> for this case. What do you think?
> > >>>
> > >>> bitcast semantics for vector casts are an essential tool for
> > >>> SIMD
> > >>> programming. Essentially all warnings generated would be false
> > >>> positives.
> > >>
> > >> Do you specifically mean in OpenCL, or generally? (I've worked
> > >> on
> > >> SIMD special function implementations, so I understand the
> > >> utility).
> > >>
> > >> OpenCL doesn't allow writing casts like this at all, if that's
> > >> what
> > >> you're asking; OpenCL requires using intrinsics.
> > >
> > > So is there already an intrinsic that does what I want here?
> >
> > In OpenCL there are ~5000 of them (IIRC), yes.
>
> OIC, all of the convert_* functions.
>
> I've been thinking about constructing a patch to implement
> __builtin_vectorconvert(type, value), do you think that is a
> reasonable approach?
>
>
>
>
> You mean, as a generic replacement for intrinsics like
> _mm_cvtepi32_ps? That seems reasonable.
I've developed a patch for this; for better or worse it touches a lot of things, so I'll start a new thread (probably using phabricator).
Thanks again,
Hal
>
> -Eli
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the cfe-commits
mailing list