On Mon, Mar 07, 2022 at 11:09:26AM +0100, Martin Liška wrote: > gcc/ChangeLog: > > * config/arm/arm-builtins.cc (arm_expand_builtin): Reuse error > message.
Will defer review to ARM maintainers, just wanted to mention some of the lines are way too long (before or after). > --- 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); > -- > 2.35.1 Jakub