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