Patch Detail
get:
Show a patch.
patch:
Update a patch.
put:
Update a patch.
GET /api/patches/2231309/?format=api
{ "id": 2231309, "url": "http://patchwork.ozlabs.org/api/patches/2231309/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/patch/20260430152418.1455141-1-michiel@synopsys.com/", "project": { "id": 17, "url": "http://patchwork.ozlabs.org/api/projects/17/?format=api", "name": "GNU Compiler Collection", "link_name": "gcc", "list_id": "gcc-patches.gcc.gnu.org", "list_email": "gcc-patches@gcc.gnu.org", "web_url": null, "scm_url": null, "webscm_url": null, "list_archive_url": "", "list_archive_url_format": "", "commit_url_format": "" }, "msgid": "<20260430152418.1455141-1-michiel@synopsys.com>", "list_archive_url": null, "date": "2026-04-30T15:24:18", "name": "[v2] RISC-V: Add Synopsys RHX-100 series pipeline description", "commit_ref": null, "pull_url": null, "state": "new", "archived": false, "hash": "b14fd4ddce5f662eeb62c3f4864571b971b62a25", "submitter": { "id": 93030, "url": "http://patchwork.ozlabs.org/api/people/93030/?format=api", "name": "Michiel Derhaeg", "email": "Michiel.Derhaeg@synopsys.com" }, "delegate": null, "mbox": "http://patchwork.ozlabs.org/project/gcc/patch/20260430152418.1455141-1-michiel@synopsys.com/mbox/", "series": [ { "id": 502325, "url": "http://patchwork.ozlabs.org/api/series/502325/?format=api", "web_url": "http://patchwork.ozlabs.org/project/gcc/list/?series=502325", "date": "2026-04-30T15:24:18", "name": "[v2] RISC-V: Add Synopsys RHX-100 series pipeline description", "version": 2, "mbox": "http://patchwork.ozlabs.org/series/502325/mbox/" } ], "comments": "http://patchwork.ozlabs.org/api/patches/2231309/comments/", "check": "pending", "checks": "http://patchwork.ozlabs.org/api/patches/2231309/checks/", "tags": {}, "related": [], "headers": { "Return-Path": "<gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org>", "X-Original-To": [ "incoming@patchwork.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Delivered-To": [ "patchwork-incoming@legolas.ozlabs.org", "gcc-patches@gcc.gnu.org" ], "Authentication-Results": [ "legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256\n header.s=pfptdkimsnps header.b=uA9MTrWE;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256\n header.s=mail header.b=LPYJUFJ/;\n\tdkim-atps=neutral", "legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=gcc.gnu.org\n (client-ip=38.145.34.32; helo=vm01.sourceware.org;\n envelope-from=gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org;\n receiver=patchwork.ozlabs.org)", "sourceware.org;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256\n header.s=pfptdkimsnps header.b=uA9MTrWE;\n\tdkim=pass (2048-bit key,\n unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256\n header.s=mail header.b=LPYJUFJ/", "sourceware.org; dmarc=pass (p=quarantine dis=none)\n header.from=synopsys.com", "sourceware.org; spf=pass smtp.mailfrom=synopsys.com", "server2.sourceware.org;\n arc=none smtp.remote-ip=148.163.158.9" ], "Received": [ "from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4g5ydz2WkPz1xqf\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 01 May 2026 01:24:54 +1000 (AEST)", "from vm01.sourceware.org (localhost [127.0.0.1])\n\tby sourceware.org (Postfix) with ESMTP id 2FF19436F7DC\n\tfor <incoming@patchwork.ozlabs.org>; Thu, 30 Apr 2026 15:24:52 +0000 (GMT)", "from mx0b-00230701.pphosted.com (mx0b-00230701.pphosted.com\n [148.163.158.9])\n by sourceware.org (Postfix) with ESMTPS id BE778436F7E1\n for <gcc-patches@gcc.gnu.org>; Thu, 30 Apr 2026 15:24:20 +0000 (GMT)", "from pps.filterd (m0098572.ppops.net [127.0.0.1])\n by mx0b-00230701.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id\n 63UEQG833176232; Thu, 30 Apr 2026 08:24:20 -0700", "from smtprelay-out1.synopsys.com (smtprelay-out1.synopsys.com\n [149.117.87.133])\n by mx0b-00230701.pphosted.com (PPS) with ESMTPS id 4dv44ctr1x-1\n (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT);\n Thu, 30 Apr 2026 08:24:19 -0700 (PDT)", "from mailhost.synopsys.com (badc-mailhost1.synopsys.com\n [10.192.0.17])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits)\n client-signature RSA-PSS (2048 bits))\n (Client CN \"mailhost.synopsys.com\", Issuer \"SNPSica2\" (verified OK))\n by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id 13D3140A6E;\n Thu, 30 Apr 2026 15:24:18 +0000 (UTC)", "from us01arcgnu3.synopsys.com (us01arcgnu3.internal.synopsys.com\n [10.194.34.166])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n (Client did not present a certificate)\n by mailhost.synopsys.com (Postfix) with ESMTPS id B28AAA00B1;\n Thu, 30 Apr 2026 15:24:18 +0000 (UTC)", "by us01arcgnu3.synopsys.com (Postfix, from userid 10074339)\n id 7A7EB2441D3CA; Thu, 30 Apr 2026 08:24:18 -0700 (PDT)" ], "DKIM-Filter": [ "OpenDKIM Filter v2.11.0 sourceware.org 2FF19436F7DC", "OpenDKIM Filter v2.11.0 sourceware.org BE778436F7E1" ], "DMARC-Filter": "OpenDMARC Filter v1.4.2 sourceware.org BE778436F7E1", "ARC-Filter": "OpenARC Filter v1.0.0 sourceware.org BE778436F7E1", "ARC-Seal": "i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1777562661; cv=none;\n b=w+B+G5OUt7+YeZ15OkR5gGG9Ws9V7Dqku79Zfl5s1e3y82R2AgEaHMbBjM48U6UhuAPd1tlcfeF1AFsx/eHJuH9J2y7B1tRFQNZu+MFwtgOhCF6Td7XkKOgTsYDGK/NnoTEZOLCbNpZsA0COmzx68SG7ZFVLDZSL8VfcpKl2yQM=", "ARC-Message-Signature": "i=1; a=rsa-sha256; d=sourceware.org; s=key;\n t=1777562661; c=relaxed/simple;\n bh=fY65co2sGMpS+5gEMtaTW17i5GogpS0XxcNwQXP/cpE=;\n h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id:\n MIME-Version;\n b=MLGPDYklQ+EDAMJ+e4BmbFAkCrQEfRph9F7pGiqb4ID7FfTFhrsSzprFKf/DlsvCGhSucRz/XfFBUylcG9+PGePndPUSS5JUD4hs1d2ZaxvPG1nxXVjbNFdEyxwBkMK5q8OKF2RST1/lvK0Om5xz4utckzz3OSjVgEVCvNIwek8=", "ARC-Authentication-Results": "i=1; server2.sourceware.org", "DKIM-Signature": [ "v=1; a=rsa-sha256; c=relaxed/relaxed; d=synopsys.com; h=\n cc:content-transfer-encoding:date:from:message-id:mime-version\n :subject:to; s=pfptdkimsnps; bh=Ra1u9Rc5VWkPoe80wfP2+76coxP8xiew\n TFIzGKt8s7U=; b=uA9MTrWEJ2XmalcjLZnYHfnoXYXhMmBevOliLI+2xWCx3C3Z\n oKLAXvy8xTBLH4Kv3y8OFmcKW4GOUdKwkibPTQcxhg+5DzWCRs8bgnmFIsE3G0jf\n tX1/Yh3yiX5jxk9MywGrZ6WolzxwNENGyKNHJIMT0DDOLnkJfP7r2zGmPZ4Li3VG\n X/Qml9SvaqKSQK4Z2CqBVv+GW3UuCOHlO4Z5XrrCwzBFU/iufP8k1ObDCYzmWf1H\n XSFjGNk6fWljpSCtQAxdo4jlp8DqF3HcusWBJtw88mkXnRneCYdV3JhnQzdph4D+\n inUbWkaBs5q9a3ghulQAv3trKkCMFE0dza3O0Q==", "v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail;\n t=1777562659; bh=fY65co2sGMpS+5gEMtaTW17i5GogpS0XxcNwQXP/cpE=;\n h=From:To:Cc:Subject:Date:From;\n b=LPYJUFJ/85yJMfuhRiTIFddTEjJ6RQGG0Z/yS5kfTB63YlD9ATyVC6sX95qTrhHXt\n oB7dyzVPVsn+WPEaSgakq5IeIMnMJa4mJfMKEgY+1rEyXzkXG/7d34LBj8UoL0MG5j\n YF3ZO360K+0mN8fSOJTK6FqqU9EVaZYBkAIoMSm4EF/fMIQ2wfWjAoA8vXky4Ds/jx\n /mCI9O5fZJOC9g75GiFchxkLeKHzlFHaoWyQXr2A3eu3ISTgnUzGYc8XXAKKaM194p\n h2D1zBxdr1sIhfPYTjc2fw+al9g+Y1fY+5gi9If8ALrweYSv0KDwBMMMQhhTcOF0Ti\n 8jGtdryCAxYDg==" ], "X-SNPS-Relay": "synopsys.com", "From": "Michiel Derhaeg <Michiel.Derhaeg@synopsys.com>", "To": "jeffrey.law@oss.qualcomm.com", "Cc": "gcc-patches@gcc.gnu.org", "Subject": "[PATCH v2] RISC-V: Add Synopsys RHX-100 series pipeline description", "Date": "Thu, 30 Apr 2026 08:24:18 -0700", "Message-Id": "<20260430152418.1455141-1-michiel@synopsys.com>", "X-Mailer": "git-send-email 2.37.1", "MIME-Version": "1.0", "Content-Transfer-Encoding": "8bit", "X-Proofpoint-Spam-Details-Enc": "AW1haW4tMjYwNDMwMDE1OCBTYWx0ZWRfXzDPiSpG++O2t\n rDzJNLA7/gcbx2qTsGSxPue7/nzcTBuD5OWeS1Y1I+ZxKSE9pYkS1tsfcolxVmq6dFsLLa2nLL4\n 90lEIQ+AqW+mgORvXBrA8WKrtbr3ehL0msPBEr0ZgPfQNB0wftYJT7KxdErt97cWlY6Gn9EN6sL\n zDQdqlLQSh8hpnAq1vfVaKJHfxAgEWZPoJsKz57KahzV1OQx87dUmlhs7pDaWhOZYIK5ksIgXNy\n 0LH/jz8zDxPuQMoz3pOxxB0TGD9+54QgfvDYGr/cA2myx0OkG06VwjRtyzgCUGvU+Vg7pnktkMT\n ktd7qPoqSdQoW78+R4bJCocNi8XrOt4coloTK00JvIWLEn1xUGIxL/KcEybye6L2x3q1ZZ1qqsi\n RG8ggJ8Qahwdow1B5aBkLYLtr/iPGfmrc4C0y4ML2eYc6xo014sQ6W6Vlu5gvFpP95kY7Zy/v82\n vVZWvQJWoDS8uAlfddw==", "X-Proofpoint-GUID": "ej9PtAxhl20L7sZwMze1pd_iFUMPmTs7", "X-Proofpoint-ORIG-GUID": "ej9PtAxhl20L7sZwMze1pd_iFUMPmTs7", "X-Authority-Analysis": "v=2.4 cv=HOrz0Itv c=1 sm=1 tr=0 ts=69f37423 cx=c_pps\n a=t4gDRyhI9k+KZ5gXRQysFQ==:117 a=t4gDRyhI9k+KZ5gXRQysFQ==:17\n a=A5OVakUREuEA:10 a=qPHU084jO2kA:10 a=VkNPw1HP01LnGYTKEx00:22\n a=tU_645BZ7FZt8VqRJtHG:22 a=jSPayVjLy6xbsuKauFBc:22 a=mDV3o1hIAAAA:8\n a=N54-gffFAAAA:8 a=jIQo8A4GAAAA:8 a=GFE3Y2LkrE8EIBVwrMIA:9", "X-Proofpoint-Virus-Version": "vendor=baseguard\n engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49\n definitions=2026-04-30_04,2026-04-30_02,2025-10-01_01", "X-Proofpoint-Spam-Details": "rule=outbound_active_cloned_notspam\n policy=outbound_active_cloned score=0 impostorscore=0 malwarescore=0\n spamscore=0 lowpriorityscore=0 adultscore=0 suspectscore=0 priorityscore=1501\n bulkscore=0 clxscore=1015 phishscore=0 classifier=typeunknown authscore=0\n authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1\n engine=8.22.0-2604200000 definitions=main-2604300158", "X-BeenThere": "gcc-patches@gcc.gnu.org", "X-Mailman-Version": "2.1.30", "Precedence": "list", "List-Id": "Gcc-patches mailing list <gcc-patches.gcc.gnu.org>", "List-Unsubscribe": "<https://gcc.gnu.org/mailman/options/gcc-patches>,\n <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>,\n <mailto:gcc-patches-request@gcc.gnu.org?subject=subscribe>", "Errors-To": "gcc-patches-bounces~incoming=patchwork.ozlabs.org@gcc.gnu.org" }, "content": "This patch introduces the pipeline description for the Synopsys RHX-100 series\nprocessor to the RISC-V GCC backend. The RHX-100 features a 10-stage,\ndual-issue, in-order execution pipeline architecture.\n\nIt has support for instruction fusion, which will be addressed by subsequent\npatches. Due to fusion, up to four instructions can be issued in a single\ncycle. It is modeled as four separate pipelines and the issue_rate is set to\nfour.\n\ngcc/ChangeLog:\n\n * config/riscv/riscv-cores.def (RISCV_TUNE): Add arc-v-rhx-100-series.\n * config/riscv/riscv-opts.h (enum riscv_microarchitecture_type): Add\n arcv_rhx100.\n * config/riscv/riscv.cc (arcv_rhx100_tune_info): New riscv_tune_param.\n * config/riscv/riscv.md: Add arcv_rhx100 to tune attribute.\n * doc/riscv-mtune.texi: Add RHX-100 documentation.\n * config/riscv/arcv-rhx100.md: New file.\n\nCo-authored-by: Artemiy Volkov <artemiyv@acm.org>\nCo-authored-by: Luis Silva <luiss@synopsys.com>\nSigned-off-by: Michiel Derhaeg <michiel@synopsys.com>\n---\nv2:\n - Added reservation for missing insn types\n - use_divmod_expansion is set to true in tune_info\n - Reservation for arcv_rhx100_fdivsqrt functional unit is clamped to 7 cycles\n - Don't use nothing*N at the end of reservations\n - Some units/reservations were renamed\n\n gcc/config/riscv/arcv-rhx100.md | 120 +++++++++++++++++++++++++++++++\n gcc/config/riscv/riscv-cores.def | 1 +\n gcc/config/riscv/riscv-opts.h | 1 +\n gcc/config/riscv/riscv.cc | 26 +++++++\n gcc/config/riscv/riscv.md | 4 +-\n gcc/doc/riscv-mtune.texi | 2 +\n 6 files changed, 153 insertions(+), 1 deletion(-)\n create mode 100644 gcc/config/riscv/arcv-rhx100.md", "diff": "diff --git a/gcc/config/riscv/arcv-rhx100.md b/gcc/config/riscv/arcv-rhx100.md\nnew file mode 100644\nindex 00000000000..da46f714db4\n--- /dev/null\n+++ b/gcc/config/riscv/arcv-rhx100.md\n@@ -0,0 +1,120 @@\n+;; DFA scheduling description of the Synopsys RHX-100 cpu\n+;; for GNU C compiler\n+;; Copyright (C) 2026 Free Software Foundation, Inc.\n+\n+;; This file is part of GCC.\n+\n+;; GCC is free software; you can redistribute it and/or modify\n+;; it under the terms of the GNU General Public License as published by\n+;; the Free Software Foundation; either version 3, or (at your option)\n+;; any later version.\n+\n+;; GCC is distributed in the hope that it will be useful,\n+;; but WITHOUT ANY WARRANTY; without even the implied warranty of\n+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n+;; GNU General Public License for more details.\n+\n+;; You should have received a copy of the GNU General Public License\n+;; along with GCC; see the file COPYING3. If not see\n+;; <http://www.gnu.org/licenses/>.\n+\n+(define_automaton \"arcv_rhx100\")\n+\n+(define_cpu_unit \"arcv_rhx100_ALU_A_fuse0_early\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_ALU_A_fuse1_early\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_ALU_B_fuse0_early\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_ALU_B_fuse1_early\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_MPY\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_DIV\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_DMP_fuse0\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_DMP_fuse1\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_fdivsqrt\"\t\"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_issueA_fuse0\" \"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_issueA_fuse1\" \"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_issueB_fuse0\" \"arcv_rhx100\")\n+(define_cpu_unit \"arcv_rhx100_issueB_fuse1\" \"arcv_rhx100\")\n+\n+;; Instruction reservation for arithmetic instructions (pipe A, pipe B).\n+(define_insn_reservation \"arcv_rhx100_alu_early_arith\" 1\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"unknown,move,const,arith,shift,slt,multi,auipc,nop,logical,\\\n+\t\tbitmanip,min,max,minu,maxu,clz,ctz,atomic,\\\n+\t\tcondmove,mvpair,zicond,cpop,clmul,rotate\"))\n+ \"((arcv_rhx100_issueA_fuse0 + arcv_rhx100_ALU_A_fuse0_early) | (arcv_rhx100_issueA_fuse1 + arcv_rhx100_ALU_A_fuse1_early)) | ((arcv_rhx100_issueB_fuse0 + arcv_rhx100_ALU_B_fuse0_early) | (arcv_rhx100_issueB_fuse1 + arcv_rhx100_ALU_B_fuse1_early))\")\n+\n+(define_insn_reservation \"arcv_rhx100_jmp_insn\" 1\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"branch,jump,call,jalr,ret,trap\"))\n+ \"arcv_rhx100_issueA_fuse0 | arcv_rhx100_issueA_fuse1\")\n+\n+(define_insn_reservation \"arcv_rhx100_div_insn\" 12\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"idiv\"))\n+ \"arcv_rhx100_issueA_fuse0 + arcv_rhx100_DIV\")\n+\n+(define_insn_reservation \"arcv_rhx100_mpy_insn\" 4\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"imul\"))\n+ \"arcv_rhx100_issueA_fuse0 + arcv_rhx100_MPY\")\n+\n+(define_insn_reservation \"arcv_rhx100_load_insn\" 3\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"load,fpload\"))\n+ \"(arcv_rhx100_issueB_fuse0 + arcv_rhx100_DMP_fuse0) | (arcv_rhx100_issueB_fuse1 + arcv_rhx100_DMP_fuse1)\")\n+\n+(define_insn_reservation \"arcv_rhx100_store_insn\" 1\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"store,fpstore\"))\n+ \"(arcv_rhx100_issueB_fuse0 + arcv_rhx100_DMP_fuse0) | (arcv_rhx100_issueB_fuse1 + arcv_rhx100_DMP_fuse1)\")\n+\n+;; (soft) floating points\n+(define_insn_reservation \"arcv_rhx100_xfer\" 3\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"mfc,mtc,fcvt,fcvt_i2f,fcvt_f2i,fmove,fcmp\"))\n+ \"(arcv_rhx100_ALU_A_fuse0_early | arcv_rhx100_ALU_B_fuse0_early)\")\n+\n+(define_insn_reservation \"arcv_rhx100_fmul\" 5\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"fadd,fmul,fmadd\"))\n+ \"(arcv_rhx100_ALU_A_fuse0_early | arcv_rhx100_ALU_B_fuse0_early)\")\n+\n+(define_insn_reservation \"arcv_rhx100_fdiv\" 20\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"fdiv,fsqrt\"))\n+ \"arcv_rhx100_fdivsqrt*7\")\n+\n+(define_insn_reservation \"arcv_rhx100_unknown\" 5\n+ (and (eq_attr \"tune\" \"arcv_rhx100\")\n+ (eq_attr \"type\" \"vfwalu,vfwcvtftoi,vrol,vmidx,vext,vaeskf1,vfredo,\n+ vector,sfb_alu,vlds,viminmax,vfcmp,vimov,vsmul,vnclip,\n+ vldm,vsetvl_pre,vwsll,vfmerge,vmffs,vclmul,vmpop,wrfrm,\n+ vsha2ms,vidiv,vfncvtitof,vaesef,vldr,vlsegdox,vfwmul,\n+ vfmul,vfredu,crypto,vmalu,vimul,vghsh,vialu,viwmul,\n+ vfcvtftoi,vaalu,vislide1up,vfcvtitof,vfwcvtftof,vgather,\n+ vaesz,vbrev,vshift,vsha2ch,vssegtux,vssegtox,vcompress,\n+ vcpop,vstux,vfncvtftof,vfrecp,vssegts,sf_vfnrclip,\n+ vstox,vstr,vlsegdff,vired,vimovvx,vislide1down,vclz,\n+ vfwredu,rdvl,vlde,vaesem,vsm3me,vmiota,vldux,vlsegde,\n+ vssegte,vfwmaccbf16,vfwredo,vctz,vsm4k,vsshift,vsts,\n+ vmsfs,vfmovvf,vfslide1down,viwred,vslidedown,vfncvtftoi,\n+ vsm3c,vnshift,vfalu,vfsqrt,wrvxrm,vfmuladd,vmov,vsetvl,\n+ vfclass,vsha2cl,vicmp,vldff,vfdiv,vste,vaeskf2,\n+ vfncvtbf16,vandn,vbrev8,vgmul,vaesdm,vlsegdux,vfsgnj,\n+ vfmov,rdfrm,vlsegds,vclmulh,vimuladd,viwalu,vfwmuladd,\n+ vimerge,vror,rdvlenb,vfwcvtitof,vaesdf,viwmuladd,vrev8,\n+ vsm4r,vsalu,vfminmax,vicalu,vslideup,vldox,vstm,\n+ vfwcvtbf16,vfmovfv,vfslide1up,vimovxv,sf_vc,sf_vqmacc,\n+ sf_vc_se\"))\n+ \"(arcv_rhx100_issueA_fuse0 + arcv_rhx100_issueA_fuse1) | (arcv_rhx100_issueB_fuse0 + arcv_rhx100_issueB_fuse1)\")\n+\n+;; Bypasses\n+(define_bypass 1 \"arcv_rhx100_alu_early_arith\" \"arcv_rhx100_store_insn\" \"riscv_store_data_bypass_p\")\n+\n+(define_bypass 1 \"arcv_rhx100_load_insn\" \"arcv_rhx100_store_insn\" \"riscv_store_data_bypass_p\")\n+(define_bypass 1 \"arcv_rhx100_load_insn\" \"arcv_rhx100_alu_early_arith\")\n+(define_bypass 1 \"arcv_rhx100_load_insn\" \"arcv_rhx100_mpy_insn\")\n+(define_bypass 2 \"arcv_rhx100_load_insn\" \"arcv_rhx100_load_insn\")\n+(define_bypass 1 \"arcv_rhx100_load_insn\" \"arcv_rhx100_div_insn\")\n+\n+(define_bypass 3 \"arcv_rhx100_mpy_insn\" \"arcv_rhx100_mpy_insn\")\n+(define_bypass 3 \"arcv_rhx100_mpy_insn\" \"arcv_rhx100_div_insn\")\ndiff --git a/gcc/config/riscv/riscv-cores.def b/gcc/config/riscv/riscv-cores.def\nindex 79a460f8176..66f1dc70315 100644\n--- a/gcc/config/riscv/riscv-cores.def\n+++ b/gcc/config/riscv/riscv-cores.def\n@@ -51,6 +51,7 @@ RISCV_TUNE(\"xt-c920v2\", generic, generic_ooo_tune_info)\n RISCV_TUNE(\"xiangshan-nanhu\", xiangshan, xiangshan_nanhu_tune_info)\n RISCV_TUNE(\"xiangshan-kunminghu\", xiangshan, generic_ooo_tune_info)\n RISCV_TUNE(\"spacemit-x60\", spacemit_x60, spacemit_x60_tune_info)\n+RISCV_TUNE(\"arc-v-rhx-100-series\", arcv_rhx100, arcv_rhx100_tune_info)\n RISCV_TUNE(\"generic-ooo\", generic_ooo, generic_ooo_tune_info)\n RISCV_TUNE(\"size\", generic, optimize_size_tune_info)\n RISCV_TUNE(\"mips-p8700\", mips_p8700, mips_p8700_tune_info)\ndiff --git a/gcc/config/riscv/riscv-opts.h b/gcc/config/riscv/riscv-opts.h\nindex 1c44bc4e6ec..d4bd4310076 100644\n--- a/gcc/config/riscv/riscv-opts.h\n+++ b/gcc/config/riscv/riscv-opts.h\n@@ -65,6 +65,7 @@ enum riscv_microarchitecture_type {\n andes_23_series,\n andes_45_series,\n spacemit_x60,\n+ arcv_rhx100\n };\n extern enum riscv_microarchitecture_type riscv_microarchitecture;\n \ndiff --git a/gcc/config/riscv/riscv.cc b/gcc/config/riscv/riscv.cc\nindex 97272b4349a..28ec620bf68 100644\n--- a/gcc/config/riscv/riscv.cc\n+++ b/gcc/config/riscv/riscv.cc\n@@ -837,6 +837,32 @@ static const struct riscv_tune_param andes_45_tune_info = {\n true,\t\t\t\t\t\t/* prefer-agnostic. */\n };\n \n+/* Costs to use when optimizing for Synopsys RHX-100. */\n+static const struct riscv_tune_param arcv_rhx100_tune_info = {\n+ {COSTS_N_INSNS (4), COSTS_N_INSNS (5)}, /* fp_add */\n+ {COSTS_N_INSNS (4), COSTS_N_INSNS (5)}, /* fp_mul */\n+ {COSTS_N_INSNS (20), COSTS_N_INSNS (20)}, /* fp_div */\n+ {COSTS_N_INSNS (4), COSTS_N_INSNS (4)}, /* int_mul */\n+ {COSTS_N_INSNS (27), COSTS_N_INSNS (43)}, /* int_div */\n+ 4,\t\t\t\t\t /* issue_rate */\n+ 9,\t\t\t\t\t /* branch_cost */\n+ 2,\t\t\t\t\t /* memory_cost */\n+ 8,\t\t\t\t\t /* fmv_cost */\n+ false,\t\t\t\t /* slow_unaligned_access */\n+ false,\t\t\t\t /* vector_unaligned_access */\n+ true,\t\t\t\t\t /* use_divmod_expansion */\n+ false,\t\t\t\t /* overlap_op_by_pieces */\n+ true,\t\t\t\t\t /* use_zero_stride_load */\n+ false,\t\t\t\t /* speculative_sched_vsetvl */\n+ RISCV_FUSE_NOTHING,\t\t\t /* fusible_ops */\n+ NULL,\t\t\t\t\t /* vector cost */\n+ NULL,\t\t\t\t\t /* function_align */\n+ NULL,\t\t\t\t\t /* jump_align */\n+ NULL,\t\t\t\t\t /* loop_align */\n+ true,\t\t\t\t\t /* prefer-agnostic. */\n+};\n+\n+\n static bool riscv_avoid_shrink_wrapping_separate ();\n static tree riscv_handle_fndecl_attribute (tree *, tree, tree, int, bool *);\n static tree riscv_handle_type_attribute (tree *, tree, tree, int, bool *);\ndiff --git a/gcc/config/riscv/riscv.md b/gcc/config/riscv/riscv.md\nindex 6b5f824109e..6576f1fed0b 100644\n--- a/gcc/config/riscv/riscv.md\n+++ b/gcc/config/riscv/riscv.md\n@@ -679,7 +679,8 @@\n ;; Keep this in sync with enum riscv_microarchitecture.\n (define_attr \"tune\"\n \"generic,sifive_7,sifive_p400,sifive_p600,xiangshan,generic_ooo,mips_p8700,\n- tt_ascalon_d8,andes_25_series,andes_23_series,andes_45_series,spacemit_x60\"\n+ tt_ascalon_d8,andes_25_series,andes_23_series,andes_45_series,spacemit_x60,\n+ arcv_rhx100\"\n (const (symbol_ref \"((enum attr_tune) riscv_microarchitecture)\")))\n \n ;; Describe a user's asm statement.\n@@ -5205,3 +5206,4 @@\n (include \"andes-25-series.md\")\n (include \"andes-45-series.md\")\n (include \"spacemit-x60.md\")\n+(include \"arcv-rhx100.md\")\ndiff --git a/gcc/doc/riscv-mtune.texi b/gcc/doc/riscv-mtune.texi\nindex 6865bd6fbf7..6ceb9a93fac 100644\n--- a/gcc/doc/riscv-mtune.texi\n+++ b/gcc/doc/riscv-mtune.texi\n@@ -52,6 +52,8 @@ particular CPU name. Permissible values for this option are:\n \n @samp{spacemit-x60},\n \n+@samp{arc-v-rhx-100-series},\n+\n @samp{generic-ooo},\n \n @samp{size},\n", "prefixes": [ "v2" ] }