From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pj1-x1029.google.com (mail-pj1-x1029.google.com [IPv6:2607:f8b0:4864:20::1029]) by sourceware.org (Postfix) with ESMTPS id C192D385D0C3 for ; Sat, 29 Oct 2022 04:53:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C192D385D0C3 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com Received: by mail-pj1-x1029.google.com with SMTP id m6-20020a17090a5a4600b00212f8dffec9so6215134pji.0 for ; Fri, 28 Oct 2022 21:53:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=Nyk0ISMDRwRjvmKBh8crMQwIh6WDYob1Z3EJPFkGXTE=; b=Pzu2+sTHTd5J1iIujmQTsNDMA6XUJzGO+w4w6vQeHpWMT9C9qb58j7ZWgNFZqfVQ8V CrroiY8m/stLX/0WALjqQeE5WA+VcgAXcJ1/10gTGjs3KMd/2N+rN0FnZtcP87IhezYW B0BqRUh5b1+kdfPFA29kZKKRYHhapdK0tfND6GtMCUEAFr/8Qo/IWM+ekJnSEHGXICOH xXVfnZlQsYuVQLi/Zl3xFB8cLtpTlS9yi60ePpk4Ih7L/fTMBPAit8q0uTezT384oFo9 EE2K9cmIuA3jnRVhqjerM/wQfyABvSJYeY+4KRGpylYy9tx0RM5pLsXLmqiRr8FW24xL Pq+g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=Nyk0ISMDRwRjvmKBh8crMQwIh6WDYob1Z3EJPFkGXTE=; b=VCM9NBVV/3IwrTCG2lrRqXbyZep7L4D5yKlzb9cN2Iss3MvulUO+MjnsEY+CwbGpJy rhBQCoRn6EG3ZGkvlQT7NP4oyfMsFv9eiqO8eTBSNNWlviwj8Ooy3NU6LRzWbBSPq2ZK 2TnkYiRk5kVwG5oNySLfoZ7kbFoL0ZN3qnKm4OvLKGanUirSDR5DkFq5/qc5gKQgStoK 0B+P1AVbdVCotNRwCKkWs4V/cv0JPDqBX9CZFY0dSaqh//9wGf+YKC31lnkzo2EeLKfp EaL4PzMhpoq+cmJs8jxJn0ohAeMxvgyp8aX3Lx4vmuDFYUIIoYrbIOilgG9o2t+WoRRU zULA== X-Gm-Message-State: ACrzQf1YztbooIMp+YC6R/MWkw0bkHA40TcbRIgixdluUwt4KBO3waXS C2Vu8kEeddREdmVpJInq5mUmqoXP73c= X-Google-Smtp-Source: AMsMyM4d+wrp15hADONh4Wu5XywUSFStr05n9ar5Y0gcNA5Hm+P30BeGqQI1DG5fJKKTjukIp53Vpg== X-Received: by 2002:a17:903:1251:b0:17f:7f78:e71c with SMTP id u17-20020a170903125100b0017f7f78e71cmr2606694plh.147.1667019197646; Fri, 28 Oct 2022 21:53:17 -0700 (PDT) Received: from ?IPV6:2601:681:8600:13d0::f0a? ([2601:681:8600:13d0::f0a]) by smtp.gmail.com with ESMTPSA id jc22-20020a17090325d600b00186b8752a78sm331531plb.80.2022.10.28.21.53.16 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 28 Oct 2022 21:53:17 -0700 (PDT) Message-ID: Date: Fri, 28 Oct 2022 22:53:16 -0600 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.3.1 Subject: Re: [PATCH] builtins: Add various __builtin_*f{16,32,64,128,32x,64x,128x} builtins Content-Language: en-US To: Jakub Jelinek , "Joseph S. Myers" , Richard Biener Cc: gcc-patches@gcc.gnu.org References: From: Jeff Law In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-3.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP,UPPERCASE_50_75 autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 10/16/22 04:09, Jakub Jelinek wrote: > Hi! > > When working on libstdc++ extended float support in , I found that > we need various builtins for the _Float{16,32,64,128,32x,64x,128x} types. > Glibc 2.26 and later provides the underlying libm routines (except for > _Float16 and _Float128x for the time being) and in libstdc++ I think we > need at least the _Float128 builtins on x86_64, i?86, powerpc64le and ia64 > (when long double is IEEE quad, we can handle it by using __builtin_*l > instead), because without the builtins the overloads couldn't be constexpr > (say when it would declare the *f128 extern "C" routines itself and call > them). > > The testcase covers just types of those builtins and their constant > folding, so doesn't need actual libm support. > > Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? > > 2022-10-15 Jakub Jelinek > > * builtin-types.def (BT_FLOAT16_PTR, BT_FLOAT32_PTR, BT_FLOAT64_PTR, > BT_FLOAT128_PTR, BT_FLOAT32X_PTR, BT_FLOAT64X_PTR, BT_FLOAT128X_PTR): > New DEF_PRIMITIVE_TYPE. > (BT_FN_INT_FLOAT16, BT_FN_INT_FLOAT32, BT_FN_INT_FLOAT64, > BT_FN_INT_FLOAT128, BT_FN_INT_FLOAT32X, BT_FN_INT_FLOAT64X, > BT_FN_INT_FLOAT128X, BT_FN_LONG_FLOAT16, BT_FN_LONG_FLOAT32, > BT_FN_LONG_FLOAT64, BT_FN_LONG_FLOAT128, BT_FN_LONG_FLOAT32X, > BT_FN_LONG_FLOAT64X, BT_FN_LONG_FLOAT128X, BT_FN_LONGLONG_FLOAT16, > BT_FN_LONGLONG_FLOAT32, BT_FN_LONGLONG_FLOAT64, > BT_FN_LONGLONG_FLOAT128, BT_FN_LONGLONG_FLOAT32X, > BT_FN_LONGLONG_FLOAT64X, BT_FN_LONGLONG_FLOAT128X): New > DEF_FUNCTION_TYPE_1. > (BT_FN_FLOAT16_FLOAT16_FLOAT16PTR, BT_FN_FLOAT32_FLOAT32_FLOAT32PTR, > BT_FN_FLOAT64_FLOAT64_FLOAT64PTR, BT_FN_FLOAT128_FLOAT128_FLOAT128PTR, > BT_FN_FLOAT32X_FLOAT32X_FLOAT32XPTR, > BT_FN_FLOAT64X_FLOAT64X_FLOAT64XPTR, > BT_FN_FLOAT128X_FLOAT128X_FLOAT128XPTR, BT_FN_FLOAT16_FLOAT16_INT, > BT_FN_FLOAT32_FLOAT32_INT, BT_FN_FLOAT64_FLOAT64_INT, > BT_FN_FLOAT128_FLOAT128_INT, BT_FN_FLOAT32X_FLOAT32X_INT, > BT_FN_FLOAT64X_FLOAT64X_INT, BT_FN_FLOAT128X_FLOAT128X_INT, > BT_FN_FLOAT16_FLOAT16_INTPTR, BT_FN_FLOAT32_FLOAT32_INTPTR, > BT_FN_FLOAT64_FLOAT64_INTPTR, BT_FN_FLOAT128_FLOAT128_INTPTR, > BT_FN_FLOAT32X_FLOAT32X_INTPTR, BT_FN_FLOAT64X_FLOAT64X_INTPTR, > BT_FN_FLOAT128X_FLOAT128X_INTPTR, BT_FN_FLOAT16_FLOAT16_LONG, > BT_FN_FLOAT32_FLOAT32_LONG, BT_FN_FLOAT64_FLOAT64_LONG, > BT_FN_FLOAT128_FLOAT128_LONG, BT_FN_FLOAT32X_FLOAT32X_LONG, > BT_FN_FLOAT64X_FLOAT64X_LONG, BT_FN_FLOAT128X_FLOAT128X_LONG): New > DEF_FUNCTION_TYPE_2. > (BT_FN_FLOAT16_FLOAT16_FLOAT16_INTPTR, > BT_FN_FLOAT32_FLOAT32_FLOAT32_INTPTR, > BT_FN_FLOAT64_FLOAT64_FLOAT64_INTPTR, > BT_FN_FLOAT128_FLOAT128_FLOAT128_INTPTR, > BT_FN_FLOAT32X_FLOAT32X_FLOAT32X_INTPTR, > BT_FN_FLOAT64X_FLOAT64X_FLOAT64X_INTPTR, > BT_FN_FLOAT128X_FLOAT128X_FLOAT128X_INTPTR): New DEF_FUNCTION_TYPE_3. > * builtins.def (ACOSH_TYPE, ATAN2_TYPE, ATANH_TYPE, COSH_TYPE, > FDIM_TYPE, HUGE_VAL_TYPE, HYPOT_TYPE, ILOGB_TYPE, LDEXP_TYPE, > LGAMMA_TYPE, LLRINT_TYPE, LOG10_TYPE, LRINT_TYPE, MODF_TYPE, > NEXTAFTER_TYPE, REMQUO_TYPE, SCALBLN_TYPE, SCALBN_TYPE, SINH_TYPE): > Define and undefine later. > (FMIN_TYPE, SQRT_TYPE): Undefine at a later line. > (INF_TYPE): Define at a later line. > (BUILT_IN_ACOSH, BUILT_IN_ACOS, BUILT_IN_ASINH, BUILT_IN_ASIN, > BUILT_IN_ATAN2, BUILT_IN_ATANH, BUILT_IN_ATAN, BUILT_IN_CBRT, > BUILT_IN_COSH, BUILT_IN_COS, BUILT_IN_ERFC, BUILT_IN_ERF, > BUILT_IN_EXP2, BUILT_IN_EXP, BUILT_IN_EXPM1, BUILT_IN_FDIM, > BUILT_IN_FMOD, BUILT_IN_FREXP, BUILT_IN_HYPOT, BUILT_IN_ILOGB, > BUILT_IN_LDEXP, BUILT_IN_LGAMMA, BUILT_IN_LLRINT, BUILT_IN_LLROUND, > BUILT_IN_LOG10, BUILT_IN_LOG1P, BUILT_IN_LOG2, BUILT_IN_LOGB, > BUILT_IN_LOG, BUILT_IN_LRINT, BUILT_IN_LROUND, BUILT_IN_MODF, > BUILT_IN_NEXTAFTER, BUILT_IN_POW, BUILT_IN_REMAINDER, BUILT_IN_REMQUO, > BUILT_IN_SCALBLN, BUILT_IN_SCALBN, BUILT_IN_SINH, BUILT_IN_SIN, > BUILT_IN_TANH, BUILT_IN_TAN, BUILT_IN_TGAMMA): Add > DEF_EXT_LIB_FLOATN_NX_BUILTINS. > (BUILT_IN_HUGE_VAL): Use HUGE_VAL_TYPE instead of INF_TYPE in > DEF_GCC_FLOATN_NX_BUILTINS. > * fold-const-call.cc (fold_const_call_ss): Add various CASE_CFN_*_FN: > cases when CASE_CFN_* is present. > (fold_const_call_sss): Likewise. > * builtins.cc (mathfn_built_in_2): Use CASE_MATHFN_FLOATN instead of > CASE_MATHFN for various builtins in SEQ_OF_CASE_MATHFN macro. > (builtin_with_linkage_p): Add CASE_FLT_FN_FLOATN_NX for various > builtins next to CASE_FLT_FN. > * fold-const.cc (tree_call_nonnegative_warnv_p): Add CASE_CFN_*_FN: > next to CASE_CFN_*: for various builtins. > * tree-call-cdce.cc (can_test_argument_range): Add > CASE_FLT_FN_FLOATN_NX next to CASE_FLT_FN for various builtins. > (edom_only_function): Likewise. > > * gcc.dg/torture/floatn-builtin.h: Add tests for newly added builtins. OK. jeff