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