From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 24108 invoked by alias); 17 Dec 2013 10:40:57 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 24098 invoked by uid 89); 17 Dec 2013 10:40:57 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.4 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,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; Tue, 17 Dec 2013 10:40:56 +0000 Received: from cam-owa2.Emea.Arm.com (fw-tnat.cambridge.arm.com [217.140.96.21]) by service87.mimecast.com; Tue, 17 Dec 2013 10:40:53 +0000 Received: from e106375-lin.cambridge.arm.com ([10.1.255.212]) by cam-owa2.Emea.Arm.com with Microsoft SMTPSVC(6.0.3790.3959); Tue, 17 Dec 2013 10:40:53 +0000 From: James Greenhalgh To: gcc-patches@gcc.gnu.org Cc: richard.earnshaw@arm.com, ramana.radhakrishnan@arm.com Subject: [Patch ARM] Add big.LITTLE tuning options Date: Tue, 17 Dec 2013 10:40:00 -0000 Message-Id: <1387276843-21770-1-git-send-email-james.greenhalgh@arm.com> MIME-Version: 1.0 X-MC-Unique: 113121710405300501 Content-Type: multipart/mixed; boundary="------------1.8.3-rc0" X-IsSubscribed: yes X-SW-Source: 2013-12/txt/msg01475.txt.bz2 This is a multi-part message in MIME format. --------------1.8.3-rc0 Content-Type: text/plain; charset=UTF-8; format=fixed Content-Transfer-Encoding: quoted-printable Content-length: 1483 Hi, This patch series adds machinery and functionality to enable tuning for big.LITTLE systems when compiling for the ARM target. We take the convention for names to -mcpu that for some big.LITTLE system where the big core is 'x' and the little core is 'y', the -mcpu name will be x.y In order to acheive that, we must first tweak some infrastructure. First, in order to reduce coupling between assembler versions, we must add name rewriting for the -mcpu command. big.LITTLE systems use architecturally compatible cores, so we can be sure that if we are asked to assemble for cortex-a15.cortex-a7, then we can also assemble for cortex-a15. Thus, we choose to truncate at the first '.' delimiter between core names. The ARM backend presently carries the limitation that each entry in arm-cores.def must provide a unique 'tuning' target. This is restrictive and would require constant churn modifications to the scheduler descriptions to add each big.LITTLE flavour which is released. We modify this infrastructure to still carry a unique identifier, but also to carry a potentially shared sheduling identifier. The final 3 patches add support for new -mcpu values: cortex-a15.cortex-a7, cortex-a57, cortex-a57.cortex-a53. The series has been regression tested and built on a number of configurations, bootstrapped with option --with-cpu=3Dcortex-a15.cortex-a7 and benchmarked on an Cortex-A15 based system and a Cortex-A7 base system with no regressions. OK? Thanks, James= --------------1.8.3-rc0--