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

Re: [PATCH] x86: Define _mm*_undefined_*


On Tue, Mar 18, 2014 at 7:13 AM, Richard Biener
<richard.guenther@gmail.com> wrote:
> extern __inline __m512
> __attribute__ ((__gnu_inline__, __always_inline__, __artificial__))
> _mm512_undefined_ps (void)
> {
>   __m512 __Y = __Y;
>   return __Y;
> }


This provokes no warnings (as you wrote) and it doesn't clobber flags,
but it doesn't avoid loading.  The code below creates a pxor for the
parameter.  That's what I think compiler support should help to get
rid of.  If the compiler has some magic to recognize -1 masks then
this will help in some situations but it seems to be a specific
implementation for the intrinsics while I've been looking at generic
solution.


typedef double __m128d __attribute__ ((__vector_size__ (16), __may_alias__));

void g(__m128d);

extern __inline __m128d
__attribute__((__gnu_inline__, __always_inline__, __artificial__, const))
_mm_undefined_pd(void) {
  __m128d v = v;
  return v;
}

void
f()
{
  g(_mm_undefined_pd());
}


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