From patchwork Wed Mar 27 08:50:41 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Matthias Kretz X-Patchwork-Id: 1916580 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@legolas.ozlabs.org Authentication-Results: legolas.ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org (client-ip=2620:52:3:1:0:246e:9693:128c; helo=server2.sourceware.org; envelope-from=gcc-patches-bounces+incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=patchwork.ozlabs.org) Received: from server2.sourceware.org (server2.sourceware.org [IPv6:2620:52:3:1:0:246e:9693:128c]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (secp384r1) server-digest SHA384) (No client certificate requested) by legolas.ozlabs.org (Postfix) with ESMTPS id 4V4L4G6f0pz1yYM for ; Wed, 27 Mar 2024 19:51:09 +1100 (AEDT) Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 63BFD385E827 for ; Wed, 27 Mar 2024 08:51:07 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from lxmtout1.gsi.de (lxmtout1.gsi.de [140.181.3.111]) by sourceware.org (Postfix) with ESMTPS id 606D4385843A; Wed, 27 Mar 2024 08:50:43 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 606D4385843A Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gsi.de Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gsi.de ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 606D4385843A Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=140.181.3.111 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711529446; cv=none; b=kZ+06hAakJ1GYIJGBL6NP44WIm6MCNFokKuAYxEyhJmXZIZzMRXTM8g1Qe5H4KgR0M5wow6NCDHO2/T6Q//iE+610Lrt8tICsfmFuknk8mEfeM6vs1JmE1t1ahaw1FuaT7eOguKFfjz9Pphr+NvTf30ADZ3N+Z675CDPedWEOiU= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1711529446; c=relaxed/simple; bh=a+avLC65kzMrY7JQ1RYcEfWXxcQj2r/uHGES0ObNlXI=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=jszoXVWcJ2BBr6/ni8MRAOb0kqUFR+pWgzgg1LcYnunQm18K6tUmS/1BUWhkQNfVSB4OVwcRrRQhIIlZUrWmeX5X8YKCyfUITe5lRk2E3pZF6GUcJKYoRHcY79Y86ldKLCMCea1EiXYI9mM5OCAR1c/w0ezPu94cj04YO3+Sq44= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from localhost (localhost [127.0.0.1]) by lxmtout1.gsi.de (Postfix) with ESMTP id CA5072051048; Wed, 27 Mar 2024 09:50:41 +0100 (CET) X-Virus-Scanned: Debian amavisd-new at lxmtout1.gsi.de Received: from lxmtout1.gsi.de ([127.0.0.1]) by localhost (lxmtout1.gsi.de [127.0.0.1]) (amavisd-new, port 10024) with LMTP id sKZnWkaU2SAU; Wed, 27 Mar 2024 09:50:41 +0100 (CET) Received: from srvEX6.campus.gsi.de (unknown [10.10.4.96]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by lxmtout1.gsi.de (Postfix) with ESMTPS id B03912051040; Wed, 27 Mar 2024 09:50:41 +0100 (CET) Received: from excalibur.localnet (140.181.3.12) by srvEX6.campus.gsi.de (10.10.4.96) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.1544.9; Wed, 27 Mar 2024 09:50:41 +0100 From: Matthias Kretz To: , Subject: [PATCH] libstdc++: Fix call signature of builtins from masked ++/-- Date: Wed, 27 Mar 2024 09:50:41 +0100 Message-ID: <6675252.LvFx2qVVIh@excalibur> Organization: GSI Helmholtz Center for Heavy Ion Research MIME-Version: 1.0 X-Originating-IP: [140.181.3.12] X-ClientProxiedBy: srvEX7.Campus.gsi.de (10.10.4.97) To srvEX6.campus.gsi.de (10.10.4.96) X-Spam-Status: No, score=-10.1 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, KAM_DMARC_STATUS, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, 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+incoming=patchwork.ozlabs.org@gcc.gnu.org This is broken on GCC 13 and 14 (https://compiler-explorer.com/z/GPKGPGs6T) Tested on x86_64-linux-gnu. OK for trunk and 13? ----------------------- 8< --------------------- This resolves failures in the "expensive" where-* test of check-simd when targeting AVX-512. Signed-off-by: Matthias Kretz libstdc++-v3/ChangeLog: * include/experimental/bits/simd_x86.h (_S_masked_unary): Call the 4- and 8-byte variants of __builtin_ia32_subp[ds] without rounding direction argument. --- libstdc++-v3/include/experimental/bits/simd_x86.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) -- ────────────────────────────────────────────────────────────────────────── Dr. Matthias Kretz https://mattkretz.github.io GSI Helmholtz Centre for Heavy Ion Research https://gsi.de stdₓ::simd ────────────────────────────────────────────────────────────────────────── diff --git a/libstdc++-v3/include/experimental/bits/simd_x86.h b/libstdc++-v3/include/experimental/bits/simd_x86.h index 16b207be2a3..6b414486fee 100644 --- a/libstdc++-v3/include/experimental/bits/simd_x86.h +++ b/libstdc++-v3/include/experimental/bits/simd_x86.h @@ -3538,17 +3538,23 @@ _S_masked_unary(const _SimdWrapper<_K, _Np> __k, const _SimdWrapper<_Tp, _Np> __ } else { -#define _GLIBCXX_SIMD_MASK_SUB(_Sizeof, _Width, _Instr) \ +#define _GLIBCXX_SIMD_MASK_SUB_512(_Sizeof, _Width, _Instr) \ if constexpr (sizeof(_Tp) == _Sizeof && sizeof(__v) == _Width) \ return __builtin_ia32_##_Instr##_mask( \ __v._M_data, __vector_broadcast<_Np>(_Tp(__pm_one)), __v._M_data, \ __k._M_data, _MM_FROUND_CUR_DIRECTION) - _GLIBCXX_SIMD_MASK_SUB(4, 64, subps512); +#define _GLIBCXX_SIMD_MASK_SUB(_Sizeof, _Width, _Instr) \ + if constexpr (sizeof(_Tp) == _Sizeof && sizeof(__v) == _Width) \ + return __builtin_ia32_##_Instr##_mask( \ + __v._M_data, __vector_broadcast<_Np>(_Tp(__pm_one)), __v._M_data, \ + __k._M_data) + _GLIBCXX_SIMD_MASK_SUB_512(4, 64, subps512); _GLIBCXX_SIMD_MASK_SUB(4, 32, subps256); _GLIBCXX_SIMD_MASK_SUB(4, 16, subps128); - _GLIBCXX_SIMD_MASK_SUB(8, 64, subpd512); + _GLIBCXX_SIMD_MASK_SUB_512(8, 64, subpd512); _GLIBCXX_SIMD_MASK_SUB(8, 32, subpd256); _GLIBCXX_SIMD_MASK_SUB(8, 16, subpd128); +#undef _GLIBCXX_SIMD_MASK_SUB_512 #undef _GLIBCXX_SIMD_MASK_SUB } #endif // __clang__