Chung-Ju Wu <jasonw...@gmail.com> writes:
> +      /* Use $r15, if the value is NOT in the range of Is20,
> +         we must output "sethi + ori" directly since
> +         we may already passed the split stage.  */
> +      return "sethi\t%0, hi20(%1)\;ori\t%0, %0, lo12(%1)";
> +    case 17:
> +      return "#";

I don't really understand the comment for case 16.  Returning "#"
(like for case 17) forces a split even at the output stage.

In this case it might not be worth forcing a split though, so I don't
see any need to change the code.  I think the comment should be changed
to give a different reason though.

> +       /* Note that (le:SI X INT_MAX) is not the same as (lt:SI X INT_MIN).
> +          We better have an assert here in case GCC does not properly
> +          optimize it away.  */
> +       gcc_assert (code != LE || INTVAL (operands[2]) != INT_MAX);

Sorry, I was being lazy when I said INT_MAX.  I really meant INT_MAX on
the target (assuming SImode == int), whereas INT_MAX here is a host thing.
0x7fffffff would be OK.

> +  /* Create RbRe_str string.
> +     Note that we need to output ',' character if there exists En4 field.  */
> +  if (REGNO (operands[0]) != SP_REGNUM && REGNO (operands[1]) != SP_REGNUM)
> +      RbRe_str = INTVAL (operands[2]) != 0 ? "%0, %1, " : "%0, %1";
> +  else
> +      RbRe_str = "";

The "RbRe_str =" lines should only be indented by 2 extra spaces, not 4.
Same for pop.

Looks good otherwise, thanks.

Richard

Reply via email to