https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112276
--- Comment #5 from Zdenek Sojka <zsojka at seznam dot cz> --- (In reply to Hongtao.liu from comment #4) > -(define_split > - [(set (match_operand:V2HI 0 "register_operand") > - (eq:V2HI > - (eq:V2HI > - (us_minus:V2HI > - (match_operand:V2HI 1 "register_operand") > - (match_operand:V2HI 2 "register_operand")) > - (match_operand:V2HI 3 "const0_operand")) > - (match_operand:V2HI 4 "const0_operand")))] > - "TARGET_SSE4_1" > - [(set (match_dup 0) > - (umin:V2HI (match_dup 1) (match_dup 2))) > - (set (match_dup 0) > - (eq:V2HI (match_dup 0) (match_dup 2)))]) > > the splitter is wrong when op1 == op2.(the original pattern returns 0, after > splitter, it returns 1) > So remove the splitter. Thank you for having a look. I have other testcases, possibly related, that are being reduced now, failing at -O2 only; so -msse4.2 might not be the only broken target. I will open a new PR if those will still be broken after this is fixed; alternatively, I can upload the testcases here, once they are reduced.