> -----Original Message-----
> From: Gcc-patches <gcc-patches-
> bounces+kyrylo.tkachov=arm....@gcc.gnu.org> On Behalf Of Martin Liška
> Sent: Monday, March 7, 2022 10:22 AM
> To: Christophe Lyon <christophe.l...@arm.com>; gcc-patches@gcc.gnu.org
> Subject: Re: [PATCH][ARM] translation: reuse string and use switch for codes
> 
> On 3/7/22 11:18, Christophe Lyon via Gcc-patches wrote:
> > Hi!
> >
> > On 3/7/22 11:09, Martin Liška wrote:
> >> Hi.
> >>
> >> The patch simplifies translation strings.
> >>
> >> Patch can bootstrap on x86_64-linux-gnu and survives regression tests.
> > This is an arm-only patch, it's not clear if you built a cross-compiler for 
> > arm,
> and that these regression tests passed?
> 
> Sorry, I meant I can built the cross compiler. If I see correctly there are no
> tests that
> would check the error messages.
> 
> >
> >>
> >> Ready to be installed?
> >> Thanks,
> >> Martin
> >>
> >> gcc/ChangeLog:
> >>
> >>      * config/arm/arm-builtins.cc (arm_expand_builtin): Reuse error
> >>      message.
> >
> > I think this is about PR target/104794, so this should be mentioned?
> 
> Yep.
> 
> There's V4.
> 
> Is it ready for master?

Ok.
Thanks,
Kyrill

> 
> Martin
> 
> >
> > Thanks,
> >
> > Christophe
> >
> >
> >> ---
> >>   gcc/config/arm/arm-builtins.cc | 127 ++++++++++++++++++++-------------
> >>   1 file changed, 79 insertions(+), 48 deletions(-)
> >>
> >> diff --git a/gcc/config/arm/arm-builtins.cc b/gcc/config/arm/arm-
> builtins.cc
> >> index a7acc1d71e7..bdccba2bc88 100644
> >> --- a/gcc/config/arm/arm-builtins.cc
> >> +++ b/gcc/config/arm/arm-builtins.cc
> >> @@ -3926,61 +3926,92 @@ arm_expand_builtin (tree exp,
> >>              || fcode == ARM_BUILTIN_WRORH || fcode ==
> ARM_BUILTIN_WRORW)
> >>             && (imm < 0 || imm > 32))
> >>           {
> >> -          if (fcode == ARM_BUILTIN_WRORHI)
> >> -        error ("the range of count should be in 0 to 32; please check the
> intrinsic %<_mm_rori_pi16%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WRORWI)
> >> -        error ("the range of count should be in 0 to 32; please check the
> intrinsic %<_mm_rori_pi32%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WRORH)
> >> -        error ("the range of count should be in 0 to 32; please check the
> intrinsic %<_mm_ror_pi16%> in code");
> >> -          else
> >> -        error ("the range of count should be in 0 to 32; please check the
> intrinsic %<_mm_ror_pi32%> in code");
> >> +          const char *builtin;
> >> +          switch (fcode)
> >> +        {
> >> +        case ARM_BUILTIN_WRORHI:
> >> +          builtin = "_mm_rori_pi16";
> >> +          break;
> >> +        case ARM_BUILTIN_WRORWI:
> >> +          builtin = "_mm_rori_pi32";
> >> +          break;
> >> +        case ARM_BUILTIN_WRORH:
> >> +          builtin = "_mm_ror_pi16";
> >> +          break;
> >> +        default:
> >> +          builtin = "_mm_ror_pi32";
> >> +          break;
> >> +        }
> >> +          error ("the range of count should be in 0 to 32; please check 
> >> the
> intrinsic %qs in code", builtin);
> >>           }
> >>         else if ((fcode == ARM_BUILTIN_WRORDI || fcode ==
> ARM_BUILTIN_WRORD)
> >>              && (imm < 0 || imm > 64))
> >>           {
> >> -          if (fcode == ARM_BUILTIN_WRORDI)
> >> -        error ("the range of count should be in 0 to 64; please check the
> intrinsic %<_mm_rori_si64%> in code");
> >> -          else
> >> -        error ("the range of count should be in 0 to 64; please check the
> intrinsic %<_mm_ror_si64%> in code");
> >> +          const char *builtin = fcode == ARM_BUILTIN_WRORDI ?
> "_mm_rori_si64" : "_mm_ror_si64";
> >> +          error ("the range of count should be in 0 to 64; please check 
> >> the
> intrinsic %qs in code", builtin);
> >>           }
> >>         else if (imm < 0)
> >>           {
> >> -          if (fcode == ARM_BUILTIN_WSRLHI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srli_pi16%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRLWI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srli_pi32%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRLDI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srli_si64%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSLLHI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_slli_pi16%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSLLWI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_slli_pi32%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSLLDI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_slli_si64%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRAHI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srai_pi16%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRAWI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srai_pi32%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRADI)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srai_si64%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRLH)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srl_pi16%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRLW)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srl_pi32%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRLD)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_srl_si64%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSLLH)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_sll_pi16%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSLLW)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_sll_pi32%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSLLD)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_sll_si64%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRAH)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_sra_pi16%> in code");
> >> -          else if (fcode == ARM_BUILTIN_WSRAW)
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_sra_pi32%> in code");
> >> -          else
> >> -        error ("the count should be no less than 0; please check the 
> >> intrinsic
> %<_mm_sra_si64%> in code");
> >> +          const char *builtin;
> >> +          switch (fcode)
> >> +        {
> >> +          case ARM_BUILTIN_WSRLHI:
> >> +            builtin = "_mm_srli_pi16";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRLWI:
> >> +            builtin = "_mm_srli_pi32";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRLDI:
> >> +            builtin = "_mm_srli_si64";
> >> +            break;
> >> +          case ARM_BUILTIN_WSLLHI:
> >> +            builtin = "_mm_slli_pi16";
> >> +            break;
> >> +          case ARM_BUILTIN_WSLLWI:
> >> +            builtin = "_mm_slli_pi32";
> >> +            break;
> >> +          case ARM_BUILTIN_WSLLDI:
> >> +            builtin = "_mm_slli_si64";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRAHI:
> >> +            builtin = "_mm_srai_pi16";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRAWI:
> >> +            builtin = "_mm_srai_pi32";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRADI:
> >> +            builtin = "_mm_srai_si64";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRLH:
> >> +            builtin = "_mm_srl_pi16";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRLW:
> >> +            builtin = "_mm_srl_pi32";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRLD:
> >> +            builtin = "_mm_srl_si64";
> >> +            break;
> >> +          case ARM_BUILTIN_WSLLH:
> >> +            builtin = "_mm_sll_pi16";
> >> +            break;
> >> +          case ARM_BUILTIN_WSLLW:
> >> +            builtin = "_mm_sll_pi32";
> >> +            break;
> >> +          case ARM_BUILTIN_WSLLD:
> >> +            builtin = "_mm_sll_si64";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRAH:
> >> +            builtin = "_mm_sra_pi16";
> >> +            break;
> >> +          case ARM_BUILTIN_WSRAW:
> >> +            builtin = "_mm_sra_si64";
> >> +            break;
> >> +          default:
> >> +            builtin = "_mm_sra_si64";
> >> +            break;
> >> +        }
> >> +          error ("the count should be no less than 0; please check the
> intrinsic %qs in code",
> >> +             builtin);
> >>           }
> >>       }
> >>         return arm_expand_binop_builtin (icode, exp, target);

Reply via email to