From patchwork Fri Oct 6 21:01:21 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Steve Ellcey X-Patchwork-Id: 822726 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=gcc.gnu.org (client-ip=209.132.180.131; helo=sourceware.org; envelope-from=gcc-patches-return-463685-incoming=patchwork.ozlabs.org@gcc.gnu.org; receiver=) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="WZ99sNy3"; dkim-atps=neutral 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 3y82BD2FB8z9t3C for ; Sat, 7 Oct 2017 08:01:37 +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:subject:from:reply-to:to:date:content-type :mime-version:content-transfer-encoding; q=dns; s=default; b=aMN bBvU8bLccdc3m8cN1gYpimE7ccPLxvwoqx5RmHyqu+K4T2bWULFny47dYMSz1jIy vgkNOGieisDassMEWo6MHKFAqoDmz6/h9a3vjHfF5PoHsshPi7+wDVLzEewvOkhb YQ8OEYG29/E0JBAbshi6SWIYkO325wTgzM8dqwkw= 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:subject:from:reply-to:to:date:content-type :mime-version:content-transfer-encoding; s=default; bh=fd2Uk3v7Y QH306Jyhmkrrlbm/CM=; b=WZ99sNy3o3JIVvWoIYvfgzvgjhOp8lnGBUw1xc2/r uUgm5ncQs8pQZuwq9vFyL80OyzUC1qehRrL0kd/I2xZx0MNrBqoZ8YoWYhQgtDhL LiC/fD+cKDoyJKZeicdzuUwOLxORZ0uVyN6PMR8Z25fg6e2/zSKV8GWQKNHUNjXM 4w= Received: (qmail 33677 invoked by alias); 6 Oct 2017 21:01:30 -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 33664 invoked by uid 89); 6 Oct 2017 21:01:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: =?iso-8859-1?q?No=2C_score=3D-25=2E2_required=3D5=2E?= =?iso-8859-1?q?0_tests=3DAWL=2CBAYES_00=2CGIT_PATCH_0=2CGIT_PATCH_?= =?iso-8859-1?q?1=2CGIT_PATCH_2=2CGIT_PATCH_3=2CRCVD_IN_DNSWL_NONE?= =?iso-8859-1?q?=2CSPF_HELO_PASS_autolearn=3Dham_version=3D3=2E3=2E?= =?iso-8859-1?q?2_spammy=3Don=C2=2C_This?= X-HELO: NAM01-SN1-obe.outbound.protection.outlook.com Received: from mail-sn1nam01on0067.outbound.protection.outlook.com (HELO NAM01-SN1-obe.outbound.protection.outlook.com) (104.47.32.67) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 06 Oct 2017 21:01:27 +0000 Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Steve.Ellcey@cavium.com; Received: from sellcey-dt.caveonetworks.com (50.233.148.156) by MWHPR07MB3550.namprd07.prod.outlook.com (10.164.192.139) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.77.7; Fri, 6 Oct 2017 21:01:24 +0000 Message-ID: <1507323681.22616.7.camel@cavium.com> Subject: [PATCH][aarch64] Put vector fnma instruction into canonical form for better code generation. From: Steve Ellcey Reply-To: sellcey@cavium.com To: gcc-patches Date: Fri, 06 Oct 2017 14:01:21 -0700 Mime-Version: 1.0 X-ClientProxiedBy: MWHPR19CA0071.namprd19.prod.outlook.com (10.173.117.33) To MWHPR07MB3550.namprd07.prod.outlook.com (10.164.192.139) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 9d2878f1-2d4a-4940-78d9-08d50cfd675f X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR07MB3550; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3550; 3:/3tNNfxGuXUu4hC3gZqWF8A8f8O5HsjI/jcoyyZXScbUr5LJhDQP8CfZsng5dZykHjNkePUKqHETphe9J0HcAW3jMCiiQ+qhz3XWVHR+WOIqzqUl2tHDS+BUbUEBkEc9NVTXttGnhCzFDHku8nHPwZdbeqACi2sUmP41/NRq31KS6z+1qiju552SIG76ToPZMqh3PDFDeKgzztusKy/g6Fv2wW9cO9LVsS5vId+IHb12+YMiC0YcDpOzT1mWHKDo; 25:2skFs9uifBjSmx7javaix8y8rZ029Lc8ywnITF13zf2ITjd2wsP686jKAuMFrlXFVyjhOhd9z4M5DxbEGapGGI1PBC5p9eiXGGyzGPg9hQTko0p9VBZiBoMqDYg0B+BlYyn1KVMzcpP0hqwnGYuu/z8Sd8ckeDDVIfOpeUr5kicr6oP5jZ3q3lvZ6kiSvAnWjFWvwVz2q2CEEsuFSESMPttesk6hM9u73AQ5PBNoUcb5Dt/XnpX/WpIOvoIBSE+cOOEpC6e9EPO5MWS65ZQhjO9eOt0ElgLStZKoNVXO3N9CiqjF/nUb99+suRXSoSXuMdCSZVO1RB+uT2Z6x/R2oA==; 31:kpO+aTcFjZxqz3TX0E/78ZD7c6huu7gsXN0kC5/xsEKcQAhx0erO65iw0FqL1CON5Hd+IxYU6aJUm8nyCvgVDR2nZAIysiTjHxDopn+XK6twQ92Fl5GixYOjFrxvMqAPo0Q4CDpYoV0PQjMXq5P/IpUUXVZEwFAS8ZWFRzLqW36MHy+RiKVjBDjpIrPRC9Y85+aI7s314m4IkRpSLNEqtUG5OzOsi0YL+1ONL7jenhg= X-MS-TrafficTypeDiagnostic: MWHPR07MB3550: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3550; 20:IMEXIJe3wFBIRN9Une9XxzarucDuEhuAM7bTUZg5FbkveK9zYGK/7LTHaygYrXlRw5V3yWux5P3+S/fNQy0NE9ETHeZ7n5Otqn1YmoYZQ1CbUaegpGI7QMd+cqtMnb4zr33dOC3BQGv4fYauxzFMmM0K4qKif+XjnOq82pxTN22gmIgtLrJTIJyXvoaXN1V3P/4KFuU8X8sDc/sNFjgbiX2STesPL1V7mtENu75CvTqeQ3/++oNb6S34s4rUtWRmjUq2zsxBSJ/CLCOBnE3GyhJ7bisiCZV8xtV2k9lU8Z8n5+z7J7glRQdXwLr71gmONBWOqhdPYrDMQbk8VUIRK+u4BOF5iBKtc0mjcffh9Ung0umQHWfIxYK0XBYvtqHJdAYcpD6MrUEJNj/pCG7X+xzkLPF9Xg/v5yAAFvqrOAn9Qs9aFu3wN4TVvzP9qPYjsbMGHDh6rPb+h+1FDIEqZ2AwFEefjlPMRCis9iz+pp0uGyGcF90hbUhVPbNp1tLx; 4:q4jWZsdp0iQyqmfrV8xVSxY9UoZ/7TScQIocZ72TvQLERp/yjoCVJ0Y2+3nXZ+esRX5M1mjCbrAH5S3bOHTlP+Y5KHo+VPX2/Klc9KqY25wn5nHz1tn+AzE/9RlRgcxyTTTBxd6jbEvHs9A3F0ouJh3ToOV8m/4PvZscCWwJt8edcwhxSbBwHCKDROZ4Lg7JhwPIqfJ3Xluo/SwgtcVWJUcFWLMLntUNkUizGYdnzAQn4K3cdR942Uu+XKRBtinqIxVhKYjLGGVpH3QInB+4zgYfc8WarUIsgBPGdojR+Tike9LrPZ8Eg0XLFbAuI3AWNjXBR0vIQlE2NQmrrqeOkQ== X-Exchange-Antispam-Report-Test: UriScan:(22074186197030)(183786458502308); X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(10201501046)(3002001)(100000703101)(100105400095)(93006095)(93001095)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123558100)(20161123564025)(20161123562025)(20161123560025)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3550; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3550; X-Forefront-PRVS: 0452022BE1 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(199003)(377424004)(189002)(68736007)(189998001)(2870700001)(5820100001)(7736002)(8936002)(8676002)(966005)(3450700001)(23676002)(16526018)(2906002)(25786009)(50226002)(478600001)(72206003)(575784001)(6666003)(81156014)(316002)(33646002)(43066003)(69596002)(81166006)(6486002)(101416001)(50466002)(6506006)(106356001)(36756003)(6306002)(47776003)(5660300001)(6116002)(305945005)(105586002)(53416004)(97736004)(53936002)(3846002)(6512007)(50986999)(103116003)(66066001)(6916009)(99106002); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3550; H:sellcey-dt.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?utf-8?q?1=3BMWHPR07MB3550=3B23=3A94xY?= =?utf-8?q?47jXKMZR8gFSuv15yaG1wdSVzNMOO21mXNS+b1I4ltAF0yGna3mVw23w?= =?utf-8?q?N+KzArWWycIjSve9egZIrsvgwSgahZBDNOR01pcZAnsBsQ/LohyIbJ24?= =?utf-8?q?sApa1K3Us++CsTMU+beQakiVMdwzMbnencGAWewxTuKaCAp4bpgtCuob?= =?utf-8?q?IVrq1omRpc1tSJLyV9jhItdQJ+/wv4/o33ePSjfiCtD4WRz8o07Zay43?= =?utf-8?q?kdFut3CeNv/xSTy1VHbeZ9ZAAxxPHKPrHCr5+VaEUecbVFgu/7VnOpAd?= =?utf-8?q?BL8r9q9/5LTQhB4M2lEfldRAWXThkH8j0cA3sCBoM73AMk2zjpSuFBms?= =?utf-8?q?db2F1SMPLYkDc80IkdGA+f2wk04IKfDUDaL9YWoS+cThc+3nRc4Odp8y?= =?utf-8?q?Fxn/TfiNUds7IVw7CnJUovqXY5HYhAILMX5ve/cTVr+CxgeBk5FjQ0Jn?= =?utf-8?q?Mbp9gqEep3KhWVFmczgbNKdEsfczGcy4q1s9a8WrZDeuRwyejCQUSZF3?= =?utf-8?q?qzaSUEZzGSea4mbO0CWeWu1nj1VJDblUCTN5vfAxBGmzQZ9a2VHKADqN?= =?utf-8?q?t7QtOexX3KT8oBwcITaSd/oMXDsTszNxJ9xCEBVVAibtz0YidEUd2CR4?= =?utf-8?q?8MLsb3GQyCjhj47cYyaqnL/cPBexhlNBFzGN/hw+NUoNIF7KtOL48pIc?= =?utf-8?q?qujcWLLo9ZDvBnytzQGTi7bgNlx2RHWEByZX8lhyF/uC4Jopzvqr5WLI?= =?utf-8?q?4iSceupnnEXKlgE/J26ZEkDOUyh/Xs3gztrWCH5LdaTAqS/PrCErjsHK?= =?utf-8?q?DTLs1ulWFEwyK29SRTSj4K1ALq7aD7XLeJDKkH48gJxHfJd9EtfDTN9v?= =?utf-8?q?O+8ZhkvJKWXZOpO/vx2D5WhOELuUoxzPpH0hxyWX8SGzYxg/RGEdPpU6?= =?utf-8?q?RZ5bfKLVdpB5t1vmjo2aw0Gtb6otepXMKPzbvYWjQEbBiwhO3cmQe0i5?= =?utf-8?q?MUPKTKFvSP/MA5rlRf18Cnbi8Dsx43UEcuaF886Ul49p1B/aPeMBP3y+?= =?utf-8?q?hWUbJBqrmXsqB6eZVYlSSqGdj1aioLNJpT4nhPrbdWBkXbP/Y5bbFDY+?= =?utf-8?q?cEcuTfAqLTwPGp2OqbJvpRtMyXDhNPeLpGXmIuZXeDspPEcgz/qnU/Z3?= =?utf-8?q?pTDG5CSkViNwcxqQqWHjBqX5gxV/hVLKO9IfHuJ+0RTlSR1E/RCK/rcL?= =?utf-8?q?ZrQyBqFGNq+vs7x1VxYcS5g8YRuTMImoz4DJ?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3550; 6:0OFn4r+XE8f0SV3VOoCtvlnzceLln2dO/wcKIPkfPxKPoaKIZpXeNHuIXVuoworw9jVRfsJmsPsYcX/QxMKgn0BUvWwoF4oW7j+nNhEvn3123Lh/GcAufBPI/ZYpnPnDhVo8B2DTe0R/1sVSaJFP/pNRGQ27Ml/+0rykxTpdGjkSO1C4QNS8ZCKdKPcdYWguDv5Kw7wDSK7wCKOXlzBa5B8TquY2e3TZNjNLO54PcjTFSd2DwrKsk/quF61p7y2ck7cCMo87HCTv1SpN3odV0MznRlqbMVbos9hU38NtQn93Jz0Cto1MiLYyC0/J9piy+ejcGdO1yNfmIJgSv2aSBQ==; 5:EdKdKX0Bc4q4yR4j/3fENl7/uozP/UZcmJzlkQ++h6lEUoeUwZ4HDI3yPXK4Y1ffoSA74huv7EqXMZXh4t33kb0H7Axi9dpwMxpUl9P5nV/rWQaqIiheS8cLh4HRf0qq64hlRhZZ9X5dTFITSPM8jw==; 24:Rcj+dkKj+yxUHhedVPvmwWf5oST8hLgOkDCNMFjQxkwq9RkYx+8Uo/raxSS85Xd1riPN0p2ylnXHUFq69vrK1gWKkMe49pcltmwmLwQKnds=; 7:wToIPiMXbz65VaYwj6iew2CLKO1Sr3EMy/9JFV0+/fEvhVjtLgFimOdNWJTDwXNJ7GBLOPG+UXhnIwUT13M3YN1Yo1sYAumuEqvK+pl9KFBudiUSv2qLboFbBQ+JFgeLuElu+jv8KcClGlJYLofM2wNzpEdHOkaSEO4KrXmr06ajA3q79c7ehO1v61NpY7Cj1fmC5j1lu5cD3WxWpYhMxeYMPr6oDWqwRvtXREh6Kv8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: cavium.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Oct 2017 21:01:24.2312 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3550 This patch is a follow up to a discussion at: https://gcc.gnu.org/ml/gcc/2017-06/msg00126.html For some reason the simd version of fnma in aarch64-simd.md is not in the canonical form of having the neg operator on  the first operand and instead has it on the second.  This  results in sub-optimal code generation (an extra dup instruction). I have moved the 'neg', rebuilt GCC and retested with this patch There were no regressions.  OK to checkin? 2017-10-06  Steve Ellcey   * config/aarch64/aarch64-simd.md (fnma4): Move neg operator to canonical location. Reviewed-by: James Greenhalgh diff --git a/gcc/config/aarch64/aarch64-simd.md b/gcc/config/aarch64/aarch64-sim d.md index 12da8be..d9ced50 100644 --- a/gcc/config/aarch64/aarch64-simd.md +++ b/gcc/config/aarch64/aarch64-simd.md @@ -1777,9 +1777,8 @@  (define_insn "fnma4"    [(set (match_operand:VHSDF 0 "register_operand" "=w")   (fma:VHSDF -   (match_operand:VHSDF 1 "register_operand" "w") -          (neg:VHSDF -     (match_operand:VHSDF 2 "register_operand" "w")) +   (neg:VHSDF (match_operand:VHSDF 1 "register_operand" "w")) +   (match_operand:VHSDF 2 "register_operand" "w")     (match_operand:VHSDF 3 "register_operand" "0")))]    "TARGET_SIMD"    "fmls\\t%0., %1., %2." 2017-10-06  Steve Ellcey   * gcc.target/aarch64/fmls.c: New test. diff --git a/gcc/testsuite/gcc.target/aarch64/fmls.c b/gcc/testsuite/gcc.target/ aarch64/fmls.c index e69de29..1ea0e6a 100644 --- a/gcc/testsuite/gcc.target/aarch64/fmls.c +++ b/gcc/testsuite/gcc.target/aarch64/fmls.c @@ -0,0 +1,19 @@ +/* { dg-do compile } */ +/* { dg-options "-O3" } */ + +#define vector __attribute__((vector_size(16))) +vector double a = {1.0,1.0}; +vector double b = {2.0,2.0}; +double x = 3.0; + + +void __attribute__ ((noinline)) +vf (double x, vector double *v1, vector double *v2, vector double *result) +{ +  vector double s = v1[0]; +  vector double t = -v2[0]; +  vector double m = {x,x}; +  vector double r = t * m + s; +  result[0] = r; +} +/* { dg-final { scan-assembler-not "dup" } } */