https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104401
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- (In reply to Andrew Pinski from comment #3) > On a slightly different subject, I wish VCOND would print out the tree code > symbolically rather than just a number. It would be easier to understand > what the condition exec is really. Feel free to add a // comment after it ;) Btw, forwprop1 sees <bb 2> : _12 = VIEW_CONVERT_EXPR<vector(4) int>(value_3(D)); _13 = VIEW_CONVERT_EXPR<vector(4) int>(input_4(D)); _14 = _12 < _13; _15 = VEC_COND_EXPR <_14, { -1, -1, -1, -1 }, { 0, 0, 0, 0 }>; _16 = VIEW_CONVERT_EXPR<__m128i>(_15); _6 = VIEW_CONVERT_EXPR<vector(16) char>(_15); _5 = VIEW_CONVERT_EXPR<vector(16) char>(value_3(D)); _8 = VIEW_CONVERT_EXPR<vector(16) char>(input_4(D)); _9 = _6 < { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; _10 = VEC_COND_EXPR <_9, _5, _8>; _11 = VIEW_CONVERT_EXPR<__m128i>(_10); return _11; the difficulty #1 is the v16qi mode blend vs. the v4si mode compare so we'd have to pattern match the blend to be done on v4si based on the _15 value range.