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