diff mbox series

[08/44] RISC-V: Simplify EQ vs NE selection in `riscv_expand_conditional_move'

Message ID alpine.DEB.2.20.2311171455150.5892@tpp.orcam.me.uk
State New
Headers show
Series RISC-V: Various if-conversion fixes and improvements | expand

Commit Message

Maciej W. Rozycki Nov. 19, 2023, 5:36 a.m. UTC
Just choose between EQ and NE at `gen_rtx_fmt_ee' invocation, removing 
an extraneous variable only referred once and improving code clarity.

	gcc/
	* config/riscv/riscv.cc (riscv_expand_conditional_move): Remove 
	extraneous variable for EQ vs NE operation selection.
---
FWIW I have no idea what "We need to know where so that we can adjust it 
for our needs." refers to, but that would have to be for another change.
---
 gcc/config/riscv/riscv.cc |   12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

gcc-riscv-expand-conditional-move-new-code.diff

Comments

Kito Cheng Nov. 19, 2023, 5:56 a.m. UTC | #1
LGTM

On Sun, Nov 19, 2023 at 1:37 PM Maciej W. Rozycki <macro@embecosm.com> wrote:
>
> Just choose between EQ and NE at `gen_rtx_fmt_ee' invocation, removing
> an extraneous variable only referred once and improving code clarity.
>
>         gcc/
>         * config/riscv/riscv.cc (riscv_expand_conditional_move): Remove
>         extraneous variable for EQ vs NE operation selection.
> ---
> FWIW I have no idea what "We need to know where so that we can adjust it
> for our needs." refers to, but that would have to be for another change.
> ---
>  gcc/config/riscv/riscv.cc |   12 ++++--------
>  1 file changed, 4 insertions(+), 8 deletions(-)
>
> gcc-riscv-expand-conditional-move-new-code.diff
> Index: gcc/gcc/config/riscv/riscv.cc
> ===================================================================
> --- gcc.orig/gcc/config/riscv/riscv.cc
> +++ gcc/gcc/config/riscv/riscv.cc
> @@ -4023,10 +4023,12 @@ riscv_expand_conditional_move (rtx dest,
>          we can then use an equality comparison against zero.  */
>        if (!equality_operator (op, VOIDmode) || op1 != CONST0_RTX (mode))
>         {
> -         enum rtx_code new_code = NE;
>           bool *invert_ptr = nullptr;
>           bool invert = false;
>
> +         /* If riscv_expand_int_scc inverts the condition, then it will
> +            flip the value of INVERT.  We need to know where so that
> +            we can adjust it for our needs.  */
>           if (code == LE || code == GE)
>             invert_ptr = &invert;
>
> @@ -4043,13 +4045,7 @@ riscv_expand_conditional_move (rtx dest,
>           else
>             return false;
>
> -         /* If riscv_expand_int_scc inverts the condition, then it will
> -            flip the value of INVERT.  We need to know where so that
> -            we can adjust it for our needs.  */
> -         if (invert)
> -           new_code = EQ;
> -
> -         op = gen_rtx_fmt_ee (new_code, mode, tmp, const0_rtx);
> +         op = gen_rtx_fmt_ee (invert ? EQ : NE, mode, tmp, const0_rtx);
>
>           /* We've generated a new comparison.  Update the local variables.  */
>           code = GET_CODE (op);
diff mbox series

Patch

Index: gcc/gcc/config/riscv/riscv.cc
===================================================================
--- gcc.orig/gcc/config/riscv/riscv.cc
+++ gcc/gcc/config/riscv/riscv.cc
@@ -4023,10 +4023,12 @@  riscv_expand_conditional_move (rtx dest,
 	 we can then use an equality comparison against zero.  */
       if (!equality_operator (op, VOIDmode) || op1 != CONST0_RTX (mode))
 	{
-	  enum rtx_code new_code = NE;
 	  bool *invert_ptr = nullptr;
 	  bool invert = false;
 
+	  /* If riscv_expand_int_scc inverts the condition, then it will
+	     flip the value of INVERT.  We need to know where so that
+	     we can adjust it for our needs.  */
 	  if (code == LE || code == GE)
 	    invert_ptr = &invert;
 
@@ -4043,13 +4045,7 @@  riscv_expand_conditional_move (rtx dest,
 	  else
 	    return false;
 
-	  /* If riscv_expand_int_scc inverts the condition, then it will
-	     flip the value of INVERT.  We need to know where so that
-	     we can adjust it for our needs.  */
-	  if (invert)
-	    new_code = EQ;
-
-	  op = gen_rtx_fmt_ee (new_code, mode, tmp, const0_rtx);
+	  op = gen_rtx_fmt_ee (invert ? EQ : NE, mode, tmp, const0_rtx);
 
 	  /* We've generated a new comparison.  Update the local variables.  */
 	  code = GET_CODE (op);