[PATCH] Allow casts of mixed-size same-arity vectors
Hal Finkel
hfinkel at anl.gov
Wed Sep 11 15:29:07 PDT 2013
----- 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?
-Hal
>
> Ah, this is an excellent point. That does seem confusing. Do you have
> an alternate suggestion? (would it be better to add some kind of
> __builtin_convert intrinsic?)
>
> Thanks,
> Hal
>
> >
> > Thanks,
> > – Steve
> >
> > On Sep 11, 2013, at 12:04 PM, Hal Finkel <hfinkel at anl.gov> wrote:
> >
> > > Hello,
> > >
> > > Please review the attached patch which adds support for casting
> > > between vector types with different sizes (but the same number of
> > > vector elements). LLVM supports these conversions for the
> > > underlying LLVM vector types (just as for the scalar types), and
> > > this adds support in Clang, requiring minor modifications in Sema
> > > and CodeGen.
> > >
> > > For example, this patch allows the following to work:
> > >
> > > typedef double vector4double
> > > __attribute__((__vector_size__(32)));
> > > typedef float vector4float
> > > __attribute__((__vector_size__(16)));
> > >
> > > vector4float flt_trunc(vector4double x) {
> > > return (vector4float) x;
> > > }
> > >
> > > On some targets the code generation for these conversions has
> > > been
> > > optimized (autovectorization can produce these conversions), and
> > > accessing these capabilities from Clang is important, for
> > > example,
> > > when writing intrinsics headers (which, when possible, we prefer
> > > to implement in terms of generic IR).
> > >
> > > Thanks in advance,
> > > Hal
> > >
> > > --
> > > Hal Finkel
> > > Assistant Computational Scientist
> > > Leadership Computing Facility
> > > Argonne National Laboratory
> > > <mixed-size-vec-casts.patch>_______________________________________________
> > > cfe-commits mailing list
> > > cfe-commits at cs.uiuc.edu
> > > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
> >
> >
>
> --
> Hal Finkel
> Assistant Computational Scientist
> Leadership Computing Facility
> Argonne National Laboratory
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
>
--
Hal Finkel
Assistant Computational Scientist
Leadership Computing Facility
Argonne National Laboratory
More information about the cfe-commits
mailing list