https://gcc.gnu.org/g:c139a8814456f4f13202170600f2e28b1498830b
commit r16-2321-gc139a8814456f4f13202170600f2e28b1498830b Author: H.J. Lu <hjl.to...@gmail.com> Date: Sun Mar 2 09:10:57 2025 +0800 x86: Don't change mode for XOR in ix86_expand_ternlog There is no need to change mode for XOR in ix86_expand_ternlog now. Whatever reasons for it in the first place no longer exist. Tested on x86-64 with -m32. There are no regressions. * config/i386/i386-expand.cc (ix86_expand_ternlog): Don't change mode for XOR. Signed-off-by: H.J. Lu <hjl.to...@gmail.com> Diff: --- gcc/config/i386/i386-expand.cc | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/gcc/config/i386/i386-expand.cc b/gcc/config/i386/i386-expand.cc index 743ca2fb8e27..09aa9b1461cc 100644 --- a/gcc/config/i386/i386-expand.cc +++ b/gcc/config/i386/i386-expand.cc @@ -26746,15 +26746,6 @@ ix86_expand_ternlog (machine_mode mode, rtx op0, rtx op1, rtx op2, int idx, && (!op2 || !side_effects_p (op2)) && op0) { - if (GET_MODE (op0) != mode) - op0 = gen_lowpart (mode, op0); - if (!TARGET_64BIT && !register_operand (op0, mode)) - { - /* Avoid force_reg (mode, op0). */ - rtx reg = gen_reg_rtx (mode); - emit_move_insn (reg, op0); - op0 = reg; - } emit_move_insn (target, gen_rtx_XOR (mode, op0, CONSTM1_RTX (mode))); return target; } @@ -26779,15 +26770,6 @@ ix86_expand_ternlog (machine_mode mode, rtx op0, rtx op1, rtx op2, int idx, && (!op2 || !side_effects_p (op2)) && op1) { - if (GET_MODE (op1) != mode) - op1 = gen_lowpart (mode, op1); - if (!TARGET_64BIT && !register_operand (op1, mode)) - { - /* Avoid force_reg (mode, op1). */ - rtx reg = gen_reg_rtx (mode); - emit_move_insn (reg, op1); - op1 = reg; - } emit_move_insn (target, gen_rtx_XOR (mode, op1, CONSTM1_RTX (mode))); return target; } @@ -26819,15 +26801,6 @@ ix86_expand_ternlog (machine_mode mode, rtx op0, rtx op1, rtx op2, int idx, && (!op1 || !side_effects_p (op1)) && op2) { - if (GET_MODE (op2) != mode) - op2 = gen_lowpart (mode, op2); - if (!TARGET_64BIT && !register_operand (op2, mode)) - { - /* Avoid force_reg (mode, op2). */ - rtx reg = gen_reg_rtx (mode); - emit_move_insn (reg, op2); - op2 = reg; - } emit_move_insn (target, gen_rtx_XOR (mode, op2, CONSTM1_RTX (mode))); return target; }