https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108692
--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> --- Before the r11-5160 change, the innermost loop was an unsigned char x 16 -> int x 4 SAD_EXPR: <bb 7> [local count: 567644343]: # vect_var12_i_49.13_90 = PHI <vect_patt_46.22_103(7), { 0, 0, 0, 0 }(6)> # ivtmp.57_149 = PHI <ivtmp.57_150(7), 0(6)> vect_var32_32.16_95 = MEM <const vector(16) signed char> [(const signed char *)vectp.15_91 + ivtmp.57_149 * 1]; vect_var33_33.19_100 = MEM <const vector(16) signed char> [(const signed char *)vectp.18_96 + ivtmp.57_149 * 1]; vect_var32.20_101 = VIEW_CONVERT_EXPR<vector(16) unsigned char>(vect_var32_32.16_95); vect_var33.21_102 = VIEW_CONVERT_EXPR<vector(16) unsigned char>(vect_var33_33.19_100); vect_patt_46.22_103 = SAD_EXPR <vect_var32.20_101, vect_var33.21_102, vect_var12_i_49.13_90>; ivtmp.57_150 = ivtmp.57_149 + 16; if (ivtmp.57_150 != _166) goto <bb 7>; [83.33%] else goto <bb 10>; [16.67%] with vect_patt_46.22_103/vect_var12_i_49.13_90 type being vector(4) int. After the change it is signed char x 16 -> int x 4 SAD_EXPR instead: <bb 7> [local count: 567644343]: # vect_var12_i_49.13_99 = PHI <vect_patt_39.20_110(7), { 0, 0, 0, 0 }(6)> # ivtmp.55_156 = PHI <ivtmp.55_157(7), 0(6)> vect_var32_32.16_104 = MEM <const vector(16) signed char> [(const signed char *)vectp.15_100 + ivtmp.55_156 * 1]; vect_var33_33.19_109 = MEM <const vector(16) signed char> [(const signed char *)vectp.18_105 + ivtmp.55_156 * 1]; vect_patt_39.20_110 = SAD_EXPR <vect_var32_32.16_104, vect_var33_33.19_109, vect_var12_i_49.13_99>; ivtmp.55_157 = ivtmp.55_156 + 16; if (ivtmp.55_157 != _173) goto <bb 7>; [83.33%] else goto <bb 10>; [16.67%]