From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 1461) id 6BDE73858C5E; Tue, 20 Jun 2023 09:51:22 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6BDE73858C5E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1687254682; bh=R4XfKKwVYa9oqJKE4nItNIIMGNFWDmmBrgWzh809YRg=; h=From:To:Subject:Date:From; b=vXxYvv648IYnAm9ugBfUmRfEyu2lWHfAB6oPNxTx8mUCpGt1Gb38vhNggByg/jmmB x/YNGjOk1WGCZ7YonS26feUHnPBYNdphGJSVyd+/iP5dj1UvHdizukjHkdQWsfw7KW KbF6I3e1sjF+4y+rJMxfNsWn608IWUKbLS4kqNXo= Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: Andrew Stubbs To: gcc-cvs@gcc.gnu.org Subject: [gcc/devel/omp/gcc-13] vect: vectorize via libfuncs X-Act-Checkin: gcc X-Git-Author: Andrew Stubbs X-Git-Refname: refs/heads/devel/omp/gcc-13 X-Git-Oldrev: 1abff151d24dd7eb064b8b9a5c6c0878f613f35f X-Git-Newrev: 273fadc1f3d3667b587c2facc8724df91de7ddb0 Message-Id: <20230620095122.6BDE73858C5E@sourceware.org> Date: Tue, 20 Jun 2023 09:51:22 +0000 (GMT) List-Id: https://gcc.gnu.org/g:273fadc1f3d3667b587c2facc8724df91de7ddb0 commit 273fadc1f3d3667b587c2facc8724df91de7ddb0 Author: Andrew Stubbs Date: Tue Jun 13 16:44:31 2023 +0100 vect: vectorize via libfuncs This patch allows vectorization when the libfuncs are defined. gcc/ChangeLog: * tree-vect-generic.cc: Include optabs-libfuncs.h. (get_compute_type): Check optab_libfunc. * tree-vect-stmts.cc: Include optabs-libfuncs.h. (vectorizable_operation): Check optab_libfunc. (cherry picked from commit 1f97a0b412ed0984ff4af381b222b87424c08dbd) Diff: --- gcc/ChangeLog.omp | 10 ++++++++++ gcc/tree-vect-generic.cc | 5 ++++- gcc/tree-vect-stmts.cc | 5 +++-- 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog.omp b/gcc/ChangeLog.omp index 486ba9e733f..10cdd421b1a 100644 --- a/gcc/ChangeLog.omp +++ b/gcc/ChangeLog.omp @@ -1,3 +1,13 @@ +2023-06-20 Andrew Stubbs + + Backport from mainline: + 2023-06-19 Andrew Stubbs + + * tree-vect-generic.cc: Include optabs-libfuncs.h. + (get_compute_type): Check optab_libfunc. + * tree-vect-stmts.cc: Include optabs-libfuncs.h. + (vectorizable_operation): Check optab_libfunc. + 2023-06-20 Andrew Stubbs Backport from mainline: diff --git a/gcc/tree-vect-generic.cc b/gcc/tree-vect-generic.cc index 445da53292e..d02a2a16ed3 100644 --- a/gcc/tree-vect-generic.cc +++ b/gcc/tree-vect-generic.cc @@ -44,6 +44,7 @@ along with GCC; see the file COPYING3. If not see #include "gimple-fold.h" #include "gimple-match.h" #include "recog.h" /* FIXME: for insn_data */ +#include "optabs-libfuncs.h" /* Build a ternary operation and gimplify it. Emit code before GSI. @@ -1743,7 +1744,9 @@ get_compute_type (enum tree_code code, optab op, tree type) machine_mode compute_mode = TYPE_MODE (compute_type); if (VECTOR_MODE_P (compute_mode)) { - if (op && optab_handler (op, compute_mode) != CODE_FOR_nothing) + if (op + && (optab_handler (op, compute_mode) != CODE_FOR_nothing + || optab_libfunc (op, compute_mode))) return compute_type; if (code == MULT_HIGHPART_EXPR && can_mult_highpart_p (compute_mode, diff --git a/gcc/tree-vect-stmts.cc b/gcc/tree-vect-stmts.cc index 05a4e746506..6e962ed0ef4 100644 --- a/gcc/tree-vect-stmts.cc +++ b/gcc/tree-vect-stmts.cc @@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. If not see #include "gimple-fold.h" #include "regs.h" #include "attribs.h" +#include "optabs-libfuncs.h" /* For lang_hooks.types.type_for_mode. */ #include "langhooks.h" @@ -6382,8 +6383,8 @@ vectorizable_operation (vec_info *vinfo, "no optab.\n"); return false; } - target_support_p = (optab_handler (optab, vec_mode) - != CODE_FOR_nothing); + target_support_p = (optab_handler (optab, vec_mode) != CODE_FOR_nothing + || optab_libfunc (optab, vec_mode)); } bool using_emulated_vectors_p = vect_emulated_vector_p (vectype);