On Tue, May 21, 2013 at 07:03:54PM +0200, Uros Bizjak wrote:
> This patch avoids movdqu/movdqa when SSE2 is disabled. Although
> -mno-sse2 is bordering on ABI violation for 64bit targets, the patch
> is simple enough to fix movti_internal_rex64 pattern.

If the TImode attr variant isn't valid for !SSE2, I'd find it clearer
to do
(match_test "!TARGET_SSE2") (const_string "V4SF")
much earlier in the cond, before TARGET_AVX case that returns TImode
(sure, when TARGET_AVX is true, then !TARGET_SSE2 is false), and
not added using ior to an unrelated condition.

That said, you are the maintainer, thus your decision; I think this is
fine for 4.8 today (if committed before RC2 is rolled).

> 2013-05-21  Uros Bizjak  <ubiz...@gmail.com>
> 
>     PR target/57356
>     * config/i386/i386.md (*movti_internal_rex64): Emit movaps/movups
>     for non-sse2 targets.
> 
> Tested on x86_64-pc-linux-gnu {,-m32}. OK for 4.8 branch?
> 
> (The patch is also needed for 4.7 branch, but not for mainline, where
> this problem is fixed by movti_internal/movti_internal_rex64 merge).

> Index: config/i386/i386.md
> ===================================================================
> --- config/i386/i386.md       (revision 199017)
> +++ config/i386/i386.md       (working copy)
> @@ -1805,7 +1805,8 @@
>                (const_string "V4SF")
>              (match_test "TARGET_AVX")
>                (const_string "TI")
> -            (match_test "optimize_function_for_size_p (cfun)")
> +            (ior (not (match_test "TARGET_SSE2"))
> +                 (match_test "optimize_function_for_size_p (cfun)"))
>                (const_string "V4SF")
>              ]
>              (const_string "TI")))])


        Jakub

Reply via email to