------- Comment #4 from rguenth at gcc dot gnu dot org  2010-02-23 10:42 -------
(In reply to comment #3)
> Subject: Re:  vld4 and vst4 intrinsics are not handled
>  correctly
> 
> On Fri, Feb 19, 2010 at 11:08:18AM -0000, rguenth at gcc dot gnu dot org 
> wrote:
> > Likely because of the union in
> > 
> > __extension__ static __inline void __attribute__ ((__always_inline__))
> > vst4_u8 (uint8_t * __a, uint8x8x4_t __b)
> > {
> >   union { uint8x8x4_t __i; __builtin_neon_oi __o; } __bu = { __b };
> >   __builtin_neon_vst4v8qi ((__builtin_neon_qi *) __a, __bu.__o);
> > }
> > 
> > which does copy-initialization of __bu.
> 
> Right.  FYI, my best idea to date of how to fix this is to convert the
> multiple-vector types (like uint8x8x4_t) to builtin types.  At that
> point we can use the neon_reinterpret patterns to do the necessary
> type punning without involving __builtin_neon_oi and the union.

Ideally we'd be able to get rid of the extra temporary at the tree level.
Value-numbering can in theory do that, but I suppose the testcase at
hand is obfuscated enough to not do it.


-- 


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

Reply via email to