This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH, i386]: Committed: Fix PR target/22152


On Fri, Mar 7, 2008 at 7:13 PM, Uros Bizjak <ubizjak@gmail.com> wrote:
> Hello!
>
>  Attached patch substantially improves handling of MMX DImode values. It
>  turns out, that in order to reliably separate "native" and MMX DImode
>  values, a new mode is needed. Since we are using vector registers, the
>  natural choice is V1DImode, vector mode with one DImode element. After
>  this change, V1DI mode is considered to be native MMX mode (native MMX
>  modes were successfully separated out from non-vector modes by the
>  patch, committed a couple of weeks ago).
>
>  Patch rewrites all MMX DImode patterns into V1DImode, also updating
>  mmintrin.h for the new/changed builtins on the way. The patch also
>  rewrites MMX shift patterns in the same way as SSE shift patterns were
>  changed some time ago.
>
>  The benefits of the patch can be seen from the original testcase from PR
>  target/22152. For a slightly changed testcase (to avoid uninitialized
>  variables), non-patched gcc creates barely recognizable code:

I realize this may be hard, but with all the many tweaking patches for SSE, MMX,
etc. how do we make sure to not regress in cases we fixed earlier?  So, may I
suggest you try to enter at least "something" into the testsuite?  For example
scan-assembler-not ".L6.*ebp.*.L6" (no stack operations between the .L6 loop
entry and the backedge)?  Maybe a little bit fragile, but at least
some confidence
would be there (and some testcases to eventually manually inspect) that
we won't regress again?

Thanks,
Richard.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]