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