From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 31227 invoked by alias); 12 Jun 2017 16:52:37 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 27963 invoked by uid 89); 12 Jun 2017 16:52:35 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.9 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_NONE,SPF_PASS,URIBL_RED autolearn=ham version=3.3.2 spammy= X-HELO: relay1.mentorg.com Received: from relay1.mentorg.com (HELO relay1.mentorg.com) (192.94.38.131) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Jun 2017 16:52:33 +0000 Received: from nat-ies.mentorg.com ([192.94.31.2] helo=SVR-IES-MBX-04.mgc.mentorg.com) by relay1.mentorg.com with esmtp id 1dKSZt-0001yh-Qk from joseph_myers@mentor.com ; Mon, 12 Jun 2017 09:52:33 -0700 Received: from digraph.polyomino.org.uk (137.202.0.87) by SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) with Microsoft SMTP Server (TLS) id 15.0.1210.3; Mon, 12 Jun 2017 17:52:30 +0100 Received: from jsm28 (helo=localhost) by digraph.polyomino.org.uk with local-esmtp (Exim 4.86_2) (envelope-from ) id 1dKSZk-0002si-Ou; Mon, 12 Jun 2017 16:52:24 +0000 Date: Mon, 12 Jun 2017 16:52:00 -0000 From: Joseph Myers To: Tamar Christina CC: GCC Patches , nd , "law@redhat.com" , "ian@airs.com" , "rguenther@suse.de" Subject: Re: [GCC][PATCH][mid-end] Optimize x * copysign (1.0, y) [Patch (1/2)] In-Reply-To: Message-ID: References: User-Agent: Alpine 2.20 (DEB 67 2015-01-07) MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" X-ClientProxiedBy: svr-ies-mbx-01.mgc.mentorg.com (139.181.222.1) To SVR-IES-MBX-04.mgc.mentorg.com (139.181.222.4) X-SW-Source: 2017-06/txt/msg00816.txt.bz2 On Mon, 12 Jun 2017, Tamar Christina wrote: > x * copysign (1.0, y) and > x * copysign (-1.0, y) > > to: > > x ^ (y & (1 << sign_bit_position)) Note that this needs to be disabled for -fsignaling-nans, as if x is a signaling NaN, the multiplication converts it to a quiet NaN and raises "invalid". > This is done by creating a special builtin during matching and generate the > appropriate instructions during expand. This new builtin is called XORSIGN. If the built-in function has a user-visible name such as __builtin_xorsign (as opposed to one that's not a C identifier), it needs to be documented as a user-visible feature. I'd suggest not having such a user-visible built-in function. -- Joseph S. Myers joseph@codesourcery.com