From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 7857) id 26BE4385C6EE; Wed, 27 Mar 2024 14:15:16 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 26BE4385C6EE DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gcc.gnu.org; s=default; t=1711548916; bh=+6Ebcthci4kLEIVyiOc4w58fUK4NQd5+JxRNKv0Umwc=; h=From:To:Subject:Date:From; b=DE6gkKenJipVKMgh5NaOJ94jn3pNBYVsQ9BZY+GUti9khVIy6YES9xV1UP5733416 LrbWrmQXac1yfYwsElO5Ts+CQSWkaaPdiL8zfIqvelgvAc05Gs/aGkaqGUF8sU9maa PLxrvJDM9gP3PoSMfsbSrO+EMHXguIVkyddUMYbw= MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="utf-8" From: Matthias Kretz To: gcc-cvs@gcc.gnu.org, libstdc++-cvs@gcc.gnu.org Subject: [gcc r14-9689] libstdc++: Fix call signature of builtins from masked ++/-- X-Act-Checkin: gcc X-Git-Author: Matthias Kretz X-Git-Refname: refs/heads/master X-Git-Oldrev: 9ac3119fec81fb64d11dee8f853145f937389366 X-Git-Newrev: 0ac2c0f0687b321ab54de271d788b4e0a287b4e2 Message-Id: <20240327141516.26BE4385C6EE@sourceware.org> Date: Wed, 27 Mar 2024 14:15:16 +0000 (GMT) List-Id: https://gcc.gnu.org/g:0ac2c0f0687b321ab54de271d788b4e0a287b4e2 commit r14-9689-g0ac2c0f0687b321ab54de271d788b4e0a287b4e2 Author: Matthias Kretz Date: Wed Mar 27 08:49:43 2024 +0100 libstdc++: Fix call signature of builtins from masked ++/-- 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. Diff: --- libstdc++-v3/include/experimental/bits/simd_x86.h | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) 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 @@ template } 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__