| Message ID | 20260525133052.1885254-1-luiss@synopsys.com |
|---|---|
| Headers |
Return-Path: <binutils-bounces~patchwork=sourceware.org@sourceware.org> X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id D026F4BAD160 for <patchwork@sourceware.org>; Mon, 25 May 2026 13:33:11 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org D026F4BAD160 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=pfptdkimsnps header.b=J8yYAJLk; dkim=pass (2048-bit key, unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=KfbM9F6n X-Original-To: binutils@sourceware.org Delivered-To: binutils@sourceware.org Received: from mx0a-00230701.pphosted.com (mx0a-00230701.pphosted.com [148.163.156.19]) by sourceware.org (Postfix) with ESMTPS id B4C484BA9013 for <binutils@sourceware.org>; Mon, 25 May 2026 13:31:19 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org B4C484BA9013 Authentication-Results: sourceware.org; dmarc=pass (p=quarantine dis=none) header.from=synopsys.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=synopsys.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org B4C484BA9013 Authentication-Results: sourceware.org; arc=none smtp.remote-ip=148.163.156.19 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1779715880; cv=none; b=sRgPsr4fXoz+hIAhuBwLVn28EnJJ6eKVgPmAuxk4cKmiPd314PP1/NTeaawgACwAg2NMDz+f7ZnUJEkkaF2bXdT9oLgAxiiG8gi2Gr6KiRjZowaItfnLeX+ksWsURK9IJEBuJN2BoY/5NBP4tYxEBOLtQFhxJHRg+qU1YY2snS0= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1779715880; c=relaxed/simple; bh=BguX1f43R0tYOalzfeKgieH/uZq7IW0PrtFNHlB56NM=; h=DKIM-Signature:DKIM-Signature:From:To:Subject:Date:Message-Id: MIME-Version; b=JXdSqpDYHL4HPVibJcG3UDlOXVZ0Fg6Cq3ah5XmtfCpZaDr2l/xVET6V39pPINcKir86cMjGVuSt/fS08tWTkNwxtmTb8zhxK01FajacZPDurS9NU4U/FSb2bZcXYxVchSdAmTjz+zl0Dzd4ruO8uv9gbejQlmC+oUffmqx+uXY= ARC-Authentication-Results: i=1; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=pfptdkimsnps header.b=J8yYAJLk; dkim=pass (2048-bit key, unprotected) header.d=synopsys.com header.i=@synopsys.com header.a=rsa-sha256 header.s=mail header.b=KfbM9F6n DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B4C484BA9013 Received: from pps.filterd (m0297266.ppops.net [127.0.0.1]) by mx0a-00230701.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 64PAUAno3903781; Mon, 25 May 2026 06:31:11 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=synopsys.com; h= cc:content-transfer-encoding:date:from:message-id:mime-version :subject:to; s=pfptdkimsnps; bh=89IK8GYAnx6M5lIrIbCt3vh8GoNm2Ffs 10utItskL7Y=; b=J8yYAJLkV9xPwGWMQtWRNZobiiAnQJNo0rBp4i25PwoUE+k0 aO8BVPyagYiKaJzK4t11en3MOAi0XaNeh2ByTm5AqxCAPrFM8fuZMG6OWgigbkin WOUUmNOLHALakTGIvRK7wULSzIqoLOXACxfPtahgwKfSAlCe+pDVM0mXc8wSkA7h H/LRzRBZXFlu5kCuGnqBRH/H62S+sPfNLT7fSP1/ePSXg0sb/dA3hQnyFkZ5yM22 v0cULgWEoLIpyXAqmunF0nm5rUO34uaH9s6tUq3UggJJp9OPrVhISGnycctBXWau 93Pmo2UsFY4DghS5rCjJ65ZRx6n0o2r26G3xuA== Received: from smtprelay-out1.synopsys.com (smtprelay-out1.synopsys.com [149.117.87.133]) by mx0a-00230701.pphosted.com (PPS) with ESMTPS id 4ebbg5aw73-1 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT); Mon, 25 May 2026 06:31:11 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=synopsys.com; s=mail; t=1779715871; bh=BguX1f43R0tYOalzfeKgieH/uZq7IW0PrtFNHlB56NM=; h=From:To:Cc:Subject:Date:From; b=KfbM9F6nkndFoO/7TJ57nkxGqldW9Aj2A/amK74UhH6rMUKu+gbduXcv7k/t1Qunj Qy22pJQpGO7CtPCIWPhPOUDv70qSfwL9p22c5USwkJJxXK+thD/OBqZuwFb3qrhcVu YQHRdsqbaRXWjrfaiFPWtrzqXRcDBHTiPZ9rznraNbdBTn18G8LDcxbSVpgapgEp3M HkNWmtn4CE6Ekv+SNMC7TNcoFM8g46YR9RMvaswjs5IlwybwY+kBvyQIjxglKvqdmh TNq3HD81Wh2wjX6LW1NuYxNpREJTnldPGLP1ZgWjJa3zhxU5jglZ3ReozxkJ44F1cr bj9BaoAqnV4ow== Received: from mailhost.synopsys.com (badc-mailhost1.synopsys.com [10.192.0.17]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) client-signature RSA-PSS (2048 bits)) (Client CN "mailhost.synopsys.com", Issuer "SNPSica2" (verified OK)) by smtprelay-out1.synopsys.com (Postfix) with ESMTPS id C78A9402D6; Mon, 25 May 2026 13:31:09 +0000 (UTC) Received: from us01arcgnu3.internal.synopsys.com (unknown [10.194.34.166]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (Client did not present a certificate) by mailhost.synopsys.com (Postfix) with ESMTPSA id 6E47BA00C3; Mon, 25 May 2026 13:31:09 +0000 (UTC) X-SNPS-Relay: synopsys.com From: Luis Silva <Luis.Silva1@synopsys.com> To: binutils@sourceware.org Cc: Palmer Dabbelt <palmer@dabbelt.com>, Andrew Waterman <andrew@sifive.com>, Jim Wilson <jim.wilson.gcc@gmail.com>, Nelson Chu <nelson.chu1990@gmail.com>, Kito Cheng <kito.cheng@gmail.com>, Jeff Law <jeffreyalaw@gmail.com>, Alex Turjan <Alex.Turjan@synopsys.com>, Luis Silva <luismgsilva@outlook.com> Subject: [PATCH 0/2] RISC-V: Add ARC-V APEX assembler and disassembler support Date: Mon, 25 May 2026 06:30:50 -0700 Message-Id: <20260525133052.1885254-1-luiss@synopsys.com> X-Mailer: git-send-email 2.34.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwNTI1MDEzOCBTYWx0ZWRfX2k8kpHX8zahY orYUXNqUXtrw8NhaKZBkegDUTawdq+EZfWEEnzQq8Z61vmLthpVNsTk2uMWgfGSl1F4FVf6rS7w Tcy+N4rtSRvv8VG4hmA4/xK55LZ/kMtiOXtyAboiFzPgKm8mirfnrgToyP4fAxeaK+1RjX+dKHS 6OX756ULwL2D50DLQg4LUQ2h4Se9JXJnKzEiTJe0J4CVdnrOcRGSJ+X4AJJcJRCfqR5vadcxyoq iAIziszsZsoDT8q1yoV/ecSkTNGoCML7+Su3qgQX7f2PRJCwGgW4LOoX2puSUdrzYMa5dqGhNtb MiMf/g+KDOEd4mF3xy9Jc8Ix332xRjylIDyQZqmdXKYlekrsSOK7Zz3pNtLrL3Ho8C9DR6erNeN 9XK2qDZzDMdfZgfsmX4mZS2i0+i8IwjxZNQPXTKAxMsN4mNdYJqk0NN5DkRpWLmkjPl4+a+RaYs 0bjIoAqZfeEL8lsxq/Q== X-Proofpoint-GUID: NDcIB8UrcpDG_vr7bgUv9yTgg2gGK938 X-Authority-Analysis: v=2.4 cv=cKTQdFeN c=1 sm=1 tr=0 ts=6a144f1f cx=c_pps a=t4gDRyhI9k+KZ5gXRQysFQ==:117 a=t4gDRyhI9k+KZ5gXRQysFQ==:17 a=NGcC8JguVDcA:10 a=qPHU084jO2kA:10 a=VkNPw1HP01LnGYTKEx00:22 a=tU_645BZ7FZt8VqRJtHG:22 a=Wo6YDfOMAEstGd-0DxeT:22 a=vnREMb7VAAAA:8 a=lwZnCcY4U-tziaqPjhgA:9 X-Proofpoint-ORIG-GUID: NDcIB8UrcpDG_vr7bgUv9yTgg2gGK938 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-05-25_04,2026-05-18_01,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_active_cloned_notspam policy=outbound_active_cloned score=0 spamscore=0 lowpriorityscore=0 impostorscore=0 clxscore=1011 priorityscore=1501 malwarescore=0 phishscore=0 suspectscore=0 bulkscore=0 adultscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2605130000 definitions=main-2605250138 X-Spam-Status: No, score=-5.5 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, RCVD_IN_DNSWL_BLOCKED, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_NONE, TXREP shortcircuit=no autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Binutils mailing list <binutils.sourceware.org> List-Unsubscribe: <https://sourceware.org/mailman/options/binutils>, <mailto:binutils-request@sourceware.org?subject=unsubscribe> List-Archive: <https://sourceware.org/pipermail/binutils/> List-Post: <mailto:binutils@sourceware.org> List-Help: <mailto:binutils-request@sourceware.org?subject=help> List-Subscribe: <https://sourceware.org/mailman/listinfo/binutils>, <mailto:binutils-request@sourceware.org?subject=subscribe> Errors-To: binutils-bounces~patchwork=sourceware.org@sourceware.org |
| Series |
RISC-V: Add ARC-V APEX assembler and disassembler support
|
|
Message
Luis Silva
May 25, 2026, 1:30 p.m. UTC
This series adds assembler and disassembler support for ARC-V APEX (ARC Processor EXtension) custom instructions on RISC-V. This work was presented at the GNU Cauldron 2025. - https://www.youtube.com/watch?v=jHfxkAN3Qtw Jeff Law and Kito Cheng attended the presentation and are CC'd on this series. APEX allows users to dynamically define instructions that encode into the Custom-0 major opcode space (opcode 0x0b). Rather than extending the static opcode table, instructions are declared at assembly time via a new .extInstruction directive: .extInstruction <name>, <sub_opcode>, <format>[, <attributes>] Four instruction formats are supported: - XD: 3-register, 8-bit sub-opcode (up to 256 instructions) - XS: 2-register + 8-bit signed immediate, 6-bit sub-opcode (up to 64) - XI: 1-register + 12-bit signed immediate, 5-bit sub-opcode (up to 32) - XC: rd==rs1 variant of XI, 5-bit sub-opcode (up to 32) XS and XC can be paired so the assembler automatically selects the encoding based on operand constraints. To preserve instruction definitions through linking, the assembler emits a metadata record for each .extInstruction into a COMDAT ELF section named .riscvapex.<fmt>.<major>.<sub_opcode>. The disassembler reads these sections at startup, reconstructs the opcode entries, and falls back to them when the standard opcode table produces no match. The directive syntax, instruction formats, and metadata representation in this RISCV-V APEX port are intentionally aligned with existing proprietary compiler and architecture to maintain compatibility across toolchains. Patch 1 adds the assembler: .extInstruction parsing, validation, encoding, and metadata emission, along with documentation and tests (4 positive + 10 negative cases). Patch 2 adds the disassembler: metadata deserialization, dynamic opcode reconstruction, and APEX-specific decode path, plus 2 linker tests verifying metadata sections survive linking. Tested with the gas, ld and gdb testsuites for riscv-elf targets. Luis Silva (2): RISC-V: Add ARC-V APEX assembler support RISC-V: Add ARC-V APEX disassembler support gas/config/tc-riscv.c | 631 ++++++++++++++++++ gas/doc/c-riscv.texi | 53 ++ gas/testsuite/gas/riscv/x-arcv-apex-01.d | 18 + gas/testsuite/gas/riscv/x-arcv-apex-01.s | 19 + gas/testsuite/gas/riscv/x-arcv-apex-02.d | 13 + gas/testsuite/gas/riscv/x-arcv-apex-02.s | 6 + gas/testsuite/gas/riscv/x-arcv-apex-03.d | 46 ++ gas/testsuite/gas/riscv/x-arcv-apex-04.d | 15 + gas/testsuite/gas/riscv/x-arcv-apex-04.s | 10 + gas/testsuite/gas/riscv/x-arcv-apex-fail-01.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-01.l | 2 + gas/testsuite/gas/riscv/x-arcv-apex-fail-01.s | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-02.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-02.l | 5 + gas/testsuite/gas/riscv/x-arcv-apex-fail-02.s | 3 + gas/testsuite/gas/riscv/x-arcv-apex-fail-03.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-03.l | 9 + gas/testsuite/gas/riscv/x-arcv-apex-fail-03.s | 12 + gas/testsuite/gas/riscv/x-arcv-apex-fail-04.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-04.l | 3 + gas/testsuite/gas/riscv/x-arcv-apex-fail-04.s | 2 + gas/testsuite/gas/riscv/x-arcv-apex-fail-05.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-05.l | 3 + gas/testsuite/gas/riscv/x-arcv-apex-fail-05.s | 3 + gas/testsuite/gas/riscv/x-arcv-apex-fail-06.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-06.l | 7 + gas/testsuite/gas/riscv/x-arcv-apex-fail-06.s | 7 + gas/testsuite/gas/riscv/x-arcv-apex-fail-07.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-07.l | 9 + gas/testsuite/gas/riscv/x-arcv-apex-fail-07.s | 9 + gas/testsuite/gas/riscv/x-arcv-apex-fail-08.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-08.l | 5 + gas/testsuite/gas/riscv/x-arcv-apex-fail-08.s | 7 + gas/testsuite/gas/riscv/x-arcv-apex-fail-09.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-09.l | 3 + gas/testsuite/gas/riscv/x-arcv-apex-fail-09.s | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-10.d | 1 + gas/testsuite/gas/riscv/x-arcv-apex-fail-10.l | 3 + gas/testsuite/gas/riscv/x-arcv-apex-fail-10.s | 2 + include/opcode/riscv.h | 74 ++ ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp | 10 + ld/testsuite/ld-riscv-elf/x-arcv-apex-01-a.s | 8 + ld/testsuite/ld-riscv-elf/x-arcv-apex-01-b.s | 21 + ld/testsuite/ld-riscv-elf/x-arcv-apex-01-c.s | 21 + ld/testsuite/ld-riscv-elf/x-arcv-apex-01.d | 32 + ld/testsuite/ld-riscv-elf/x-arcv-apex-02.d | 36 + opcodes/riscv-dis.c | 269 ++++++++ opcodes/riscv-opc.c | 140 ++++ 48 files changed, 1528 insertions(+) create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-01.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-01.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-02.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-02.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-03.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-04.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-04.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-01.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-01.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-01.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-02.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-02.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-02.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-03.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-03.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-03.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-04.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-04.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-04.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-05.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-05.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-05.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-06.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-06.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-06.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-07.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-07.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-07.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-08.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-08.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-08.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-09.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-09.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-09.s create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-10.d create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-10.l create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-10.s create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01-a.s create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01-b.s create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01-c.s create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01.d create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-02.d
Comments
Hi Luis: I like this approach in general, but I would like to discuss that on toolchain sig meeting to make sure we can reaching a consensus for that between LLVM and GNU community, also make it standardize before we moving forward. Do you have interested to present that and create a PR to https://github.com/riscv-non-isa/riscv-c-api-doc to start the discussion? also it would be nice if you can present that on toolchain sig meeting :) Luis Silva <Luis.Silva1@synopsys.com> 於 2026年5月25日週一 下午9:31寫道: > > This series adds assembler and disassembler support for ARC-V APEX > (ARC Processor EXtension) custom instructions on RISC-V. > > This work was presented at the GNU Cauldron 2025. > - https://www.youtube.com/watch?v=jHfxkAN3Qtw > > Jeff Law and Kito Cheng attended the presentation and are CC'd on this > series. > > APEX allows users to dynamically define instructions that encode into the > Custom-0 major opcode space (opcode 0x0b). Rather than extending the > static opcode table, instructions are declared at assembly time via a new > .extInstruction directive: > > .extInstruction <name>, <sub_opcode>, <format>[, <attributes>] > > Four instruction formats are supported: > > - XD: 3-register, 8-bit sub-opcode (up to 256 instructions) > - XS: 2-register + 8-bit signed immediate, 6-bit sub-opcode (up to 64) > - XI: 1-register + 12-bit signed immediate, 5-bit sub-opcode (up to 32) > - XC: rd==rs1 variant of XI, 5-bit sub-opcode (up to 32) > > XS and XC can be paired so the assembler automatically selects the > encoding based on operand constraints. > > To preserve instruction definitions through linking, the assembler emits > a metadata record for each .extInstruction into a COMDAT ELF section > named .riscvapex.<fmt>.<major>.<sub_opcode>. The disassembler reads > these sections at startup, reconstructs the opcode entries, and falls > back to them when the standard opcode table produces no match. > > The directive syntax, instruction formats, and metadata representation > in this RISCV-V APEX port are intentionally aligned with existing > proprietary compiler and architecture to maintain compatibility across > toolchains. > > Patch 1 adds the assembler: .extInstruction parsing, validation, > encoding, and metadata emission, along with documentation and tests > (4 positive + 10 negative cases). > > Patch 2 adds the disassembler: metadata deserialization, dynamic opcode > reconstruction, and APEX-specific decode path, plus 2 linker tests > verifying metadata sections survive linking. > > Tested with the gas, ld and gdb testsuites for riscv-elf targets. > > Luis Silva (2): > RISC-V: Add ARC-V APEX assembler support > RISC-V: Add ARC-V APEX disassembler support > > gas/config/tc-riscv.c | 631 ++++++++++++++++++ > gas/doc/c-riscv.texi | 53 ++ > gas/testsuite/gas/riscv/x-arcv-apex-01.d | 18 + > gas/testsuite/gas/riscv/x-arcv-apex-01.s | 19 + > gas/testsuite/gas/riscv/x-arcv-apex-02.d | 13 + > gas/testsuite/gas/riscv/x-arcv-apex-02.s | 6 + > gas/testsuite/gas/riscv/x-arcv-apex-03.d | 46 ++ > gas/testsuite/gas/riscv/x-arcv-apex-04.d | 15 + > gas/testsuite/gas/riscv/x-arcv-apex-04.s | 10 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-01.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-01.l | 2 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-01.s | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-02.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-02.l | 5 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-02.s | 3 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-03.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-03.l | 9 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-03.s | 12 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-04.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-04.l | 3 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-04.s | 2 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-05.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-05.l | 3 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-05.s | 3 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-06.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-06.l | 7 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-06.s | 7 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-07.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-07.l | 9 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-07.s | 9 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-08.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-08.l | 5 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-08.s | 7 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-09.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-09.l | 3 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-09.s | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-10.d | 1 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-10.l | 3 + > gas/testsuite/gas/riscv/x-arcv-apex-fail-10.s | 2 + > include/opcode/riscv.h | 74 ++ > ld/testsuite/ld-riscv-elf/ld-riscv-elf.exp | 10 + > ld/testsuite/ld-riscv-elf/x-arcv-apex-01-a.s | 8 + > ld/testsuite/ld-riscv-elf/x-arcv-apex-01-b.s | 21 + > ld/testsuite/ld-riscv-elf/x-arcv-apex-01-c.s | 21 + > ld/testsuite/ld-riscv-elf/x-arcv-apex-01.d | 32 + > ld/testsuite/ld-riscv-elf/x-arcv-apex-02.d | 36 + > opcodes/riscv-dis.c | 269 ++++++++ > opcodes/riscv-opc.c | 140 ++++ > 48 files changed, 1528 insertions(+) > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-01.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-01.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-02.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-02.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-03.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-04.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-04.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-01.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-01.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-01.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-02.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-02.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-02.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-03.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-03.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-03.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-04.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-04.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-04.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-05.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-05.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-05.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-06.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-06.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-06.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-07.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-07.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-07.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-08.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-08.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-08.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-09.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-09.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-09.s > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-10.d > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-10.l > create mode 100644 gas/testsuite/gas/riscv/x-arcv-apex-fail-10.s > create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01-a.s > create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01-b.s > create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01-c.s > create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-01.d > create mode 100644 ld/testsuite/ld-riscv-elf/x-arcv-apex-02.d > > -- > 2.34.0
>Hi Luis: >I like this approach in general, but I would like to discuss that on toolchain sig meeting to make sure we can reaching a consensus for >that between LLVM and GNU community, also make it standardize before we moving forward. >Do you have interested to present that and create a PR to https://urldefense.com/v3/__https://github.com/riscv-non-isa/riscv-c-api-doc__;!!A4F2R9G_pg!aYag73swD7mc2NMIkBCavNj1MeY51Dbt3JrAzKctCsxFbxWIGeOCdwEAwCytpP0sRiJcAFkiF4WFrHxWx37Ms8k$ to >start the discussion? also it would be nice if you can present that on toolchain sig meeting :) Repeating my reply on gcc mailing list here: Hi Kito, Thank you for the positive feedback! I'd be happy to present this at the toolchain SIG meeting and have further discussion. Best regards, Luis