From patchwork Thu Oct 5 11:37:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Biener X-Patchwork-Id: 148677 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a05:612c:2016:b0:403:3b70:6f57 with SMTP id fe22csp229242vqb; Thu, 5 Oct 2023 04:37:38 -0700 (PDT) X-Google-Smtp-Source: AGHT+IEXkBYobPYpL2vX+nIAO6Z0M8PVaHoeDvuxuPVwmZ0KoVD429JOHhfKsF/pMtGS93Ojk5hM X-Received: by 2002:a17:906:846b:b0:9ae:74d1:4b44 with SMTP id hx11-20020a170906846b00b009ae74d14b44mr4221306ejc.72.1696505858529; Thu, 05 Oct 2023 04:37:38 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1696505858; cv=none; d=google.com; s=arc-20160816; b=YNDvBwtngfp7KzofE9/ntvmb8m5qBFRETULuNgFzIfqAw6N68Yj5c6dodw+799JGyO vS1UaRtP051W6fOeBRKNeDkzkM83jHk2ouwBL3T+NGxsyKmj8/IM+XbKsdUl8BUUXFnf ZSAaanmlyF4fxYH0Ae0qqD7kb4xJi0tID5GVqk5tSkUdRLbe9md28cNOl9llSZLJlhNg 5bpSReTbnDDuEzwiSiQZ3lr6VmyVcxCXavKWZGo7ON3Lsc5/zDvKwemBBIrjqg3dD+WQ UZVSrSUhn988fpFZn/Nt61IDPpIOoafb3TQzyXheXZQDJ/z0qQNXpoSNI/NneHkYNa8F ph5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=message-id:errors-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:mime-version :user-agent:subject:to:from:date:dkim-signature:dkim-signature :dmarc-filter:delivered-to; bh=L/QoAp4aFYWsaFWPG96BXfZ75HPwpkpOuuhELm08pQo=; fh=hPrbWPhweUx4V0GV9uXJqbyAzg2ABmTz7kczrAQqMmM=; b=lPe5STzZ2jImAz6tOeeZgeSLlSlKm0IBvKx5RLE1hvbWiYApMCbJlt1N8YNj94iWnX N/kgcVTcg1xBSN406HKNUccYt0dbQA4WGIHyEncITstfn8T79WW0lJrcjqCGhLKzJjB8 R9bfmFzCemB0MqVXmaK5qy+hS/W+c+9iYtOrVp+2A9ofw1m7jVSpsGjgL1WAlDNWt0qC 4UjQ5rGxI5h55PXXfw8jyL4s4Ie9qpQ9bxYoY79WM127rdLb0EmhWLdmr3iUk7ojFejD c0JA5bc9SEyTDpiOK6Isz+TVzzTIDtMKjLqz3YwjBLNKuZ9Rb3/8HAqz85k19UzaDXn5 NU+A== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=uoseU2Wu; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (server2.sourceware.org. [2620:52:3:1:0:246e:9693:128c]) by mx.google.com with ESMTPS id a14-20020a170906684e00b009b916eae8basi602863ejs.882.2023.10.05.04.37.38 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 05 Oct 2023 04:37:38 -0700 (PDT) Received-SPF: pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) client-ip=2620:52:3:1:0:246e:9693:128c; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=uoseU2Wu; dkim=neutral (no key) header.i=@suse.de; spf=pass (google.com: domain of gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org designates 2620:52:3:1:0:246e:9693:128c as permitted sender) smtp.mailfrom="gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org"; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 454013856DD0 for ; Thu, 5 Oct 2023 11:37:31 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from smtp-out2.suse.de (smtp-out2.suse.de [IPv6:2001:67c:2178:6::1d]) by sourceware.org (Postfix) with ESMTPS id 42EF03857C43 for ; Thu, 5 Oct 2023 11:37:07 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 42EF03857C43 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=suse.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=suse.de Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id 2E6FF1F86C for ; Thu, 5 Oct 2023 11:37:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1696505826; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=L/QoAp4aFYWsaFWPG96BXfZ75HPwpkpOuuhELm08pQo=; b=uoseU2WuI42MrSrJ0xr29A3pwvpeRAGqPXRSFL4E68rbb+DbRwGwOkjOedLIaUNT+FnNQb oA8xLPw/WWPx3MWPWCtSm+/9sZNOzYCX/u4qUia0yl+jrcdhB7nLp9WcWvWyDytlvicgRr ixmI0X0mGRhCti+N31OjR10afaVuZGs= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1696505826; h=from:from:reply-to:date:date:to:to:cc:mime-version:mime-version: content-type:content-type; bh=L/QoAp4aFYWsaFWPG96BXfZ75HPwpkpOuuhELm08pQo=; b=ME47zYGvCRuHkNcgSNXOYEcv8v+x2SNU1uqy53AD6Gc4vxqhAaTbMNbwRHR2wZjzaVRJJc R2wFfuMyr7tUUMBw== Received: from wotan.suse.de (wotan.suse.de [10.160.0.1]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 0AB562C142 for ; Thu, 5 Oct 2023 11:37:06 +0000 (UTC) Date: Thu, 5 Oct 2023 11:37:06 +0000 (UTC) From: Richard Biener To: gcc-patches@gcc.gnu.org Subject: [PATCH] Fix SIMD call SLP discovery User-Agent: Alpine 2.22 (LSU 394 2020-01-19) MIME-Version: 1.0 X-Spam-Status: No, score=-10.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, MISSING_MID, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces+ouuuleilei=gmail.com@gcc.gnu.org Message-Id: <20231005113731.454013856DD0@sourceware.org> X-getmail-retrieved-from-mailbox: INBOX X-GMAIL-THRID: 1778915326685233208 X-GMAIL-MSGID: 1778915326685233208 When we do SLP discovery of SIMD calls we run into the issue that when the call is neither builtin nor internal function we have cfn == CFN_LAST but internal_fn_p of that returns true. Since IFN_LAST isn't vectorizable we fail spuriously. Fixed by checking for cfn != CFN_LAST && internal_fn_p (cfn) instead. Bootstrapped and tested on x86_64-unknown-linux-gnu, pushed. * tree-vect-slp.cc (vect_build_slp_tree_1): Do not ask for internal_fn_p (CFN_LAST). --- gcc/tree-vect-slp.cc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gcc/tree-vect-slp.cc b/gcc/tree-vect-slp.cc index 4dd899404d9..08e8418b33e 100644 --- a/gcc/tree-vect-slp.cc +++ b/gcc/tree-vect-slp.cc @@ -1084,7 +1084,8 @@ vect_build_slp_tree_1 (vec_info *vinfo, unsigned char *swap, ldst_p = true; rhs_code = CFN_MASK_STORE; } - else if ((internal_fn_p (cfn) + else if ((cfn != CFN_LAST + && internal_fn_p (cfn) && !vectorizable_internal_fn_p (as_internal_fn (cfn))) || gimple_call_tail_p (call_stmt) || gimple_call_noreturn_p (call_stmt)