PATCH: PR target/36992: Very stange code for _mm_move_epi64

Uros Bizjak ubizjak@gmail.com
Thu Aug 7 12:14:00 GMT 2008


On Wed, Aug 6, 2008 at 3:40 PM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Wed, Aug 06, 2008 at 02:32:25PM +0200, Uros Bizjak wrote:
>>
>> Both patterns can be substituted with:
>>
>> (define_insn "sse2_movq128"
>>  [(set (match_operand:V2DI 0 "register_operand" "=x")
>>    (vec_concat:V2DI
>>      (vec_select:DI
>>        (match_operand:V2DI 1 "nonimmediate_operand" "xm")
>>        (parallel [(const_int 0)]))
>>      (const_int 0)))]
>>  "TARGET_SSE2"
>>  "movq\t{%1, %0|%0, %1}"
>>  [(set_attr "type" "ssemov")
>>   (set_attr "mode" "TI")])
>>
>>
>> The test above was introduced to check for possible %mm usage when -O0
>> was used. Do you think we should check generation of movq for -O0 or we
>> could delete this test as redundant now?
>>
>
> Here is the updated patch.  OK for trunk?
>
> Thanks.
>
>
> H.J.
> --
> gcc/
>
> 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
>
>        PR target/36992
>        * config/i386/emmintrin.h (_mm_move_epi64): Use
>        __builtin_ia32_movq128.
>
>        * config/i386/i386.c (ix86_builtins): Add IX86_BUILTIN_MOVQ128.
>        (bdesc_args): Add IX86_BUILTIN_MOVQ128.
>
>        * config/i386/sse.md (sse2_movq128): New.
>
>        * doc/extend.texi: Document __builtin_ia32_movq128.
>
> gcc/testsuite/
>
> 2008-08-06  H.J. Lu  <hongjiu.lu@intel.com>
>
>        PR target/36992
>        * gcc.target/i386/pr36992-1.c: Scan movq.
>        * gcc.target/i386/pr36992-2.c: Use "-O2 -msse4" instead of
>        "-O0 -msse2".  Scan movq.

... scan for movq.

OK for mainline.

Thanks,
Uros.



More information about the Gcc-patches mailing list