The following retires vcond{,u,eq} optabs by stopping to use them from the middle-end. Targets instead (should) implement vcond_mask and vec_cmp{,u,eq} optabs. The PR this change refers to lists possibly affected targets - those implementing these patterns, and in particular it lists mips, sparc and ia64 as targets that most definitely will regress while others might simply remove their vcond{,u,eq} patterns.
I'd appreciate testing, I do not expect fallout for x86 or arm/aarch64. I know riscv doesn't implement any of the legacy optabs. But less maintained vector targets might need adjustments. I want to get rid of those optabs for GCC 15. If I don't hear from you I will assume your target is fine. Thanks, Richard. PR middle-end/114189 * optabs-query.h (get_vcond_icode): Always return CODE_FOR_nothing. (get_vcond_eq_icode): Likewise. --- gcc/optabs-query.h | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/gcc/optabs-query.h b/gcc/optabs-query.h index 0cb2c21ba85..31fbce80175 100644 --- a/gcc/optabs-query.h +++ b/gcc/optabs-query.h @@ -112,14 +112,9 @@ get_vec_cmp_eq_icode (machine_mode vmode, machine_mode mask_mode) mode CMODE, unsigned if UNS is true, resulting in a value of mode VMODE. */ inline enum insn_code -get_vcond_icode (machine_mode vmode, machine_mode cmode, bool uns) +get_vcond_icode (machine_mode, machine_mode, bool) { - enum insn_code icode = CODE_FOR_nothing; - if (uns) - icode = convert_optab_handler (vcondu_optab, vmode, cmode); - else - icode = convert_optab_handler (vcond_optab, vmode, cmode); - return icode; + return CODE_FOR_nothing; } /* Return insn code for a conditional operator with a mask mode @@ -135,9 +130,9 @@ get_vcond_mask_icode (machine_mode vmode, machine_mode mmode) mode CMODE (only EQ/NE), resulting in a value of mode VMODE. */ inline enum insn_code -get_vcond_eq_icode (machine_mode vmode, machine_mode cmode) +get_vcond_eq_icode (machine_mode, machine_mode) { - return convert_optab_handler (vcondeq_optab, vmode, cmode); + return CODE_FOR_nothing; } /* Enumerates the possible extraction_insn operations. */ -- 2.35.3