From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-ej1-x62d.google.com (mail-ej1-x62d.google.com [IPv6:2a00:1450:4864:20::62d]) by sourceware.org (Postfix) with ESMTPS id A65E53857B88 for ; Sun, 18 Sep 2022 07:24:01 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org A65E53857B88 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-x62d.google.com with SMTP id kr11so11842945ejc.8 for ; Sun, 18 Sep 2022 00:24:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=vrull.eu; s=google; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date; bh=meE+D+cHYemXlV3oBN6cg8dYYklYbn86RdZFlQKBNVc=; b=O5ooltpFDeXUc0NY7I/O7GpTYgh5YPQOwdhKyzCtraSBj0PzZC8bgsHKZjOWgcnaed TxgJOAZkqJzrAo08bl+wdij9uK9+NBobrVtjxKIuEJ7Kr4RT5UhJTWoRCeSBj0JckJ1b 47IfxpqmZPAJMTwNGOq9xAEXp0illA6v3nNMRUayt1B82ae8TPxuR5MMkDc9NXgRxuKk OQq0wbgViFuQS/2CZA4G/QEbx7o/U2ySwh4V8dwF06E6+i2E7S8cxU6RbM0nu+yVQ/S3 Gd3MWAITwL8CYb10QRxHzfhyYCjbOTxEOsHxlAYxLvFRlmcvfHQPzz5SmBTzp+UXSxlS vhng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date; bh=meE+D+cHYemXlV3oBN6cg8dYYklYbn86RdZFlQKBNVc=; b=Mt0jHdQNHAt++2WRD5lJH5H8nGx12wIc60M8XDzlflCRweJ4IHH3q4Xk3S6ngnP55Z hsP10NVvHS34+2TJlXR7X/BVCzKvNqwaKZnGMnq0GPhOGyG6tLZ9HrKt43lvewpdpWuL SYdnSXQ8kPQVkT8rgF/XwUwVsyPXJGiEzlu74NIfv4WEwW/0DS1U/A7ye/pwcoIzZfmI fL8kyMMtHg7O0r/88Aum5L0cuyF3Qq61EOmCJGC2qDdBS4cm4svdq87XmZpQaiD+Co+M WXnM9pDY2K3GE2jxe1jOx11PsRp1zRpcJ/LUC1Gl6RsSrZN0pzn+xuSkNT5LuS5ACS/p Licw== X-Gm-Message-State: ACrzQf0eqtFoh5QNTmx/+lvn3F9BM/9D14jBPbaOGSeWqqtSq10TBa5I KiqfJBZr0Hu8wi+7wKoEqmPerRSWIxBoTHGv X-Google-Smtp-Source: AMsMyM5h1pR8R1GbtHhyQpiDhb+VjUiTXUEhdvZt20oORWBrUKlhoopDn7gx7qnEKw0n080KHCkL9Q== X-Received: by 2002:a17:907:3f11:b0:77d:c6da:bade with SMTP id hq17-20020a1709073f1100b0077dc6dabademr9199920ejc.382.1663485840065; Sun, 18 Sep 2022 00:24:00 -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 e24-20020a170906315800b0073d15dfdc09sm13754108eje.11.2022.09.18.00.23.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 18 Sep 2022 00:23:59 -0700 (PDT) From: Christoph Muellner To: binutils@sourceware.org, Nelson Chu , Kito Cheng , Jim Wilson , Philipp Tomsich , Palmer Dabbelt , Cooper Qu , Lifang Xia , Yunhai Shang , Zhiwei Liu Cc: =?UTF-8?q?Christoph=20M=C3=BCllner?= Subject: [PATCH v2 00/11] Add support for the T-Head vendor extensions Date: Sun, 18 Sep 2022 09:23:45 +0200 Message-Id: <20220918072356.2496130-1-christoph.muellner@vrull.eu> X-Mailer: git-send-email 2.37.2 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.4 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,JMQ_SPF_NEUTRAL,KAM_MANYTO,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP 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: From: Christoph Müllner This series introduces support for the T-Head vendor extensions, which are implemented e.g. in the XuanTie C906 and XuanTie C910 processors: * XTheadBa * XTheadBb * XTheadBs * XTheadCmo * XTheadCondMov * XTheadFMemIdx * XTheadMac * XTheadMemIdx * XTheadMemPair * XTheadSync The xthead* extensions are documented here: https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.0.0/xthead-2022-09-05-2.0.0.pdf The "th." instruction prefix prevents future conflicts with standard extensions and has been documentented in the RISC-V toolchain conventions: https://github.com/riscv-non-isa/riscv-toolchain-conventions/pull/19 The goal of this patchset is to provide access to these instructions so that compilers/users can optimize SW accordingly. Note, that the T-Head vendor extensions do not contain all vendor-specific functionality of the T-Head SoCs (e.g. no vendor-specific CSRs are included). Instead the extensions cover coherent functionality, that is exposed to S and U mode. The patchset attempts to minimize code changes in generic/infrastructure code. All patches in this series come with tests to avoid future regressions. v2: * Drop -mcpu= support patches * Add extensions to riscv_multi_subset_supports_ext * Rename operand 'L' to 'Xl' Christoph Müllner (11): RISC-V: Add generic support for vendor extensions RISC-V: Add T-Head CMO vendor extension RISC-V: Add T-Head SYNC vendor extension RISC-V: Add support for arbitrary immediate encoding formats RISC-V: Add T-Head Bitmanip vendor extension RISC-V: Add T-Head CondMov vendor extension RISC-V: Add T-Head MAC vendor extension RISC-V: Add T-Head FMemIdx vendor extension RISC-V: Add T-Head MemIdx vendor extension RISC-V: Add support for literal instruction arguments RISC-V: Add T-Head MemPair vendor extension bfd/elfxx-riscv.c | 59 +++- gas/config/tc-riscv.c | 84 +++++ gas/doc/c-riscv.texi | 63 ++++ gas/testsuite/gas/riscv/x-thead-ba-fail.d | 3 + gas/testsuite/gas/riscv/x-thead-ba-fail.l | 3 + gas/testsuite/gas/riscv/x-thead-ba-fail.s | 3 + gas/testsuite/gas/riscv/x-thead-ba.d | 13 + gas/testsuite/gas/riscv/x-thead-ba.s | 6 + gas/testsuite/gas/riscv/x-thead-bb-fail.d | 3 + gas/testsuite/gas/riscv/x-thead-bb-fail.l | 7 + gas/testsuite/gas/riscv/x-thead-bb-fail.s | 7 + gas/testsuite/gas/riscv/x-thead-bb.d | 30 ++ gas/testsuite/gas/riscv/x-thead-bb.s | 22 ++ gas/testsuite/gas/riscv/x-thead-bs-fail.d | 3 + gas/testsuite/gas/riscv/x-thead-bs-fail.l | 3 + gas/testsuite/gas/riscv/x-thead-bs-fail.s | 3 + gas/testsuite/gas/riscv/x-thead-bs.d | 14 + gas/testsuite/gas/riscv/x-thead-bs.s | 6 + gas/testsuite/gas/riscv/x-thead-cmo-fail.d | 3 + gas/testsuite/gas/riscv/x-thead-cmo-fail.l | 22 ++ gas/testsuite/gas/riscv/x-thead-cmo-fail.s | 22 ++ gas/testsuite/gas/riscv/x-thead-cmo.d | 30 ++ gas/testsuite/gas/riscv/x-thead-cmo.s | 22 ++ gas/testsuite/gas/riscv/x-thead-condmov.d | 11 + gas/testsuite/gas/riscv/x-thead-condmov.s | 3 + .../gas/riscv/x-thead-fmemidx-fail.d | 3 + .../gas/riscv/x-thead-fmemidx-fail.l | 18 + .../gas/riscv/x-thead-fmemidx-fail.s | 17 + gas/testsuite/gas/riscv/x-thead-fmemidx.d | 25 ++ gas/testsuite/gas/riscv/x-thead-fmemidx.s | 17 + gas/testsuite/gas/riscv/x-thead-mac.d | 15 + gas/testsuite/gas/riscv/x-thead-mac.s | 7 + gas/testsuite/gas/riscv/x-thead-memidx-fail.d | 3 + gas/testsuite/gas/riscv/x-thead-memidx-fail.l | 14 + gas/testsuite/gas/riscv/x-thead-memidx-fail.s | 14 + gas/testsuite/gas/riscv/x-thead-memidx.d | 53 +++ gas/testsuite/gas/riscv/x-thead-memidx.s | 48 +++ .../gas/riscv/x-thead-mempair-fail.d | 3 + .../gas/riscv/x-thead-mempair-fail.l | 30 ++ .../gas/riscv/x-thead-mempair-fail.s | 30 ++ gas/testsuite/gas/riscv/x-thead-mempair.d | 14 + gas/testsuite/gas/riscv/x-thead-mempair.s | 6 + gas/testsuite/gas/riscv/x-thead-sync-fail.d | 3 + gas/testsuite/gas/riscv/x-thead-sync-fail.l | 6 + gas/testsuite/gas/riscv/x-thead-sync-fail.s | 6 + gas/testsuite/gas/riscv/x-thead-sync.d | 14 + gas/testsuite/gas/riscv/x-thead-sync.s | 6 + include/opcode/riscv-opc.h | 326 ++++++++++++++++++ include/opcode/riscv.h | 27 ++ opcodes/riscv-dis.c | 43 +++ opcodes/riscv-opc.c | 155 +++++++++ 51 files changed, 1346 insertions(+), 2 deletions(-) create mode 100644 gas/testsuite/gas/riscv/x-thead-ba-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-ba-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-ba-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-ba.d create mode 100644 gas/testsuite/gas/riscv/x-thead-ba.s create mode 100644 gas/testsuite/gas/riscv/x-thead-bb-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-bb-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-bb-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-bb.d create mode 100644 gas/testsuite/gas/riscv/x-thead-bb.s create mode 100644 gas/testsuite/gas/riscv/x-thead-bs-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-bs-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-bs-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-bs.d create mode 100644 gas/testsuite/gas/riscv/x-thead-bs.s create mode 100644 gas/testsuite/gas/riscv/x-thead-cmo-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-cmo-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-cmo-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-cmo.d create mode 100644 gas/testsuite/gas/riscv/x-thead-cmo.s create mode 100644 gas/testsuite/gas/riscv/x-thead-condmov.d create mode 100644 gas/testsuite/gas/riscv/x-thead-condmov.s create mode 100644 gas/testsuite/gas/riscv/x-thead-fmemidx-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-fmemidx-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-fmemidx-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-fmemidx.d create mode 100644 gas/testsuite/gas/riscv/x-thead-fmemidx.s create mode 100644 gas/testsuite/gas/riscv/x-thead-mac.d create mode 100644 gas/testsuite/gas/riscv/x-thead-mac.s create mode 100644 gas/testsuite/gas/riscv/x-thead-memidx-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-memidx-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-memidx-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-memidx.d create mode 100644 gas/testsuite/gas/riscv/x-thead-memidx.s create mode 100644 gas/testsuite/gas/riscv/x-thead-mempair-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-mempair-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-mempair-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-mempair.d create mode 100644 gas/testsuite/gas/riscv/x-thead-mempair.s create mode 100644 gas/testsuite/gas/riscv/x-thead-sync-fail.d create mode 100644 gas/testsuite/gas/riscv/x-thead-sync-fail.l create mode 100644 gas/testsuite/gas/riscv/x-thead-sync-fail.s create mode 100644 gas/testsuite/gas/riscv/x-thead-sync.d create mode 100644 gas/testsuite/gas/riscv/x-thead-sync.s -- 2.37.2