On Tue, Mar 18, 2014 at 7:13 AM, Richard Biener
<[email protected]> 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());
}