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;
        }

Reply via email to