Hi,
Are there any other topics that folks want to bring up ?
There are some issues exposed while testing the register pressure estimation for SMS that I would to get some feedback on:
As discussed off-line; one thing is related to the note_uses function which currently does not take element zero into account when dealing with ZERO_EXTRACT case (http://gcc.gnu.org/ml/gcc/2011-10/msg00419.html). I've bootstrap the solution of adding (*fun) (&XEXP (dest, 0), data); on PowerPC and I get a bootstrap failure (Internal error: abort in get_output_file_with_visibility, at gengtype.c:2093) . I debugged it to a point I know that the following expression causes it (applying this change for the 8799th time on this operation cause the failure); however I am not sure how to proceed with it as this operation does not look faulty; so I appropriate directions to precede.
(zero_extract:DI (reg:DI 2829) (const_int 1 [0x1]) (const_int 3 [0x3]))
Another issue is related to the regression I saw with SMS in libav's dsputil-ssd_int8_vs_int16_c. Consulting with Ayal regarding this it seemed that the regression was due to dependence between accumulations that can be avoided, more specifically we had the following case in vector code:
vec1 = vec1 + ... ... vec1 = vec1+ ... ... vec1 = vec1+ ... ... vec1 = vec1+...
to resolve this, I implemented a hack similar to MVE optimiation in the loop-unroller as follows:
vec1 = vec1 + ... ... vec2 = vec2+ ... ... vec3 = vec3+ ... ... vec4 = vec4+...
This gives ~4.5% improvements to the non-SMSed version. I was thinking of submitting this patch and I would appreciate thoughts about where to place it in the passes pipeline.
Thanks, Revital