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

--- Comment #10 from Uroš Bizjak <ubizjak at gmail dot com> ---
(In reply to Uroš Bizjak from comment #7)
> compiles with unpatched gcc -O2 -mf16c to:
> 
>       vmovss  %xmm0, %xmm0, %xmm2     # 27    [c=4 l=4]  *movhf_internal/3
>         pextrw  $0, %xmm1, -4(%rsp)     # 28    [c=4 l=6]  *movhf_internal/5
>         vpxor   %xmm0, %xmm0, %xmm0     # 7     [c=4 l=4]  movv8hf_internal/0
>         vpxor   %xmm1, %xmm1, %xmm1     # 11    [c=4 l=4]  movv8hf_internal/0
>         pextrw  $0, %xmm2, -2(%rsp)     # 30    [c=4 l=6]  *movhf_internal/5
>         vpinsrw $0, -4(%rsp), %xmm1, %xmm1      # 12    [c=4 l=8] 
> sse4_1_pinsrph/3
>         vpinsrw $0, -2(%rsp), %xmm0, %xmm0      # 8     [c=4 l=8] 
> sse4_1_pinsrph/3
>         vcvtph2ps       %xmm1, %xmm1    # 13    [c=4 l=4]  vcvtph2ps
>         vcvtph2ps       %xmm0, %xmm0    # 9     [c=4 l=4]  vcvtph2ps
>         vaddss  %xmm1, %xmm0, %xmm0     # 15    [c=12 l=4]  *fop_sf_comm/2
>         vinsertps       $0xe, %xmm0, %xmm0, %xmm0       # 17    [c=4 l=4] 
> vec_setv4sf_0/2
>         vcvtps2ph       $4, %xmm0, %xmm0        # 18    [c=4 l=4]  *vcvtps2ph
>         ret             # 35    [c=0 l=1]  simple_return_internal

Just noticed that for some reason two VPXORs are emitted. One should be enough
for both VPINSRW insns.

Reply via email to