https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120219

Jan Hubicka <hubicka at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
         Depends on|                            |119902

--- Comment #5 from Jan Hubicka <hubicka at gcc dot gnu.org> ---


PR119919 was introduced by fixing part costs of promote/demote which disabled
vectorization of:

int a[9*9];
bool b[9];
void test()
{
        for (int i = 0; i < 9; i++)
        {
                b[i] = a[i*9] != 0;
        }
}
The underlying problem is bad costing of open-coded scatter. Cost of open-coded
scatter incorrectly assumes that offsets will be loaded as vectors and
converted to integers for address computation, while real code does all address
computations in integers, saving a lot of sse->int conversions.  This is
PR119902.

My patch for pr119919 fixed other problem of costing this conversion which made
the code to barely pass the cost threshold. Later my commit
g:2c8d632d9ed4e3aeee2156ba17fe631ecbc90dbf fixed float<->int conversion costs
which made the cost test to fail again at generic tuning but not at native
tuning.

But still I am not sure how this is related to Andrew's patch and arm
performance can not be affected by these changes.


Referenced Bugs:

https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119902
[Bug 119902] open-coded scatter/gather should not account vec_to_scalar cost

Reply via email to