From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05on2082.outbound.protection.outlook.com [40.107.21.82]) by sourceware.org (Postfix) with ESMTPS id 7F14A385782F for ; Wed, 5 May 2021 13:17:25 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 7F14A385782F Received: from DB6PR07CA0191.eurprd07.prod.outlook.com (2603:10a6:6:42::21) by VI1PR08MB3535.eurprd08.prod.outlook.com (2603:10a6:803:81::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.39; Wed, 5 May 2021 13:17:23 +0000 Received: from DB5EUR03FT037.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:42:cafe::a6) by DB6PR07CA0191.outlook.office365.com (2603:10a6:6:42::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.8 via Frontend Transport; Wed, 5 May 2021 13:17:23 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; gcc.gnu.org; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;gcc.gnu.org; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by DB5EUR03FT037.mail.protection.outlook.com (10.152.20.215) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4108.25 via Frontend Transport; Wed, 5 May 2021 13:17:22 +0000 Received: ("Tessian outbound e566ed09e411:v91"); Wed, 05 May 2021 13:17:22 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 354d71c1ba3b3447 X-CR-MTA-TID: 64aa7808 Received: from ad1648ada1f9.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id BC471717-5213-4BBE-BA54-D933F4C6BC15.1; Wed, 05 May 2021 13:17:16 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id ad1648ada1f9.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Wed, 05 May 2021 13:17:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dXdO0gx29kkvzcWFi9ASlPbQpKig+zuPutqjQ07qaOAdym+86vXyAkT3L5D50OhtLyAgqmlVoIz5efbH90rHChYeCTvRqTsQRM3jIJLm7f4SuwhcLcEb4oBprlyHCEyFNDraoBK/U1H37yWY1Kk6RCiJS4znIaFIsp4EXzhAbina6wLCmJRcYM6YdrHiGsEgwTx64hTuTRDZP7AzqHkjOINBrFtcOTYBYszHjrI3VHymxgGHU92UMseCpqAR8wAzeM9bKdHCdtm+uF41u4qiClaR8i+DH2i52pFUDzwHLGQDUj9T/jNtjkas358Vk+hbn1wCaEvW8wjGnYk9vO1E9w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=yhg+XonIYDwh+EjT9Kc3ZUvZd3e7P/CQUGw8mujiUDY=; b=Dw9n7EDseXddufm0H0rWTVsDewr8Ay9eDcbH2CHy7SZQ+98A/4obK+x7nO2oa46MzZn1JI9F9K4RzvyPt2aCpCBVNtKBTKAh9FV2lTbksuPdiIscOkv1C5sfNLD5UIYmDWAJ97oe2pPeMoEpRbN5+wwjWpchjl0hngorJ+gfq7GHG0Omtlh1/q285QzYoM18WLZVhIxeHdEoSesrcx9JM5+vlmA3m5F7TT34mOo8QQnbRtsJN55YGGF/qKd/HKPZRQfrMuW6pD9JFwIpAID/vglmopyfLFwh9V/nj1OtFnrL+9HJNdbFx9e2u1IaDZfAGf5Q8c4DUH0qDOIu40fU5g== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none Received: from VE1PR08MB5599.eurprd08.prod.outlook.com (2603:10a6:800:1a1::12) by VE1PR08MB4829.eurprd08.prod.outlook.com (2603:10a6:802:a8::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4087.40; Wed, 5 May 2021 13:17:14 +0000 Received: from VE1PR08MB5599.eurprd08.prod.outlook.com ([fe80::21c8:9d55:dccc:8be9]) by VE1PR08MB5599.eurprd08.prod.outlook.com ([fe80::21c8:9d55:dccc:8be9%7]) with mapi id 15.20.4087.044; Wed, 5 May 2021 13:17:14 +0000 From: Wilco Dijkstra To: GCC Patches CC: Richard Sandiford , Kyrylo Tkachov Subject: [PATCH] AArch64: Improve GOT addressing Thread-Topic: [PATCH] AArch64: Improve GOT addressing Thread-Index: AQHXQbCRUkJYIXYTI0iaP2xDAh40jg== Date: Wed, 5 May 2021 13:17:13 +0000 Message-ID: Accept-Language: en-GB, en-US Content-Language: en-GB X-MS-Has-Attach: X-MS-TNEF-Correlator: Authentication-Results-Original: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; x-originating-ip: [82.24.249.100] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 347d906f-5770-4b3e-b82d-08d90fc81e8a x-ms-traffictypediagnostic: VE1PR08MB4829:|VI1PR08MB3535: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:260;OLM:260; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: xtEsoUwTcdEEx/FEffUYs7yONc4mfUAWPKluCpSqKDTOhE1Bf5PCSUQHlpIW078ick5bxDbWDz0pgeLS1RIwhnmqeMzVx02jRYGpngRAzmxTka1uER/JSkQHLxvimhhD2qLN+txB3UT+7ng4G2qzsXFeH+rmaWxzcC7TbpL8obGWrqFnzO6U1D/T7WAiAcCEz9cQv3EHOMq5/1neqgma5efrQPM6qunsX5WcFs+7llkdBVzw/j519DZRgMaIfUO0+B9M49S7AVhcShckQjpx1n/gm1W99GwPpxO3o0WwbMVRstI4/U1kI9HMw0/wSRQryRwG2wU/w89IjLum5zx3+y+6FWgcuZlyTYfoMltCXPAzbPES4QE+C7EpF2qeGhSYD7mc/FltbQkECIVlDxL0JFrbVkOODsyaN8NCZm/sIKp1QeC25FceT1iv8whKg95a/cL15rR46QeZuGyMnK+66wrXPTbfND5vhnfNMNdGRHeYX5lgSQK1ftmIVFtm2YjsjypTdD4ebbqEmtdjM9UHKvQJsuXWWGNWr79/o1CmdISMqSLX/PgrG0lGtjfmVf1rmLnaiIlX2DR53f8P2yprOjJxNYzotzWu29vXaUBQ/1o= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:VE1PR08MB5599.eurprd08.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(366004)(136003)(39860400002)(376002)(346002)(396003)(38100700002)(8936002)(6506007)(86362001)(71200400001)(2906002)(66446008)(54906003)(7696005)(122000001)(6916009)(26005)(52536014)(4326008)(478600001)(316002)(64756008)(186003)(55016002)(91956017)(76116006)(66946007)(33656002)(5660300002)(8676002)(66556008)(9686003)(66476007); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata: =?iso-8859-1?Q?Y5IzibuhpuT1RFX+4+jJQqziv9bSTgKqj1lzhE3g6vQLD8t6SeIK8DU5KY?= =?iso-8859-1?Q?CzVe6rSIFScfu8zk1Jyaz/3ba0YyUPADPmKJc1nEixtkckk3VyZLtzS9iR?= =?iso-8859-1?Q?OQfoagb8U1tNs2zd0K1BlNoetzP6vel/P5rJtdQtJw9fZ2H8IyF/i8O4O4?= =?iso-8859-1?Q?m5o0KU4y/5v7AIfnNUc3oF4VCvbw1FUGZ7mRV81RzUS80ZNnxi+E6CzP0G?= =?iso-8859-1?Q?drWl6GVNOJ/8Cml2Dedr1xOVPB47RLtIxLETZJn9XIrmXY9C20qMFSejEE?= =?iso-8859-1?Q?mPc4cZ7vEVRYDDearLGgjs7kYTI/F0n/X1g/pEHXOEjQxczyuNPrszeel2?= =?iso-8859-1?Q?OtrcsdCdOeO/vGo04Hlk7VRGwsKH6TPo0NeFpybCmtt1EUAtAL2fhl1tyL?= =?iso-8859-1?Q?Uf7M1h9SlmltdbPmZCx7/mGe4wTHVMkkJT/bP7wP9XsagtTmCkp2REi4yu?= =?iso-8859-1?Q?ZpRv8nD2IZGOywuRRvUuskMeq1ay/B2f7IO8My1Yj3tBfShvIq02GPHIgF?= =?iso-8859-1?Q?m+9GFZAPJou/0lv+Oadb2Z3Grmwy/lLcyMp/EgEz2OFPAby+3dHkpGnP7w?= =?iso-8859-1?Q?Q8FmrvN6f26VFyrLZDnXbL7mcq8TD7D4HcOl1HjB3P50Fz6mGcu5vq+HHJ?= =?iso-8859-1?Q?0Ml/32ETUNGylL9bJjy0MNxoUh+cnHWgcTcJDnn/k0dG9fxmchbt+elx9a?= =?iso-8859-1?Q?HZtxIJbY91RRMabDlpGtgEpcG7SMdPdwRxfihFenpBbSJMGQAfkHCyiUXL?= =?iso-8859-1?Q?H2UCM0VwBDWKLCiBN8Wgjavg7OvjMbtHZznk1LQ8jzhNfhnr7uVHNl8BRv?= =?iso-8859-1?Q?rRkIwnywj+Y8wS7kbARahRyMMWE8fMv+92U+yfFMu67qDf0nmVTWOmDi+c?= =?iso-8859-1?Q?60y+Fqo+/JHtmy6sV9a1TvygVr/ptSI/dx8SKbWZOSRD+iVbE0ke2+9qCi?= =?iso-8859-1?Q?nNregM886YOJT1r+0nKYJfD5p2hoySQUVi2j++xcSSp/BFE6E/gHB5acMg?= =?iso-8859-1?Q?wO4Hxlgk9ldNnPf9G1Y0hoikzOhB85HmqAjpLZ3U6PsutsG5L8bLqIy7Ir?= =?iso-8859-1?Q?3A8dt21F9rv/FPMtMQkKq29OnVyA/ryfJa8FI9vwp/7zCJHdT8QOYCh+YP?= =?iso-8859-1?Q?+Y9w4DejlcRHA0t38lkwAtny9lY11e5t+Lt2bpCoMK/9vvQfwJKz1J/3Rf?= =?iso-8859-1?Q?SD/cmQJHpjRv/TRn+RtV3VehOEovjqiIGQ+qKdPboJzDVBLak9c6Pi6/iy?= =?iso-8859-1?Q?jcuhUHyY254mAGQ1VP9NXkY0XLscc51Y5eeNUw3RiqIUnHPn5q77v/x0sa?= =?iso-8859-1?Q?Iw/Hs4sm/GioeD0M1hi7aAczUFvsDX8t0kacHyu68PzY10k=3D?= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1PR08MB4829 Original-Authentication-Results: gcc.gnu.org; dkim=none (message not signed) header.d=none;gcc.gnu.org; dmarc=none action=none header.from=arm.com; X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: a8fefa61-13f0-4211-3587-08d90fc8193a X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: PqlMnCx2/rP49+FM31xPzcnCUsmiUYL+tR/hv4SiaFhbZMO3aMmV4SQikqmncEcz3Csrip1BLsmh4Va7VYzgtR9aztCL6PIbog9bnoshx+Nn52Iu1FCySPeIIlGAW5x1J/7UVmTc+uABCMN1M0mykJIZmz1P4/5gePlydhcFAi59lTysQK15nHWVue0w8FB2oE6wwvKaeH3L9mpJC93CJ2NUmUrlHR6OQ0eaQgktlUWrgdVZH/nvbtyu5ffCUgREWHW8ART+58/BgJQp4hHhk1nzcM5iGUt4fO+tTOl5hKASoIK1R/bWLE6tuD+V5458Hv+r3Pwf8GparXPvixdlFP27AA+o16g3x2wz3xkC9q/eQeTSgiZSD+gziWyzsnMxN6ztmpmzI9Om55Fpr7wn07j7RCBCcUmje3vhXUMqjTQridTC/P3U24PumpZfUfEv67jhXuQ5k7pHK7uO6MeLrsNNB9BPdkQLkql17RbD+18YqkbEqsNt66Zq+61zvNcaGqWVdxDQ+TCi0Xw46dnLSHt87QhLS9wqJ4y4xG6C7GTinkZ5mcXapugFZPduHhDYFkOHYHtLmLkaDXIfPSA8Hb2ys1yQMsDZDFYrqZUsEAiMSJ6PwQfD/ZNYeyKF7jOFhHIsiGper7H4W5+rPQ1Ij60rEs6x/3kRUaQj5zyVQ6k= X-Forefront-Antispam-Report: CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:; IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com; PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFS:(4636009)(136003)(346002)(376002)(396003)(39860400002)(36840700001)(46966006)(86362001)(8936002)(5660300002)(7696005)(26005)(47076005)(54906003)(36860700001)(81166007)(33656002)(70206006)(6506007)(70586007)(478600001)(82740400003)(356005)(8676002)(52536014)(55016002)(316002)(336012)(186003)(9686003)(6916009)(4326008)(82310400003)(2906002); DIR:OUT; SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 May 2021 13:17:22.9849 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 347d906f-5770-4b3e-b82d-08d90fc81e8a X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123]; Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: DB5EUR03FT037.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB3535 X-Spam-Status: No, score=-12.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, GIT_PATCH_0, KAM_STOCKGEN, RCVD_IN_DNSWL_LOW, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, UNPARSEABLE_RELAY autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 05 May 2021 13:17:27 -0000 =0A= Improve GOT addressing by emitting the instructions as a pair. This reduce= s=0A= register pressure and improves code quality. With -fPIC codesize improves b= y=0A= 0.65% and SPECINT2017 improves by 0.25%.=0A= =0A= Passes bootstrap and regress. OK for commit?=0A= =0A= ChangeLog:=0A= 2021-05-05 Wilco Dijkstra =0A= =0A= * config/aarch64/aarch64.md (ldr_got_small_): Emit ADRP+LDR G= OT sequence.=0A= (ldr_got_small_sidi): Likewise.=0A= * config/aarch64/aarch64.c (aarch64_load_symref_appropriately): Rem= ove tmp_reg.=0A= (aarch64_print_operand): Correctly print got_lo12 in L specifier.= =0A= =0A= ---=0A= =0A= diff --git a/gcc/config/aarch64/aarch64.c b/gcc/config/aarch64/aarch64.c=0A= index 641c83b479e76cbcc75b299eb7ae5f634d9db7cd..32c5c76d3c001a79d2a69b7f824= 3f1f1f605f901 100644=0A= --- a/gcc/config/aarch64/aarch64.c=0A= +++ b/gcc/config/aarch64/aarch64.c=0A= @@ -3625,27 +3625,21 @@ aarch64_load_symref_appropriately (rtx dest, rtx im= m,=0A= =0A= rtx insn;=0A= rtx mem;=0A= - rtx tmp_reg =3D dest;=0A= machine_mode mode =3D GET_MODE (dest);=0A= =0A= - if (can_create_pseudo_p ())=0A= - tmp_reg =3D gen_reg_rtx (mode);=0A= -=0A= - emit_move_insn (tmp_reg, gen_rtx_HIGH (mode, imm));=0A= if (mode =3D=3D ptr_mode)=0A= {=0A= if (mode =3D=3D DImode)=0A= - insn =3D gen_ldr_got_small_di (dest, tmp_reg, imm);=0A= + insn =3D gen_ldr_got_small_di (dest, imm);=0A= else=0A= - insn =3D gen_ldr_got_small_si (dest, tmp_reg, imm);=0A= + insn =3D gen_ldr_got_small_si (dest, imm);=0A= =0A= mem =3D XVECEXP (SET_SRC (insn), 0, 0);=0A= }=0A= else=0A= {=0A= gcc_assert (mode =3D=3D Pmode);=0A= -=0A= - insn =3D gen_ldr_got_small_sidi (dest, tmp_reg, imm);=0A= + insn =3D gen_ldr_got_small_sidi (dest, imm);=0A= mem =3D XVECEXP (XEXP (SET_SRC (insn), 0), 0, 0);=0A= }=0A= =0A= @@ -11019,7 +11013,7 @@ aarch64_print_operand (FILE *f, rtx x, int code)=0A= switch (aarch64_classify_symbolic_expression (x))=0A= {=0A= case SYMBOL_SMALL_GOT_4G:=0A= - asm_fprintf (asm_out_file, ":lo12:");=0A= + asm_fprintf (asm_out_file, ":got_lo12:");=0A= break;=0A= =0A= case SYMBOL_SMALL_TLSGD:=0A= diff --git a/gcc/config/aarch64/aarch64.md b/gcc/config/aarch64/aarch64.md= =0A= index abfd84526745d029ad4953eabad6dd17b159a218..36c5c054f86e9cdd1f0945cdbc1= beb47aa7ad80a 100644=0A= --- a/gcc/config/aarch64/aarch64.md=0A= +++ b/gcc/config/aarch64/aarch64.md=0A= @@ -6705,25 +6705,23 @@ (define_insn "add_losym_"=0A= =0A= (define_insn "ldr_got_small_"=0A= [(set (match_operand:PTR 0 "register_operand" "=3Dr")=0A= - (unspec:PTR [(mem:PTR (lo_sum:PTR=0A= - (match_operand:PTR 1 "register_operand" "r")=0A= - (match_operand:PTR 2 "aarch64_valid_symref" "S")))]=0A= + (unspec:PTR [(mem:PTR (match_operand:PTR 1 "aarch64_valid_symref" "S"))]= =0A= UNSPEC_GOTSMALLPIC))]=0A= ""=0A= - "ldr\\t%0, [%1, #:got_lo12:%c2]"=0A= - [(set_attr "type" "load_")]=0A= + "adrp\\t%0, %A1\;ldr\\t%0, [%0, %L1]"=0A= + [(set_attr "type" "load_")=0A= + (set_attr "length" "8")]=0A= )=0A= =0A= (define_insn "ldr_got_small_sidi"=0A= [(set (match_operand:DI 0 "register_operand" "=3Dr")=0A= (zero_extend:DI=0A= - (unspec:SI [(mem:SI (lo_sum:DI=0A= - (match_operand:DI 1 "register_operand" "r")=0A= - (match_operand:DI 2 "aarch64_valid_symref" "S")))]=0A= + (unspec:SI [(mem:SI (match_operand:DI 1 "aarch64_valid_symref" "S"))]=0A= UNSPEC_GOTSMALLPIC)))]=0A= "TARGET_ILP32"=0A= - "ldr\\t%w0, [%1, #:got_lo12:%c2]"=0A= - [(set_attr "type" "load_4")]=0A= + "adrp\\t%0, %A1\;ldr\\t%w0, [%0, %L1]"=0A= + [(set_attr "type" "load_4")=0A= + (set_attr "length" "8")]=0A= )=0A= =0A= (define_insn "ldr_got_small_28k_"=0A=