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) ```