The listed targets implement any of vcond, vcondu or vcondeq expanders where the modern way of exposing vector conditional instructions is using mask generating vec_cmp{,u,eq} and vcond_mask expanders. vcond, vcondu and vcondeq optabs will be retired in the future.
The following shows them all: grep 'vcond[<eu]' gcc/config/*/*.md ia64 and sparc are the only targets that do not implement any vec_cmp{,u,eq} pattern. mips, sparc and ia64 do not implement any vcond_mask pattern.
Created attachment 58426 [details] patch to remove use of the legacy optabs
arm is OK - https://ci.linaro.org/job/tcwg_gcc_check--master-arm-precommit/7755/artifact/artifacts/artifacts.precommit/notify/mail-body.txt loongarch is also reportedly OK
aarch64 reports just FAIL: gcc.target/aarch64/if-compare_2.c check-function-bodies bar1 FAIL: gcc.target/aarch64/if-compare_2.c check-function-bodies bar2
.
The master branch has been updated by hongtao Liu <liuhongt@gcc.gnu.org>: https://gcc.gnu.org/g:aac00d09859cc5934bd0f7493d537b8430337773 commit r15-1638-gaac00d09859cc5934bd0f7493d537b8430337773 Author: liuhongt <hongtao.liu@intel.com> Date: Thu Jun 20 12:41:13 2024 +0800 Optimize a < 0 ? -1 : 0 to (signed)a >> 31. Try to optimize x < 0 ? -1 : 0 into (signed) x >> 31 and x < 0 ? 1 : 0 into (unsigned) x >> 31. Move the optimization did in ix86_expand_int_vcond to match.pd gcc/ChangeLog: PR target/114189 * match.pd: Simplify a < 0 ? -1 : 0 to (signed) >> 31 and a < 0 ? 1 : 0 to (unsigned) a >> 31 for vector integer type. gcc/testsuite/ChangeLog: * gcc.target/i386/avx2-pr115517.c: New test. * gcc.target/i386/avx512-pr115517.c: New test. * g++.target/i386/avx2-pr115517.C: New test. * g++.target/i386/avx512-pr115517.C: New test. * g++.dg/tree-ssa/pr88152-1.C: Adjust testcase.