{"id":2231309,"url":"http://patchwork.ozlabs.org/api/patches/2231309/?format=json","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=json","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=json","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=json","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"]}