From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-sender-0.a4lg.com (mail-sender-0.a4lg.com [IPv6:2401:2500:203:30b:4000:6bfe:4757:0]) by sourceware.org (Postfix) with ESMTPS id 813573858C83 for ; Mon, 7 Feb 2022 10:17:58 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 813573858C83 Message-ID: <9e7d82cd-20c0-2f59-a106-a7712c47e5b9@irq.a4lg.com> Date: Mon, 7 Feb 2022 19:17:55 +0900 Mime-Version: 1.0 Subject: Re: [PATCH 0/1] RISC-V: Fix RV32Q conflict Content-Language: en-US To: Jan Beulich Cc: binutils@sourceware.org References: From: Tsukasa OI In-Reply-To: Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Spam-Status: No, score=-6.9 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, KAM_LOTSOFHASH, SPF_HELO_NONE, SPF_PASS, TXREP, T_SCC_BODY_TEXT_LINE autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: binutils@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Binutils mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 07 Feb 2022 10:18:00 -0000 On 2022/02/07 16:48, Jan Beulich wrote: > On 07.02.2022 04:31, Tsukasa OI via Binutils wrote: >> This commit allows combination of RV32 + 'Q' extension (IEEE 754 >> binary128 floating point number support). >> >> This combination is no longer prohibited by the ISA Manual. >> >> This restriction is introduced in binutils' RV32E support commit >> 7f99954970001cfc1b155d877ac2966d77e2c647. At that time, >> the latest ratified version of the RISC-V ISA Manual (version 2.2) >> stated that 'Q' extension requires RV64IFD. >> >> However, the next ratified version of the RISC-V ISA Manual >> (20190608-Base-Ratified) removed such limitation. > > Ah yes, one of the anomalies I did notice a while ago and didn't get > around to writing mail about, yet. A related anomaly looks to be that > RV32E excludes F, without me being able to find respective wording in > the spec. ISA Manual, version 2.2 (3.3. RV32E Extensions): > RV32E can be extended with the M, A, and C user-level standard > extensions. Yes, it prohibits (not only but including) F standard extension. ISA Manual, version 20190608-Base-Ratified (4.2. RV32E Instruction Set): > RV32E can be combined with all current standard extensions. Defining > the F, D, and Q extensions as having a 16-entry floating point > register file when combined with RV32E was considered but decided > against. To support systems with reduced floating-point register > state, we intend to define a “Zfinx” extension (...cont...) It seems... not intended but not directly prohibited either? Still, there is an ABI conflict between RV32E and use of floating point registers so (even if not prohibited) it wouldn't be the same as this patchset (cf. riscv_set_abi_by_arch function in gas/config/tc-riscv.c). Tsukasa > > Jan > >> I did check the version of 'Q' extension (RV32Q is allowed on 'Q' >> extension version 2.2 or later) but it may be too pedant. >> >> This is because change (removal of RV64IFD dependency) seemed irrevant >> to version changes but only a part of "embellishment" process as >> described by riscv-isa-manual commit >> 013ba6dc8a504ee4ad7bee42554fecaef7ba797f. >> >> Quoting preface of 20190608-Base-Ratified (would analogously to 'Q'), >> >>> Incremented the version numbers of the F and D extensions to 2.2, >>> reflecting that version 2.1 changed the canonical NaN, and version 2.2 >>> defined the NaN-boxing scheme and changed the definition of the FMIN >>> and FMAX instructions. >> >> Not checking the version number (just allowing RV32Q entirely) may be >> an option. >> >> >> References: >> >> GNU Binutils: >> Commit 7f99954970001cfc1b155d877ac2966d77e2c647 >> >> >> The RISC-V ISA Manual: >> version 2.2 >> >> version 20190608-Base-Ratified >> >> commit 013ba6dc8a504ee4ad7bee42554fecaef7ba797f: >> >> >> >> >> >> Tsukasa OI (1): >> RISC-V: Fix RV32Q conflict >> >> bfd/elfxx-riscv.c | 5 +++-- >> 1 file changed, 3 insertions(+), 2 deletions(-) >> >> >> base-commit: 6a9d08661b361e497baa76dd6d8685f2cb593adb >