On Fri, 2024-06-28 at 17:53 -0700, Vineet Gupta wrote:
> +  UNSPEC_ISFINITE
> +  UNSPEC_ISNORMAL

You don't really need them.  The RTL pattern of define_expand has no use
when you expand it via C code and DONE.

i.e. you can just code

(define_expand "isfinite<ANYF:mode>2"
  [(match_operand:SI   0 "register_operand" "=r")
   (match_operand:ANYF 1 "register_operand" " f")]
  "TARGET_HARD_FLOAT"
{
  rtx tmp = gen_reg_rtx (SImode);
  emit_insn (gen_fclass<ANYF:mode> (tmp, operands[1]));
  riscv_emit_binary (AND, tmp, tmp, GEN_INT (0x7e));
  rtx cmp = gen_rtx_NE (SImode, tmp, const0_rtx);
  emit_insn (gen_cstoresi4 (operands[0], cmp, tmp, const0_rtx));

  DONE;
})

and remove the necessity of UNSPEC_ISFINITE.

-- 
Xi Ruoyao <xry...@xry111.site>
School of Aerospace Science and Technology, Xidian University

Reply via email to