On Sun, Apr 27, 2025 at 12:49 AM Andrew Pinski <quic_apin...@quicinc.com> wrote:
>
> This adds support for rotate left/right to the GIMPLE front-end
> via __ROTATE_LEFT/__ROTATE_RIGHT oeprators.

OK.

>         PR c/119432
> gcc/c/ChangeLog:
>
>         * gimple-parser.cc (gimple_binary_identifier_code): Add
>         __ROTATE_LEFT and __ROTATE_RIGHT.
>
> gcc/ChangeLog:
>
>         * tree-pretty-print.cc (op_symbol_code): For LROTATE_EXPR,
>         output __ROTATE_LEFT for gimple.
>         For RROTATE_EXPR output __ROTATE_RIGHT for gimple.
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.dg/gimplefe-57.c: New test.
>
> Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com>
> ---
>  gcc/c/gimple-parser.cc             |  2 ++
>  gcc/testsuite/gcc.dg/gimplefe-57.c | 11 +++++++++++
>  gcc/tree-pretty-print.cc           |  4 ++--
>  3 files changed, 15 insertions(+), 2 deletions(-)
>  create mode 100644 gcc/testsuite/gcc.dg/gimplefe-57.c
>
> diff --git a/gcc/c/gimple-parser.cc b/gcc/c/gimple-parser.cc
> index 34850d7c359..5fd1db87453 100644
> --- a/gcc/c/gimple-parser.cc
> +++ b/gcc/c/gimple-parser.cc
> @@ -982,6 +982,8 @@ static const std::pair<const char *, tree_code> 
> gimple_binary_identifier_code[]
>      {"__FLOOR_MOD", FLOOR_MOD_EXPR},
>      {"__ROUND_MOD", ROUND_MOD_EXPR},
>      {"__CEIL_MOD", CEIL_MOD_EXPR},
> +    {"__ROTATE_LEFT", LROTATE_EXPR},
> +    {"__ROTATE_RIGHT", RROTATE_EXPR},
>    };
>
>  /* Parse gimple binary expr.
> diff --git a/gcc/testsuite/gcc.dg/gimplefe-57.c 
> b/gcc/testsuite/gcc.dg/gimplefe-57.c
> new file mode 100644
> index 00000000000..d3eca56119d
> --- /dev/null
> +++ b/gcc/testsuite/gcc.dg/gimplefe-57.c
> @@ -0,0 +1,11 @@
> +/* { dg-do compile } */
> +/* { dg-options "-fgimple" } */
> +
> +int __GIMPLE
> +foo (int a, int b)
> +{
> +  int tem;
> +  tem = a __ROTATE_LEFT b;
> +  tem = tem __ROTATE_RIGHT b;
> +  return tem;
> +}
> diff --git a/gcc/tree-pretty-print.cc b/gcc/tree-pretty-print.cc
> index c1a21e77bd2..359359d98c2 100644
> --- a/gcc/tree-pretty-print.cc
> +++ b/gcc/tree-pretty-print.cc
> @@ -4795,10 +4795,10 @@ op_symbol_code (enum tree_code code, dump_flags_t 
> flags)
>        return ">>";
>
>      case LROTATE_EXPR:
> -      return "r<<";
> +      return (flags & TDF_GIMPLE) ? "__ROTATE_LEFT" : "r<<";
>
>      case RROTATE_EXPR:
> -      return "r>>";
> +      return (flags & TDF_GIMPLE) ? "__ROTATE_RIGHT" : "r>>";
>
>      case WIDEN_LSHIFT_EXPR:
>        return "w<<";
> --
> 2.43.0
>

Reply via email to