On Thu, Jul 17, 2025 at 9:43 AM H.J. Lu <hjl.to...@gmail.com> wrote:
>
> 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.
Ok.
>
>         * config/i386/i386.cc (ix86_expand_ternlog): Don't change mode
>         for XOR.
>
> Signed-off-by: H.J. Lu <hjl.to...@gmail.com>
> ---
>  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 743ca2fb8e2..09aa9b1461c 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;
>         }
> --
> 2.50.1
>


-- 
BR,
Hongtao

Reply via email to