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 >