https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84508

--- Comment #6 from Marc Glisse <glisse at gcc dot gnu.org> ---
(In reply to Jakub Jelinek from comment #5)
> (In reply to Marc Glisse from comment #3)
> > Workaround: define a typedef for double with
> > __attribute__((__aligned__(1))), and use _mm_set_sd(*(newtype*)p), that's
> > how it will likely be done if we change emmintrin.h."
> 
> I don't think we really support misaligned loads from non-aggregates, there
> have been lengthy discussions about that in the past.

We already use

typedef long long __m128i_u __attribute__ ((__vector_size__ (16),
__may_alias__, __aligned__ (1)));

_mm_loadu_si128 (__m128i_u const *__P)
{
  return *__P;
}

So if that doesn't work, it needs fixing in a number of places...

Reply via email to