public inbox for gcc-cvs@sourceware.org
help / color / mirror / Atom feed
* [gcc r10-11052] Fix VCOND expansion
@ 2022-10-21 14:10 Eric Botcazou
0 siblings, 0 replies; only message in thread
From: Eric Botcazou @ 2022-10-21 14:10 UTC (permalink / raw)
To: gcc-cvs
https://gcc.gnu.org/g:5076eefe23b96279e34351a2a044858bae3251ae
commit r10-11052-g5076eefe23b96279e34351a2a044858bae3251ae
Author: Eric Botcazou <ebotcazou@adacore.com>
Date: Fri Oct 21 15:46:37 2022 +0200
Fix VCOND expansion
Instead of only allowing the signed optab to provide EQ/NE compares, we
allow both here since there seems to be no documented canonicalization.
gcc/
PR target/107336
* optabs.c (expand_vec_cond_expr): Query both VCOND and VCONDU for
EQ and NE.
Diff:
---
gcc/optabs.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/gcc/optabs.c b/gcc/optabs.c
index 64f23d2c293..93f99423727 100644
--- a/gcc/optabs.c
+++ b/gcc/optabs.c
@@ -5902,6 +5902,14 @@ expand_vec_cond_expr (tree vec_cond_type, tree op0, tree op1, tree op2,
GET_MODE_NUNITS (cmp_op_mode)));
icode = get_vcond_icode (mode, cmp_op_mode, unsignedp);
+ /* Some targets do not have vcondeq and only vcond with NE/EQ
+ but not vcondu, so make sure to also try vcond here as
+ vcond_icode_p would canonicalize the optab query to. */
+ if (icode == CODE_FOR_nothing
+ && (tcode == NE_EXPR || tcode == EQ_EXPR)
+ && ((icode = get_vcond_icode (mode, cmp_op_mode, !unsignedp))
+ != CODE_FOR_nothing))
+ unsignedp = !unsignedp;
if (icode == CODE_FOR_nothing)
{
if (tcode == LT_EXPR
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2022-10-21 14:10 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-10-21 14:10 [gcc r10-11052] Fix VCOND expansion Eric Botcazou
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).