From patchwork Tue Dec 6 15:03:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Wilco Dijkstra X-Patchwork-Id: 703192 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 3tY4dw40HCz9vm3 for ; Wed, 7 Dec 2016 02:04:04 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; unprotected) header.d=gcc.gnu.org header.i=@gcc.gnu.org header.b="Z+ghGFwP"; 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=q8Zd6fXyzIIwaP8xyVwFRjgbG46J7VXKzJ+p7KPXsqfQLPXdGcpZO C60KSAhHBV4uSioVYWmNGg3n3XQ/fU+xelciF6B49/8N44J6MeUOWevHahffqpSM guoqCAIoS7lb2N8x1xuTAbXF7ebRKtE4Oo4HadeNwe2ostyn84zeD0= 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=TxJOSowpEPp5eraDrCTeThxH670=; b=Z+ghGFwPft2XMtt+yPnEVhd/IdoZ x/XKOthhpqh2xZ3cnrE4heB+9BNobLimnHAUPNCX+5ZHUAk1GnXxC6fK0ntAUD76 ve+cZRoQ7bnJm80v59XAmKvrJ6d4r+K0UB/f0jTvpQ3MIHJrJA0PJEjxVHrX1I8c B5rLTapAoHMpe1I= Received: (qmail 26631 invoked by alias); 6 Dec 2016 15:03:55 -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 26614 invoked by uid 89); 6 Dec 2016 15:03:54 -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:which_a, Sent X-HELO: EUR01-HE1-obe.outbound.protection.outlook.com Received: from mail-he1eur01on0089.outbound.protection.outlook.com (HELO EUR01-HE1-obe.outbound.protection.outlook.com) (104.47.0.89) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 06 Dec 2016 15:03:44 +0000 Received: from VI1PR0802MB2621.eurprd08.prod.outlook.com (10.175.20.147) by VI1PR0802MB2349.eurprd08.prod.outlook.com (10.172.14.12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.761.9; Tue, 6 Dec 2016 15:03:41 +0000 Received: from VI1PR0802MB2621.eurprd08.prod.outlook.com ([10.175.20.147]) by VI1PR0802MB2621.eurprd08.prod.outlook.com ([10.175.20.147]) with mapi id 15.01.0761.017; Tue, 6 Dec 2016 15:03:41 +0000 From: Wilco Dijkstra To: GCC Patches , Kyrylo Tkachov CC: nd Subject: Re: [PATCH][ARM] Remove movdi_vfp_cortexa8 Date: Tue, 6 Dec 2016 15:03:40 +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: d323a95e-8075-493c-bb66-08d41de910c0 x-microsoft-antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001); SRVR:VI1PR0802MB2349; x-microsoft-exchange-diagnostics: 1; VI1PR0802MB2349; 7:rXxCjDji7a0w8p5N//LPp/gpx82xm1nIEOj2N1Y6XvVTe00HwB1gxrCUQ8QzFTAttH0ciW9T7JtS0g9ZfOLPu3HXYJvm+g5hhb7fsO7wlcJJuki4bj0fK2C/zzWg3kht95JV4+r00iLUKfaBz1475HEyIyfnI7fFM9gXNPztDyXs0HkTf/1VCLOhGyGWYOCFqLFWUQQoqvgBJy8ko0EqiRcVff/NT+h4rZWutx/HbVqJ5kj2cq5/M5HxO3zX72wq6/74x9tHC4qHRY0eUfYATIExivCv8BidRCSEITtqmFWfBOqrFuk+b9h73pxda8w6Z4cnDt2FSOcFT/c0cQ61d6qHZ/FETwbFA4KEJMuEEjUk7zXG0tV7hCx4xdi4MU+18AiLAHyQTacLas0VhSI8vPbko66FEPAsyAxL59aidOnXunrq+mGD9GbqXvh/kok9eAOaIMCOBre9EnNMwrKNLg== 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)(20161123564025)(20161123560025)(20161123562025)(6072148); SRVR:VI1PR0802MB2349; BCL:0; PCL:0; RULEID:; SRVR:VI1PR0802MB2349; x-forefront-prvs: 01480965DA x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(6009001)(7916002)(54534003)(377424004)(199003)(189002)(39410400001)(33656002)(305945005)(102836003)(7736002)(54356999)(76176999)(76576001)(7846002)(8676002)(39450400002)(8936002)(81156014)(81166006)(9686002)(5660300001)(101416001)(7696004)(50986999)(6506006)(74316002)(38730400001)(77096006)(68736007)(229853002)(3280700002)(189998001)(2900100001)(3660700001)(3900700001)(97736004)(4326007)(4001150100001)(106116001)(5001770100001)(3846002)(450100001)(39850400001)(92566002)(39860400001)(106356001)(2950100002)(105586002)(66066001)(122556002)(39840400001)(6116002)(6636002)(2906002)(86362001); DIR:OUT; SFP:1101; SCL:1; SRVR:VI1PR0802MB2349; H:VI1PR0802MB2621.eurprd08.prod.outlook.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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: 06 Dec 2016 15:03:40.9912 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR0802MB2349 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"