https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104401
--- Comment #2 from Hongtao.liu <crazylht at gmail dot com> --- (In reply to Andrew Pinski from comment #1) > (set (reg:V16QI 93) > (unspec:V16QI [ > (subreg:V16QI (reg/v:V2DI 92 [ input ]) 0) > (subreg:V16QI (reg/v:V2DI 91 [ value ]) 0) > (subreg:V16QI (gt:V4SI (subreg:V4SI (reg/v:V2DI 92 [ input ]) 0) > (subreg:V4SI (reg/v:V2DI 91 [ value ]) 0)) 0) > ] UNSPEC_BLENDV)) > > blend uses unspec which makes this a little harder I think it could be done in gimple level. 18 _10 = VIEW_CONVERT_EXPR<vector(4) int>(value_2(D)); 19 _11 = VIEW_CONVERT_EXPR<vector(4) int>(input_3(D)); 20 _12 = _10 < _11; 21 _13 = VIEW_CONVERT_EXPR<vector(4) int>(_12); 22 _5 = VIEW_CONVERT_EXPR<vector(16) char>(_13); 23 _4 = VIEW_CONVERT_EXPR<vector(16) char>(value_2(D)); 24 _6 = VIEW_CONVERT_EXPR<vector(16) char>(input_3(D)); 25 _8 = .VCOND (_5, { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }, _4, _6, 108); 26 _9 = VIEW_CONVERT_EXPR<__m128i>(_8);