> -----Original Message-----
> From: Gcc-patches <gcc-patches-
> [email protected]> On Behalf Of Martin Liška
> Sent: Monday, March 7, 2022 10:22 AM
> To: Christophe Lyon <[email protected]>; [email protected]
> 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);