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

--- Comment #23 from Andrew Pinski <pinskia at gcc dot gnu.org> ---
One thing unrelated to the unrolling I Noticed is:
```
  if (_221 != 0)
    goto <bb 50>; [50.00%]
  else
    goto <bb 49>; [50.00%]

  <bb 49> [local count: 163152564]:
  _212 = _218 - s_202;
  goto <bb 51>; [100.00%]

  <bb 50> [local count: 163152564]:
  _222 = s_202 + _218;

  <bb 51> [local count: 326305128]:
  # ck0$0_144 = PHI <_218(49), _222(50)>
  # prephitmp_211 = PHI <_212(49), _218(50)>
```

Does not use conditional moves on aarch64 (or x86_64) even though it
could/should.
That pattern shows up 3 times due to the unrolling of the inner loop there.
```
   ck0[j] = c0[j];
   if (1<<j & i)
    ck0[j] += s;
   if (r->rop[j] < ck0[j] - 1.0*s)
```

Reply via email to