Message ID | 20230428061210.2988035-1-christoph.muellner@vrull.eu |
---|---|
Headers |
Return-Path: <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from server2.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 019193856DE0 for <patchwork@sourceware.org>; Fri, 28 Apr 2023 06:12:34 +0000 (GMT) X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-ej1-x630.google.com (mail-ej1-x630.google.com [IPv6:2a00:1450:4864:20::630]) by sourceware.org (Postfix) with ESMTPS id A033A3858CDA for <gcc-patches@gcc.gnu.org>; Fri, 28 Apr 2023 06:12:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org A033A3858CDA Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=vrull.eu Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=vrull.eu Received: by mail-ej1-x630.google.com with SMTP id a640c23a62f3a-953343581a4so1446260266b.3 for <gcc-patches@gcc.gnu.org>; Thu, 27 Apr 2023 23:12:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; t=1682662334; x=1685254334; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=TnbD6pS8PI1PlB8PbXdXkfBiRAkxZeDyTsRvAGqVIQE=; b=a78cXtTcHThFa+A4fN1UI+Y161SkHglC/SyqegWmP5Ko/WezU980mK3P0GFghevTMb tflnDet5HoHJ+OSVwcyuteBlJcUQwtxYZI92VpmGUyawF4jxPhmNgS/Ib1TFyzMNqTv2 5IeNIzwcKgpFBqMJwlid3X/zO+P4g37NqfDEkBQKO6ZHwLWamT2zdr3hpDnShkmf2scu OkjYykt/dLS1DzvjK323bMhfmzXyl8eDJzVn1KPpkdf9h7bw40GC9oLOabGrd7WDxlx+ /YhgKhw8cRuccOA/FMWjYgDC60P4Vr3bmjlAAQHlclK36dqCg75oXP6U99fIyLj9jNZW fFtw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1682662334; x=1685254334; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=TnbD6pS8PI1PlB8PbXdXkfBiRAkxZeDyTsRvAGqVIQE=; b=WKVGwjHieXz1Ne0Ylfbumv3BZXIQrQxjI43N+OePTiDYPQnDgxo1Lana1johmbKpre dI62Qz5CoGD68qkpDIh461uwL84W9/0jskBnSjc470TUpfZGM+EOrQE3YxskUKovisvP Y8QxjzUZVVM84IGk8MCL+9KAtq645BjaEYUDxhI54PUrRNovVq7S9K2ga++tegjNJFnf yNp9mrV84GGF0jJ5S0RhZs0x6yFVOkhua8UPNlg+bs7LIZ/12ro78Oe4EJfl3wQTUuUJ 6Cf4eoXZvwTPNM4q/+MZW0jVZQ6OoEewicqSwZWteHEuGau+0NU3HEycl5LuYfw3a1xW NuBw== X-Gm-Message-State: AC+VfDyb842lJ7PTNHNXlRQJfObYAOKMU3E04VM6kl4a7NNxT+KPWvyB ywpdQLto9kn967f9/oGZz5c5HyBYlo0MRvBVnno= X-Google-Smtp-Source: ACHHUZ5HhUpBm6PPOeCIU9n3+pjJACHAg9LR2TqE+Fv46E8UwFoKCqY7UQudI9zmeN7hThXz8GB6Zg== X-Received: by 2002:a17:907:1625:b0:94f:8f37:d54 with SMTP id hb37-20020a170907162500b0094f8f370d54mr3791076ejc.44.1682662333684; Thu, 27 Apr 2023 23:12:13 -0700 (PDT) Received: from beast.fritz.box (62-178-148-172.cable.dynamic.surfer.at. [62.178.148.172]) by smtp.gmail.com with ESMTPSA id x20-20020aa7d394000000b00504803f4071sm8669431edq.44.2023.04.27.23.12.12 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 27 Apr 2023 23:12:12 -0700 (PDT) From: Christoph Muellner <christoph.muellner@vrull.eu> To: gcc-patches@gcc.gnu.org, Kito Cheng <kito.cheng@sifive.com>, Jim Wilson <jim.wilson.gcc@gmail.com>, Palmer Dabbelt <palmer@dabbelt.com>, Andrew Waterman <andrew@sifive.com>, Philipp Tomsich <philipp.tomsich@vrull.eu>, Cooper Qu <cooper.qu@linux.alibaba.com>, Lifang Xia <lifang_xia@linux.alibaba.com>, Yunhai Shang <yunhai@linux.alibaba.com>, Zhiwei Liu <zhiwei_liu@linux.alibaba.com> Cc: =?utf-8?q?Christoph_M=C3=BCllner?= <christoph.muellner@vrull.eu> Subject: [PATCH 00/11] Improvements for XThead* support Date: Fri, 28 Apr 2023 08:12:01 +0200 Message-Id: <20230428061210.2988035-1-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.40.1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.6 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, JMQ_SPF_NEUTRAL, KAM_MANYTO, KAM_SHORT, RCVD_IN_DNSWL_NONE, SPF_HELO_NONE, SPF_PASS, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list <gcc-patches.gcc.gnu.org> List-Unsubscribe: <https://gcc.gnu.org/mailman/options/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=unsubscribe> List-Archive: <https://gcc.gnu.org/pipermail/gcc-patches/> List-Post: <mailto:gcc-patches@gcc.gnu.org> List-Help: <mailto:gcc-patches-request@gcc.gnu.org?subject=help> List-Subscribe: <https://gcc.gnu.org/mailman/listinfo/gcc-patches>, <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe> Errors-To: gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org Sender: "Gcc-patches" <gcc-patches-bounces+patchwork=sourceware.org@gcc.gnu.org> |
Series |
Improvements for XThead* support
|
|
Message
Christoph Müllner
April 28, 2023, 6:12 a.m. UTC
From: Christoph Müllner <christoph.muellner@vrull.eu>
This series improves the support for the XThead* ISA extensions
which are available e.g. on the T-Head XuanTie C906.
The ISA spec can be found here:
https://github.com/T-head-Semi/thead-extension-spec
So far the following extension support has been merged in GCC:
* XTheadBa
* XTheadBb
* XTheadBs
* XTheadCmo
* XTheadCondMov
* XTheadMemPair
This patchset builds upon that and contains the following changes:
* Fix for sign/zero extension support for th.ext and th.extu
This is actually a resend, that has not been merged.
Jeff Law acked the patch last Friday.
* Fix for CFA reg notes creation
* Small fix for documentation of th_mempair_order_operands()
* Introduction of Xmode macro
* Two non-functional preparation commits for additional addressing modes
* A patch that moves XThead* specific peephole passes in its own file
* Support for XTheadMemIdx and its addressing modes
* Support for XTheadFMemIdx, which is similar to XTheadMemIdx
All patches have been tested and don't introduce regressions
for RV32 or RV64. The patches have also been tested with
SPEC CPU2017 on QEMU (multiple combinations of extensions).
Support patches of these extensions for Binutils, QEMU, and
LLVM have already been merged in the corresponding upstream
projects.
Support patches for XTheadMemIdx and XTheadFMemIdx have been
submitted in an earlier series as well and received a couple of
rework-comments from Kito. We rewrote the whole support to
better meet the (reasonable) goal of keeping vendor extension
code separated from RISC-V standard code and to address other issues.
The resulting code is structured much better, which can be seen
in the small number of changes that are required for the last patch
(XTheadFMemIdx support).
Christoph Müllner (11):
riscv: xtheadbb: Add sign/zero extension support for th.ext and
th.extu
riscv: xtheadmempair: Fix CFA reg notes
riscv: xtheadmempair: Fix doc for th_mempair_order_operands()
riscv: thead: Adjust constraints of th_addsl INSN
riscv: Simplify output of MEM addresses
riscv: Define Xmode macro
riscv: Move address classification info types to riscv-protos.h
riscv: Prepare backend for index registers
riscv: thead: Factor out XThead*-specific peepholes
riscv: thead: Add support for the XTheadMemIdx ISA extension
riscv: thead: Add support for the XTheadFMemIdx ISA extension
gcc/config/riscv/constraints.md | 24 +
gcc/config/riscv/peephole.md | 56 --
gcc/config/riscv/riscv-protos.h | 74 +++
gcc/config/riscv/riscv.cc | 87 ++-
gcc/config/riscv/riscv.h | 13 +-
gcc/config/riscv/riscv.md | 26 +-
gcc/config/riscv/thead-peephole.md | 292 ++++++++++
gcc/config/riscv/thead.cc | 506 +++++++++++++++++-
gcc/config/riscv/thead.md | 240 ++++++++-
.../gcc.target/riscv/xtheadbb-ext-1.c | 67 +++
.../gcc.target/riscv/xtheadbb-extu-1.c | 67 +++
.../riscv/xtheadfmemidx-index-update.c | 20 +
.../xtheadfmemidx-index-xtheadbb-update.c | 20 +
.../riscv/xtheadfmemidx-index-xtheadbb.c | 22 +
.../gcc.target/riscv/xtheadfmemidx-index.c | 22 +
.../riscv/xtheadfmemidx-uindex-update.c | 20 +
.../xtheadfmemidx-uindex-xtheadbb-update.c | 20 +
.../riscv/xtheadfmemidx-uindex-xtheadbb.c | 24 +
.../gcc.target/riscv/xtheadfmemidx-uindex.c | 25 +
.../gcc.target/riscv/xtheadmemidx-helpers.h | 222 ++++++++
.../riscv/xtheadmemidx-index-update.c | 27 +
.../xtheadmemidx-index-xtheadbb-update.c | 27 +
.../riscv/xtheadmemidx-index-xtheadbb.c | 36 ++
.../gcc.target/riscv/xtheadmemidx-index.c | 36 ++
.../riscv/xtheadmemidx-modify-xtheadbb.c | 74 +++
.../gcc.target/riscv/xtheadmemidx-modify.c | 74 +++
.../riscv/xtheadmemidx-uindex-update.c | 27 +
.../xtheadmemidx-uindex-xtheadbb-update.c | 27 +
.../riscv/xtheadmemidx-uindex-xtheadbb.c | 44 ++
.../gcc.target/riscv/xtheadmemidx-uindex.c | 44 ++
30 files changed, 2146 insertions(+), 117 deletions(-)
create mode 100644 gcc/config/riscv/thead-peephole.md
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadbb-ext-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadbb-extu-1.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index-xtheadbb-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index-xtheadbb.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex-xtheadbb-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex-xtheadbb.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-helpers.h
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index-xtheadbb-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index-xtheadbb.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-modify-xtheadbb.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-modify.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex-xtheadbb-update.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex-xtheadbb.c
create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex.c
Comments
Feel free to just commit those patch got approved, I think last two patch will take longer time to review than others :P On Fri, Apr 28, 2023 at 2:12 PM Christoph Muellner <christoph.muellner@vrull.eu> wrote: > > From: Christoph Müllner <christoph.muellner@vrull.eu> > > This series improves the support for the XThead* ISA extensions > which are available e.g. on the T-Head XuanTie C906. > > The ISA spec can be found here: > https://github.com/T-head-Semi/thead-extension-spec > > So far the following extension support has been merged in GCC: > * XTheadBa > * XTheadBb > * XTheadBs > * XTheadCmo > * XTheadCondMov > * XTheadMemPair > > This patchset builds upon that and contains the following changes: > * Fix for sign/zero extension support for th.ext and th.extu > This is actually a resend, that has not been merged. > Jeff Law acked the patch last Friday. > * Fix for CFA reg notes creation > * Small fix for documentation of th_mempair_order_operands() > * Introduction of Xmode macro > * Two non-functional preparation commits for additional addressing modes > * A patch that moves XThead* specific peephole passes in its own file > * Support for XTheadMemIdx and its addressing modes > * Support for XTheadFMemIdx, which is similar to XTheadMemIdx > > All patches have been tested and don't introduce regressions > for RV32 or RV64. The patches have also been tested with > SPEC CPU2017 on QEMU (multiple combinations of extensions). > > Support patches of these extensions for Binutils, QEMU, and > LLVM have already been merged in the corresponding upstream > projects. > > Support patches for XTheadMemIdx and XTheadFMemIdx have been > submitted in an earlier series as well and received a couple of > rework-comments from Kito. We rewrote the whole support to > better meet the (reasonable) goal of keeping vendor extension > code separated from RISC-V standard code and to address other issues. > The resulting code is structured much better, which can be seen > in the small number of changes that are required for the last patch > (XTheadFMemIdx support). > > Christoph Müllner (11): > riscv: xtheadbb: Add sign/zero extension support for th.ext and > th.extu > riscv: xtheadmempair: Fix CFA reg notes > riscv: xtheadmempair: Fix doc for th_mempair_order_operands() > riscv: thead: Adjust constraints of th_addsl INSN > riscv: Simplify output of MEM addresses > riscv: Define Xmode macro > riscv: Move address classification info types to riscv-protos.h > riscv: Prepare backend for index registers > riscv: thead: Factor out XThead*-specific peepholes > riscv: thead: Add support for the XTheadMemIdx ISA extension > riscv: thead: Add support for the XTheadFMemIdx ISA extension > > gcc/config/riscv/constraints.md | 24 + > gcc/config/riscv/peephole.md | 56 -- > gcc/config/riscv/riscv-protos.h | 74 +++ > gcc/config/riscv/riscv.cc | 87 ++- > gcc/config/riscv/riscv.h | 13 +- > gcc/config/riscv/riscv.md | 26 +- > gcc/config/riscv/thead-peephole.md | 292 ++++++++++ > gcc/config/riscv/thead.cc | 506 +++++++++++++++++- > gcc/config/riscv/thead.md | 240 ++++++++- > .../gcc.target/riscv/xtheadbb-ext-1.c | 67 +++ > .../gcc.target/riscv/xtheadbb-extu-1.c | 67 +++ > .../riscv/xtheadfmemidx-index-update.c | 20 + > .../xtheadfmemidx-index-xtheadbb-update.c | 20 + > .../riscv/xtheadfmemidx-index-xtheadbb.c | 22 + > .../gcc.target/riscv/xtheadfmemidx-index.c | 22 + > .../riscv/xtheadfmemidx-uindex-update.c | 20 + > .../xtheadfmemidx-uindex-xtheadbb-update.c | 20 + > .../riscv/xtheadfmemidx-uindex-xtheadbb.c | 24 + > .../gcc.target/riscv/xtheadfmemidx-uindex.c | 25 + > .../gcc.target/riscv/xtheadmemidx-helpers.h | 222 ++++++++ > .../riscv/xtheadmemidx-index-update.c | 27 + > .../xtheadmemidx-index-xtheadbb-update.c | 27 + > .../riscv/xtheadmemidx-index-xtheadbb.c | 36 ++ > .../gcc.target/riscv/xtheadmemidx-index.c | 36 ++ > .../riscv/xtheadmemidx-modify-xtheadbb.c | 74 +++ > .../gcc.target/riscv/xtheadmemidx-modify.c | 74 +++ > .../riscv/xtheadmemidx-uindex-update.c | 27 + > .../xtheadmemidx-uindex-xtheadbb-update.c | 27 + > .../riscv/xtheadmemidx-uindex-xtheadbb.c | 44 ++ > .../gcc.target/riscv/xtheadmemidx-uindex.c | 44 ++ > 30 files changed, 2146 insertions(+), 117 deletions(-) > create mode 100644 gcc/config/riscv/thead-peephole.md > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadbb-ext-1.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadbb-extu-1.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index-xtheadbb-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index-xtheadbb.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-index.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex-xtheadbb-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex-xtheadbb.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadfmemidx-uindex.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-helpers.h > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index-xtheadbb-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index-xtheadbb.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-index.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-modify-xtheadbb.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-modify.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex-xtheadbb-update.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex-xtheadbb.c > create mode 100644 gcc/testsuite/gcc.target/riscv/xtheadmemidx-uindex.c > > -- > 2.40.1 >