Re: [PATCH v4 04/12] RISC-V: drop FCVT.Q.L{,U} forms with rounding mode operand
Nelson Chu <[email protected]> Mon, 27 Jul 2026 09:26:54 +0800
| Newsgroups | gmane.comp.gnu.binutils |
|---|---|
| Message-ID | <CAHT-pJy4t7r=seZ2qG7zV6VY-2bFvZz0r_UBOjusXWmEKXg4dw@mail.gmail.com> |
On Fri, Jul 24, 2026 at 6:03 PM Jan Beulich <[email protected]> wrote: > > Like FCVT.D.W{,U} and FCVT.Q.W{,U} these also are unaffected by rounding > mode, and hence allowing for a respective operand is bogus. (Otherwise > MASK_RM should also be used in the match field for the respectively other > forms.) I checked the spec, https://docs.riscv.org/reference/isa/v20260120/unpriv/q-st-ext.html#quad-compute, the fcvt.q.l/lu always produce an exact result and are unaffected by rounding mode. You are right, allowing RM operands for them is unnecessary. > --- a/opcodes/riscv-opc.c > +++ b/opcodes/riscv-opc.c > @@ -1189,9 +1189,7 @@ const struct riscv_opcode riscv_opcodes[ > {"fcvt.lu.q", 64, INSN_CLASS_Q_INX, "d,S", MATCH_FCVT_LU_Q|MASK_RM, MASK_FCVT_LU_Q|MASK_RM, match_opcode, 0 }, > {"fcvt.lu.q", 64, INSN_CLASS_Q_INX, "d,S,m", MATCH_FCVT_LU_Q, MASK_FCVT_LU_Q, match_opcode, 0 }, > {"fcvt.q.l", 64, INSN_CLASS_Q_INX, "D,s", MATCH_FCVT_Q_L, MASK_FCVT_Q_L|MASK_RM, match_opcode, 0 }, > -{"fcvt.q.l", 64, INSN_CLASS_Q_INX, "D,s,m", MATCH_FCVT_Q_L, MASK_FCVT_Q_L, match_opcode, 0 }, > {"fcvt.q.lu", 64, INSN_CLASS_Q_INX, "D,s", MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU|MASK_RM, match_opcode, 0 }, > -{"fcvt.q.lu", 64, INSN_CLASS_Q_INX, "D,s,m", MATCH_FCVT_Q_LU, MASK_FCVT_Q_LU, match_opcode, 0 }, > > /* Compressed instructions. */ > {"c.unimp", 0, INSN_CLASS_ZCA, "", 0, 0xffffU, match_opcode, 0 }, Since gas/testcase/gas/riscv/zqinx don't use rm operand for them (of course since that's illegal), so removing them from the opcode table should be enough. Looks good, thanks. Nelson