[PATCH] RISC-V: Mark fgt.*/fge.* as instruction alias
Nelson Chu
nelson@rivosinc.com
Tue Apr 29 04:55:28 GMT 2025
I think we will also move the fgt forward to the flt? Otherwise the
aliases and no-alises still do not work as expected.
Nelson
On Tue, Apr 29, 2025 at 11:40 AM Kito Cheng <kito.cheng@sifive.com> wrote:
> They are instruction alias, but not mark correctly, and seems like we
> don't have a good way to verify that since the disassembler doesn't
> disassemble instruction into alias.
>
> [1] https://github.com/riscv-non-isa/riscv-asm-manual/pull/124
> ---
> opcodes/riscv-opc.c | 16 ++++++++--------
> 1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/opcodes/riscv-opc.c b/opcodes/riscv-opc.c
> index e07f72b89f2..6f49fdbaa7c 100644
> --- a/opcodes/riscv-opc.c
> +++ b/opcodes/riscv-opc.c
> @@ -907,8 +907,8 @@ const struct riscv_opcode riscv_opcodes[] =
> {"feq.h", 0, INSN_CLASS_ZFH_INX, "d,S,T", MATCH_FEQ_H,
> MASK_FEQ_H, match_opcode, 0 },
> {"flt.h", 0, INSN_CLASS_ZFH_INX, "d,S,T", MATCH_FLT_H,
> MASK_FLT_H, match_opcode, 0 },
> {"fle.h", 0, INSN_CLASS_ZFH_INX, "d,S,T", MATCH_FLE_H,
> MASK_FLE_H, match_opcode, 0 },
> -{"fgt.h", 0, INSN_CLASS_ZFH_INX, "d,T,S", MATCH_FLT_H,
> MASK_FLT_H, match_opcode, 0 },
> -{"fge.h", 0, INSN_CLASS_ZFH_INX, "d,T,S", MATCH_FLE_H,
> MASK_FLE_H, match_opcode, 0 },
> +{"fgt.h", 0, INSN_CLASS_ZFH_INX, "d,T,S", MATCH_FLT_H,
> MASK_FLT_H, match_opcode, INSN_ALIAS },
> +{"fge.h", 0, INSN_CLASS_ZFH_INX, "d,T,S", MATCH_FLE_H,
> MASK_FLE_H, match_opcode, INSN_ALIAS },
> {"fcvt.l.h", 64, INSN_CLASS_ZFH_INX, "d,S",
> MATCH_FCVT_L_H|MASK_RM, MASK_FCVT_L_H|MASK_RM, match_opcode, 0 },
> {"fcvt.l.h", 64, INSN_CLASS_ZFH_INX, "d,S,m", MATCH_FCVT_L_H,
> MASK_FCVT_L_H, match_opcode, 0 },
> {"fcvt.lu.h", 64, INSN_CLASS_ZFH_INX, "d,S",
> MATCH_FCVT_LU_H|MASK_RM, MASK_FCVT_LU_H|MASK_RM, match_opcode, 0 },
> @@ -990,8 +990,8 @@ const struct riscv_opcode riscv_opcodes[] =
> {"feq.s", 0, INSN_CLASS_F_INX, "d,S,T", MATCH_FEQ_S,
> MASK_FEQ_S, match_opcode, 0 },
> {"flt.s", 0, INSN_CLASS_F_INX, "d,S,T", MATCH_FLT_S,
> MASK_FLT_S, match_opcode, 0 },
> {"fle.s", 0, INSN_CLASS_F_INX, "d,S,T", MATCH_FLE_S,
> MASK_FLE_S, match_opcode, 0 },
> -{"fgt.s", 0, INSN_CLASS_F_INX, "d,T,S", MATCH_FLT_S,
> MASK_FLT_S, match_opcode, 0 },
> -{"fge.s", 0, INSN_CLASS_F_INX, "d,T,S", MATCH_FLE_S,
> MASK_FLE_S, match_opcode, 0 },
> +{"fgt.s", 0, INSN_CLASS_F_INX, "d,T,S", MATCH_FLT_S,
> MASK_FLT_S, match_opcode, INSN_ALIAS },
> +{"fge.s", 0, INSN_CLASS_F_INX, "d,T,S", MATCH_FLE_S,
> MASK_FLE_S, match_opcode, INSN_ALIAS },
> {"fcvt.l.s", 64, INSN_CLASS_F_INX, "d,S",
> MATCH_FCVT_L_S|MASK_RM, MASK_FCVT_L_S|MASK_RM, match_opcode, 0 },
> {"fcvt.l.s", 64, INSN_CLASS_F_INX, "d,S,m", MATCH_FCVT_L_S,
> MASK_FCVT_L_S, match_opcode, 0 },
> {"fcvt.lu.s", 64, INSN_CLASS_F_INX, "d,S",
> MATCH_FCVT_LU_S|MASK_RM, MASK_FCVT_LU_S|MASK_RM, match_opcode, 0 },
> @@ -1049,8 +1049,8 @@ const struct riscv_opcode riscv_opcodes[] =
> {"feq.d", 0, INSN_CLASS_D_INX, "d,S,T", MATCH_FEQ_D,
> MASK_FEQ_D, match_opcode, 0 },
> {"flt.d", 0, INSN_CLASS_D_INX, "d,S,T", MATCH_FLT_D,
> MASK_FLT_D, match_opcode, 0 },
> {"fle.d", 0, INSN_CLASS_D_INX, "d,S,T", MATCH_FLE_D,
> MASK_FLE_D, match_opcode, 0 },
> -{"fgt.d", 0, INSN_CLASS_D_INX, "d,T,S", MATCH_FLT_D,
> MASK_FLT_D, match_opcode, 0 },
> -{"fge.d", 0, INSN_CLASS_D_INX, "d,T,S", MATCH_FLE_D,
> MASK_FLE_D, match_opcode, 0 },
> +{"fgt.d", 0, INSN_CLASS_D_INX, "d,T,S", MATCH_FLT_D,
> MASK_FLT_D, match_opcode, INSN_ALIAS },
> +{"fge.d", 0, INSN_CLASS_D_INX, "d,T,S", MATCH_FLE_D,
> MASK_FLE_D, match_opcode, INSN_ALIAS },
> {"fmv.x.d", 64, INSN_CLASS_D, "d,S", MATCH_FMV_X_D,
> MASK_FMV_X_D, match_opcode, 0 },
> {"fmv.d.x", 64, INSN_CLASS_D, "D,s", MATCH_FMV_D_X,
> MASK_FMV_D_X, match_opcode, 0 },
> {"fcvt.l.d", 64, INSN_CLASS_D_INX, "d,S",
> MATCH_FCVT_L_D|MASK_RM, MASK_FCVT_L_D|MASK_RM, match_opcode, 0 },
> @@ -1109,8 +1109,8 @@ const struct riscv_opcode riscv_opcodes[] =
> {"feq.q", 0, INSN_CLASS_Q_INX, "d,S,T", MATCH_FEQ_Q,
> MASK_FEQ_Q, match_opcode, 0 },
> {"flt.q", 0, INSN_CLASS_Q_INX, "d,S,T", MATCH_FLT_Q,
> MASK_FLT_Q, match_opcode, 0 },
> {"fle.q", 0, INSN_CLASS_Q_INX, "d,S,T", MATCH_FLE_Q,
> MASK_FLE_Q, match_opcode, 0 },
> -{"fgt.q", 0, INSN_CLASS_Q_INX, "d,T,S", MATCH_FLT_Q,
> MASK_FLT_Q, match_opcode, 0 },
> -{"fge.q", 0, INSN_CLASS_Q_INX, "d,T,S", MATCH_FLE_Q,
> MASK_FLE_Q, match_opcode, 0 },
> +{"fgt.q", 0, INSN_CLASS_Q_INX, "d,T,S", MATCH_FLT_Q,
> MASK_FLT_Q, match_opcode, INSN_ALIAS },
> +{"fge.q", 0, INSN_CLASS_Q_INX, "d,T,S", MATCH_FLE_Q,
> MASK_FLE_Q, match_opcode, INSN_ALIAS },
> {"fcvt.l.q", 64, INSN_CLASS_Q_INX, "d,S",
> MATCH_FCVT_L_Q|MASK_RM, MASK_FCVT_L_Q|MASK_RM, match_opcode, 0 },
> {"fcvt.l.q", 64, INSN_CLASS_Q_INX, "d,S,m", MATCH_FCVT_L_Q,
> MASK_FCVT_L_Q, match_opcode, 0 },
> {"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 },
> --
> 2.34.1
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://sourceware.org/pipermail/binutils/attachments/20250429/4984282c/attachment.htm>
More information about the Binutils
mailing list