> -----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);