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

Uroš Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|UNCONFIRMED                 |RESOLVED
         Resolution|---                         |FIXED
   Target Milestone|---                         |9.0

--- Comment #6 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Peter Cordes from comment #3)
> For the reverse, we get:
> 
> long long extract(__m128i v) {
>     return ((__v2di)v)[0];
> }
> 
>         subl    $28, %esp
>         vmovq   %xmm0, 8(%esp)
>         movl    8(%esp), %eax
>         movl    12(%esp), %edx
>         addl    $28, %esp
>         ret
> 
> MOVD / PEXTRD might be better, but gcc does handle it.  It's all using
> syntax that's available in 32-bit mode, not a special built-in.

Please report this problem in the another PR (it is the case of missing v->r
alternative in *vec_extractv2di_0_sse pattern for SSE4+, where we can split
directly to movd/pextrd).

The original problem is fixed for gcc-9.

Reply via email to