From patchwork Wed Dec 14 16:37:37 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 705715 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 3tf2Ld2Yx6z9t0v for ; Thu, 15 Dec 2016 03:38:01 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="OCX7Q6bL"; dkim-atps=neutral DomainKey-Signature: a=rsa-sha1; c=nofws; d=gcc.gnu.org; h=list-id :list-unsubscribe:list-archive:list-post:list-help:sender:from :to:cc:subject:date:message-id:references:in-reply-to :content-type:content-transfer-encoding:mime-version; q=dns; s= default; b=vUgkIRScbDrrbQDx8XIG5CWh503f8t62rODSxlLPdn6O7KmlEBkLN R9/yOuC1Sqq/Za9sitygywvqE1ajwBfI8eZBpZojGlsDYpJh6eB5SUaY+/GUxiYy JqOgZS0BPD32cf+SOdFHQuMNkUmTAkL7Lb4c4X/TIdmZYbD6S9UkMk= 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:from :to:cc:subject:date:message-id:references:in-reply-to :content-type:content-transfer-encoding:mime-version; s=default; bh=ACMMpH7rCrPH5JluTAvxk4c9XTs=; b=OCX7Q6bLHyPtKjDN38mFjTw3m56j tfdYRYinqTMwPqsrZsBdT87jxwhpo3GiBD9lMfxOXbc6cIcl11diuk5NSd/lCUQx 3XqbOXxysrRB2PFMqeXsegqJ8B32cAJ8BBO+4EQkzMDr7MmaTETlqjbz5PpccnT3 MP9NKfK7qvRLsuY= Received: (qmail 16674 invoked by alias); 14 Dec 2016 16:37:51 -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 16659 invoked by uid 89); 14 Dec 2016 16:37:50 -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_HELO_PASS, SPF_PASS autolearn=ham version=3.3.2 spammy=sk:nonimme, 20161129, 3049, HAccept-Language:en-GB X-HELO: EUR03-AM5-obe.outbound.protection.outlook.com Received: from mail-eopbgr30063.outbound.protection.outlook.com (HELO EUR03-AM5-obe.outbound.protection.outlook.com) (40.107.3.63) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Wed, 14 Dec 2016 16:37:40 +0000 Received: from AM5PR0802MB2610.eurprd08.prod.outlook.com (10.175.46.18) by HE1PR0802MB2346.eurprd08.prod.outlook.com (10.172.129.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.771.8; Wed, 14 Dec 2016 16:37:37 +0000 Received: from AM5PR0802MB2610.eurprd08.prod.outlook.com ([10.175.46.18]) by AM5PR0802MB2610.eurprd08.prod.outlook.com ([10.175.46.18]) with mapi id 15.01.0771.014; Wed, 14 Dec 2016 16:37:37 +0000 From: Wilco Dijkstra To: GCC Patches , Kyrylo Tkachov CC: nd Subject: Re: [PATCH][ARM] Remove movdi_vfp_cortexa8 Date: Wed, 14 Dec 2016 16:37:37 +0000 Message-ID: References: , In-Reply-To: authentication-results: spf=none (sender IP is ) smtp.mailfrom=Wilco.Dijkstra@arm.com; x-ms-office365-filtering-correlation-id: 568ed3ec-bf2f-4f90-53c2-08d4243f8386 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:HE1PR0802MB2346; x-microsoft-exchange-diagnostics: 1; HE1PR0802MB2346; 7:XMEEI5o+jf8SPaYqj/gtZGydvrIZG7jnwms0qqj56oqWzHo1lJCammKVsDsaEDPHOCwvL91zCeJupwY0irKhdvP5svIjcMDR1fjQmIezV74PWbKiJqbk5/5pFsz0q+AADdH4nC0qFw3ciOR5YUFm3yFRaBOjFaaczrOycW76DGmrndWwL+zTPaVLUSW2oW+Rj2qGtSISXC6oGxMuDnXZ/7CVfhtCndwXld1D8OBSThEOkHs6yAya7PUl64QKEpoNPU4ZJg2np+wumKd883HfyLbBk1KjUKqP2phgK/yDZYkZr7KOY4EZ20rB+2MEPVrGk28Bz3y0fP8Zq0QatOpo/HJtpQItvitTdX8ZuVtBYKlNPY3qIopmx3sHkeKOGFF4ifroztT3iUOOnOGQzPkrnrzQZ1Z41nwVIrIAsVYlNW6LwfMpsaP3A/SRHUiTT/LN3IEV/CDfdel/QSnnT5ERLg== nodisclaimer: True x-microsoft-antispam-prvs: x-exchange-antispam-report-test: UriScan:(180628864354917); x-exchange-antispam-report-cfa-test: BCL:0; PCL:0; RULEID:(6040375)(601004)(2401047)(5005006)(8121501046)(10201501046)(3002001)(6055026)(6041248)(20161123555025)(20161123560025)(20161123562025)(20161123564025)(6072148); SRVR:HE1PR0802MB2346; BCL:0; PCL:0; RULEID:; SRVR:HE1PR0802MB2346; x-forefront-prvs: 01565FED4C x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(7916002)(39450400003)(39840400002)(39860400002)(39410400002)(39850400002)(189002)(199003)(377424004)(54534003)(4001150100001)(33656002)(3900700001)(5001770100001)(101416001)(3660700001)(3280700002)(66066001)(97736004)(6436002)(54356999)(106116001)(106356001)(76176999)(74316002)(105586002)(76576001)(81166006)(305945005)(2906002)(2900100001)(8676002)(6116002)(92566002)(9686002)(8936002)(3846002)(189998001)(81156014)(7736002)(4326007)(122556002)(50986999)(102836003)(7696004)(86362001)(6506006)(2950100002)(38730400001)(6636002)(229853002)(77096006)(68736007)(450100001)(5660300001); DIR:OUT; SFP:1101; SCL:1; SRVR:HE1PR0802MB2346; H:AM5PR0802MB2610.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; received-spf: None (protection.outlook.com: arm.com does not designate permitted sender hosts) spamdiagnosticoutput: 1:99 spamdiagnosticmetadata: NSPM MIME-Version: 1.0 X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-originalarrivaltime: 14 Dec 2016 16:37:37.2459 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: HE1PR0802MB2346 ping From: Wilco Dijkstra Sent: 29 November 2016 11:05 To: GCC Patches Cc: nd Subject: [PATCH][ARM] Remove movdi_vfp_cortexa8     Merge the movdi_vfp_cortexa8 pattern into movdi_vfp and remove it to avoid unnecessary duplication and repeating bugs like PR78439 due to changes being applied only to one of the duplicates. Bootstrap OK for ARM and Thumb-2 gnueabihf targets. OK for commit? ChangeLog: 2016-11-29  Wilco Dijkstra          * config/arm/vfp.md (movdi_vfp): Merge changes from movdi_vfp_cortexa8.         * (movdi_vfp_cortexa8): Remove pattern. diff --git a/gcc/config/arm/vfp.md b/gcc/config/arm/vfp.md index 2051f1018f1cbff9c5bf044e71304d78e615458e..a917aa625a7b15f6c9e2b549ab22e5219bb9b99c 100644 --- a/gcc/config/arm/vfp.md +++ b/gcc/config/arm/vfp.md @@ -304,9 +304,9 @@  ;; DImode moves    (define_insn "*movdi_vfp" -  [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,q,q,m,w,r,w,w, Uv") +  [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,q,q,m,w,!r,w,w, Uv")         (match_operand:DI 1 "di_operand"              "r,rDa,Db,Dc,mi,mi,q,r,w,w,Uvi,w"))] -  "TARGET_32BIT && TARGET_HARD_FLOAT && arm_tune != TARGET_CPU_cortexa8 +  "TARGET_32BIT && TARGET_HARD_FLOAT     && (   register_operand (operands[0], DImode)         || register_operand (operands[1], DImode))     && !(TARGET_NEON && CONST_INT_P (operands[1]) @@ -339,71 +339,25 @@      }    "    [(set_attr "type" "multiple,multiple,multiple,multiple,load2,load2,store2,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") -   (set (attr "length") (cond [(eq_attr "alternative" "1,4,5,6") (const_int 8) +   (set (attr "length") (cond [(eq_attr "alternative" "1") (const_int 8)                                (eq_attr "alternative" "2") (const_int 12)                                (eq_attr "alternative" "3") (const_int 16) +                             (eq_attr "alternative" "4,5,6") +                              (symbol_ref "arm_count_output_move_double_insns (operands) * 4")                                (eq_attr "alternative" "9")                                 (if_then_else                                   (match_test "TARGET_VFP_SINGLE")                                   (const_int 8)                                   (const_int 4))]                                (const_int 4))) +   (set_attr "predicable"    "yes")     (set_attr "arm_pool_range"     "*,*,*,*,1020,4096,*,*,*,*,1020,*")     (set_attr "thumb2_pool_range"     "*,*,*,*,1018,4094,*,*,*,*,1018,*")     (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") +   (set (attr "ce_count") (symbol_ref "get_attr_length (insn) / 4"))     (set_attr "arch"           "t2,any,any,any,a,t2,any,any,any,any,any,any")]  )   -(define_insn "*movdi_vfp_cortexa8" -  [(set (match_operand:DI 0 "nonimmediate_di_operand" "=r,r,r,r,r,r,m,w,!r,w,w, Uv") -       (match_operand:DI 1 "di_operand"              "r,rDa,Db,Dc,mi,mi,r,r,w,w,Uvi,w"))] -  "TARGET_32BIT && TARGET_HARD_FLOAT && arm_tune == TARGET_CPU_cortexa8 -    && (   register_operand (operands[0], DImode) -        || register_operand (operands[1], DImode)) -    && !(TARGET_NEON && CONST_INT_P (operands[1]) -        && neon_immediate_valid_for_move (operands[1], DImode, NULL, NULL))" -  "* -  switch (which_alternative) -    { -    case 0: -    case 1: -    case 2: -    case 3: -      return \"#\"; -    case 4: -    case 5: -    case 6: -      return output_move_double (operands, true, NULL); -    case 7: -      return \"vmov%?\\t%P0, %Q1, %R1\\t%@ int\"; -    case 8: -      return \"vmov%?\\t%Q0, %R0, %P1\\t%@ int\"; -    case 9: -      return \"vmov%?.f64\\t%P0, %P1\\t%@ int\"; -    case 10: case 11: -      return output_move_vfp (operands); -    default: -      gcc_unreachable (); -    } -  " -  [(set_attr "type" "multiple,multiple,multiple,multiple,load2,load2,store2,f_mcrr,f_mrrc,ffarithd,f_loadd,f_stored") -   (set (attr "length") (cond [(eq_attr "alternative" "1") (const_int 8) -                               (eq_attr "alternative" "2") (const_int 12) -                               (eq_attr "alternative" "3") (const_int 16) -                               (eq_attr "alternative" "4,5,6") -                              (symbol_ref -                               "arm_count_output_move_double_insns (operands) \ -                                 * 4")] -                              (const_int 4))) -   (set_attr "predicable"    "yes") -   (set_attr "arm_pool_range"     "*,*,*,*,1018,4094,*,*,*,*,1018,*") -   (set_attr "thumb2_pool_range"     "*,*,*,*,1018,4094,*,*,*,*,1018,*") -   (set_attr "neg_pool_range" "*,*,*,*,1004,0,*,*,*,*,1004,*") -   (set (attr "ce_count") -       (symbol_ref "get_attr_length (insn) / 4")) -   (set_attr "arch"           "t2,any,any,any,a,t2,any,any,any,any,any,any")] - ) -  ;; HFmode moves    (define_insn "*movhf_vfp_fp16"