https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98365
--- Comment #4 from Hongtao.liu <crazylht at gmail dot com> --- > I hope vectorizer reduction can handle the upper sequence. After hacked in ifcvt, got .165.cvt ---- <bb 3> [local count: 1057206201]: # cnt_21 = PHI <cnt_9(7), 0(15)> # i_22 = PHI <i_17(7), 0(15)> # ivtmp_19 = PHI <ivtmp_18(7), 64(15)> _1 = (sizetype) i_22; _2 = a_14(D) + _1; _3 = *_2; _5 = c_15(D) + _1; _6 = *_5; cnt.1_7 = (unsigned char) cnt_21; _ifc__35 = _3 == _6 ? 1 : 0; _nop__36 = cnt.1_7 + _ifc__35; cnt_9 = (char) _nop__36; i_17 = i_22 + 1; ivtmp_18 = ivtmp_19 - 1; if (ivtmp_18 != 0) goto <bb 7>; [98.44%] ------- And successully vectorized. .166t.vect ------ <bb 3> [local count: 33071249]: # cnt_21 = PHI <cnt_9(7), 0(2)> # i_22 = PHI <i_17(7), 0(2)> # ivtmp_19 = PHI <ivtmp_18(7), 64(2)> # vect_cnt_21.6_38 = PHI <vect_cnt_9.16_51(7), { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }(2)> # vectp_a.7_39 = PHI <vectp_a.7_40(7), a_14(D)(2)> # vectp_c.10_42 = PHI <vectp_c.10_43(7), c_15(D)(2)> # ivtmp_56 = PHI <ivtmp_57(7), 0(2)> _1 = (sizetype) i_22; _2 = a_14(D) + _1; vect__3.9_41 = MEM <vector(32) char> [(char *)vectp_a.7_39]; _3 = *_2; _5 = c_15(D) + _1; vect__6.12_44 = MEM <vector(32) char> [(char *)vectp_c.10_42]; _6 = *_5; vect_cnt.13_45 = VIEW_CONVERT_EXPR<vector(32) unsigned char>(vect_cnt_21.6_38); cnt.1_7 = (unsigned char) cnt_21; _48 = vect__3.9_41 == vect__6.12_44; vect__ifc__35.14_49 = VEC_COND_EXPR <_48, vect_cst__46, vect_cst__47>; _ifc__35 = _3 == _6 ? 1 : 0; vect__nop__36.15_50 = vect_cnt.13_45 + vect__ifc__35.14_49; _nop__36 = cnt.1_7 + _ifc__35; vect_cnt_9.16_51 = VIEW_CONVERT_EXPR<vector(32) char>(vect__nop__36.15_50); cnt_9 = (char) _nop__36; i_17 = i_22 + 1; ivtmp_18 = ivtmp_19 - 1; vectp_a.7_40 = vectp_a.7_39 + 32; vectp_c.10_43 = vectp_c.10_42 + 32; ivtmp_57 = ivtmp_56 + 1; if (ivtmp_57 < 2) goto <bb 7>; [50.00%]