From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by sourceware.org (Postfix) with ESMTP id 066143858CDB for ; Sun, 5 Nov 2023 18:45:31 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 066143858CDB Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=arm.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=arm.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 066143858CDB Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=217.140.110.172 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699209932; cv=none; b=CtWMTscj9koQqvbxrv1wR8UN9unEam5/x/g4PqCmT/mxx9MksClV9BDFEkDN9oomOjqUNXzoXm6QpViE+wLbcIwTxPiPE//TFtrMjqqEiwmqQMKPq1Ac1M/WwxsCWaBO/iGhr9L0mVEFL29SRMjLPhRR9e8cT6VhSxSJq810c8A= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1699209932; c=relaxed/simple; bh=e8lglSt8tKBb/QESGTYRg4YZoj3xArdmzKRegSr+P04=; h=From:To:Subject:Date:Message-ID:MIME-Version; b=V7EUXOjIsXxMZR7b+pBvtqAi+4SQpsNd3t7AJtpeBgU6Gjv3cWWmf+s3fV1ZNrUol4BkNOst8d0X0y7bq7khzZ9ks2+Wo3WxnImkr9j+iWYfdzL67X7Ka+OkCV0DVyJnWana3xrDmt5SAsQOG65MVprFZQNEvEqPq9EeQA3DqKY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 880CFC15; Sun, 5 Nov 2023 10:46:14 -0800 (PST) Received: from localhost (e121540-lin.manchester.arm.com [10.32.110.72]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPSA id 40EFC3F703; Sun, 5 Nov 2023 10:45:30 -0800 (PST) From: Richard Sandiford To: gcc-patches@gcc.gnu.org Mail-Followup-To: gcc-patches@gcc.gnu.org,jlaw@ventanamicro.com, richard.sandiford@arm.com Subject: [PATCH 00/12] Tweaks and extensions to the mode-switching pass cc: jlaw@ventanamicro.com Date: Sun, 05 Nov 2023 18:45:29 +0000 Message-ID: User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Status: No, score=-17.4 required=5.0 tests=BAYES_00,KAM_DMARC_NONE,KAM_DMARC_STATUS,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This series of patches extends the mode-switching pass so that it can be used for AArch64's SME. I wondered about including a detailed description of how the SME mode changes work, but it'd probably be a distraction. The system is quite complex and target-specific, and hopefully the details aren't necessary to understand the motivation. One of the main requirements for one of the mode-switched "entities" is that the current mode must always be known at compile time. It would be too cumbersome to work out the current mode at runtime and make a dynamic choice about what to do. The entity therefore wants the usual LCM placement where possible, but would rather have redundant mode transitions than transitions from unknown modes. In many cases, the modified pass seems to generate optimal or near-optimal mode-switching code, even with these additional requirements. Tests are included with the SME work. Bootstrapped & regression-tested on aarch64-linux-gnu and x86_64-linux-gnu, although only the latter is useful since AArch64 doesn't yet use the pass. Also tested by building crosses for epiphany-elf, riscv64-elf and sh-linux-gnu, to pick one triplet per other target that uses mode switching. OK to install? Thanks, Richard Richard Sandiford (12): mode-switching: Tweak the macro/hook documentation mode-switching: Add note problem mode-switching: Avoid quadractic list operation mode-switching: Fix the mode passed to the emit hook mode-switching: Simplify recording of transparency mode-switching: Tweak entry/exit handling mode-switching: Allow targets to set the mode for EH handlers mode-switching: Pass set of live registers to the needed hook mode-switching: Pass the set of live registers to the after hook mode-switching: Use 1-based edge aux fields mode-switching: Add a target-configurable confluence operator mode-switching: Add a backprop hook gcc/config/epiphany/epiphany-protos.h | 7 +- gcc/config/epiphany/epiphany.cc | 7 +- gcc/config/epiphany/mode-switch-use.cc | 2 +- gcc/config/i386/i386.cc | 4 +- gcc/config/riscv/riscv.cc | 4 +- gcc/config/sh/sh.cc | 9 +- gcc/doc/tm.texi | 126 ++++-- gcc/doc/tm.texi.in | 32 +- gcc/mode-switching.cc | 582 +++++++++++++++++++++---- gcc/target.def | 103 ++++- 10 files changed, 714 insertions(+), 162 deletions(-) -- 2.25.1