Skip to content

Incorrect FCVT.W.D Signed Integer Conversion for Negative Double-Precision Input

  • Operand: 0xC1E0000000000000.
  • Instruction: fcvt.w.d
  • rounded_abs: 0xffffffff80000000 (correct signed integer result for the given input) (verified with Spike)
  • rounded_int_res: 0x0000000080000000
  • rounded_sign: 1 (straight from the input operand)

What is the purpose of this statement? if this is inverting the obtained answer... assign rounded_int_res = rounded_sign ? unsigned'(-rounded_abs) : rounded_abs;