From patchwork Mon Jan 12 15:52:41 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyrylo Tkachov X-Patchwork-Id: 427784 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 7164814015A for ; Tue, 13 Jan 2015 02:52:57 +1100 (AEDT) DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; q= dns; s=default; b=OxFhFlhdmb3/lYq8/lKEtqeLlbIM58slTw8bH4zy0dsGc0 iDE8guxWseCXcYewb37VKUOjqd18qhti5yVImC1c2Hml6kTiPqdO9yjGbdjoBZaq hMtr01mvo1dwDY2bHKsOTTYCybHDt1KbAzl4OUc4Cnm98/XyCgL5KWw9F1IZ0= DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender :message-id:date:from:mime-version:to:subject:content-type; s= default; bh=3WcB/L2zYY2gCeiCAWRmlNpCuLY=; b=rCgX0w34dfveyJch7YaX wMxlyunGv0+z0gOhijfleyqSBynPyuwzKSho1afnnNUBtLJgNg7FeKKp7qoybcgg Ob4PcoeafCZPWGyWcA+QctA/Zz9e0/8HQVE2CITrDt0MbBFWAS1d9u8f757CxgVy M/FLqN6G9tAKsXelfrvw1Sw= Received: (qmail 23327 invoked by alias); 12 Jan 2015 15:52:49 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Received: (qmail 23315 invoked by uid 89); 12 Jan 2015 15:52:46 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.8 required=5.0 tests=AWL, BAYES_00, SPF_PASS autolearn=ham version=3.3.2 X-HELO: service87.mimecast.com Received: from service87.mimecast.com (HELO service87.mimecast.com) (91.220.42.44) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 12 Jan 2015 15:52:45 +0000 Received: from cam-owa1.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.140]) by service87.mimecast.com; Mon, 12 Jan 2015 15:52:42 +0000 Received: from [10.1.207.43] ([10.1.255.212]) by cam-owa1.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Mon, 12 Jan 2015 15:52:41 +0000 Message-ID: <54B3EDC9.7080004@arm.com> Date: Mon, 12 Jan 2015 15:52:41 +0000 From: Kyrill Tkachov User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.2.0 MIME-Version: 1.0 To: GCC Patches , Marcus Shawcroft , Richard Earnshaw , James Greenhalgh Subject: [PATCH][AArch64] Use target builtin instead of __builtin_sqrt for vsqrt_f64 X-MC-Unique: 115011215524207901 X-IsSubscribed: yes Hi all, As raised in https://gcc.gnu.org/ml/gcc-patches/2014-12/msg01237.html and discussed in that thread, using __builtin_sqrt for vsqrt_f64 may end up in a call to the library sqrt at -O0. To avoid that this patch uses a target builtin for sqrt on DF mode and uses that to implement the intrinsic. With this patch I don't see sqrt calls being created at -O0 on a large arm_neon.h testcase where they were generated before. aarch64-none-elf testing and the intrinsics testsuite in particular are clean. Ok for trunk? Thanks, Kyrill 2015-01-12 Kyrylo Tkachov * config/aarch64/aarch64-simd-builtins.def (sqrt): Use BUILTIN_VDQF_DF. * config/aarch64/arm_neon.h (vsqrt_f64): Use __builtin_aarch64_sqrtdf instead of __builtin_sqrt. commit 865be1cc8365886904d571e244746815e2317162 Author: Kyrylo Tkachov Date: Fri Jan 9 12:18:59 2015 +0000 [AArch64] Use target builtin for vsqrt_f64 diff --git a/gcc/config/aarch64/aarch64-simd-builtins.def b/gcc/config/aarch64/aarch64-simd-builtins.def index b41d9f6..60cd1d7 100644 --- a/gcc/config/aarch64/aarch64-simd-builtins.def +++ b/gcc/config/aarch64/aarch64-simd-builtins.def @@ -41,7 +41,7 @@ BUILTIN_VDC (COMBINE, combine, 0) BUILTIN_VB (BINOP, pmul, 0) - BUILTIN_VDQF (UNOP, sqrt, 2) + BUILTIN_VDQF_DF (UNOP, sqrt, 2) BUILTIN_VD_BHSI (BINOP, addp, 0) VAR1 (UNOP, addp, 0, di) BUILTIN_VDQ_BHSI (UNOP, clrsb, 2) diff --git a/gcc/config/aarch64/arm_neon.h b/gcc/config/aarch64/arm_neon.h index c679802..3b151a2 100644 --- a/gcc/config/aarch64/arm_neon.h +++ b/gcc/config/aarch64/arm_neon.h @@ -22194,7 +22194,7 @@ vsqrtq_f32 (float32x4_t a) __extension__ static __inline float64x1_t __attribute__ ((__always_inline__)) vsqrt_f64 (float64x1_t a) { - return (float64x1_t) { __builtin_sqrt (a[0]) }; + return (float64x1_t) { __builtin_aarch64_sqrtdf (a[0]) }; } __extension__ static __inline float64x2_t __attribute__ ((__always_inline__))