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

rockeet <rockeet at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|RESOLVED                    |REOPENED
         Resolution|INVALID                     |---

--- Comment #7 from rockeet <rockeet at gmail dot com> ---
@Marc @Jakub @Martin
Intel CPU document says: operand of _mm_cmpestri can be memory or mm register,
when the operand is memory, it does not require alignment.

The issue is: GCC does not know this knowledge(memory operand need not memory
align), and there is no way to enforce gcc to generate a _mm_cmpestri which
always use memory operand, not mm register.

If I manually load the unaligned memory into an aligned `__m128i`, it has
performance penalty on optimizing compilation.

At last, we can always use `asm` to workaround this issue, but this is not the
ideal solution!

Reply via email to