[Bug target/98537] [11 Regression] ICE in emit_move_insn since r11-5839
crazylht at gmail dot com
gcc-bugzilla@gcc.gnu.org
Mon Jan 25 09:56:23 GMT 2021
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98537
--- Comment #8 from Hongtao.liu <crazylht at gmail dot com> ---
Created attachment 50045
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=50045&action=edit
Fix ICE: Don't generate integer mask comparision for 128/256-bits vector when
op_true/op_false are NULL or constm1_rtx/const0_rtx [PR98537]
I'm retesting this patch which is supposed to fix all performance and
correctness regressions caused by r10-5250.
in ix86_expand_sse_cmp/ix86_expand_int_sse_cmp
- if (ix86_valid_mask_cmp_mode (cmp_ops_mode))
+ if (GET_MODE_SIZE (mode) == 64
+ || (ix86_valid_mask_cmp_mode (cmp_ops_mode)
+ /* When op_true and op_false is NULL, vector dest is required. */
+ && op_true && op_false
+ /* Gimple sometimes transforms vec_cmpmn to vcondmn with
+ op_true/op_false as constm1_rtx/const0_rtx.
+ Don't generate integer mask comparison then. */
+ && !((vector_all_ones_operand (op_true, GET_MODE (op_true))
+ && CONST0_RTX (GET_MODE (op_false)) == op_false)
+ || (vector_all_ones_operand (op_false, GET_MODE (op_false))
+ && CONST0_RTX (GET_MODE (op_true)) == op_true))))
More information about the Gcc-bugs
mailing list