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