Skip to content
  • Christoph Müllner's avatar
    a47842d1
    riscv: Add support for the Zfa extension · a47842d1
    Christoph Müllner authored
    This patch introduces the RISC-V Zfa extension, which introduces
    additional floating-point instructions:
    * fli (load-immediate) with pre-defined immediates
    * fminm/fmaxm (like fmin/fmax but with different NaN behaviour)
    * fround/froundmx (round to integer)
    * fcvtmod.w.d (Modular Convert-to-Integer)
    * fmv* to access high bits of float register bigger than XLEN
    * Quiet comparison instructions (fleq/fltq)
    
    Zfa defines its instructions in combination with the following extensions:
    * single-precision floating-point (F)
    * double-precision floating-point (D)
    * quad-precision floating-point (Q)
    * half-precision floating-point (Zfh)
    
    Since QEMU does not support the RISC-V quad-precision floating-point
    ISA extension (Q), this patch does not include the instructions that
    depend on this extension. All other instructions are included in this
    patch.
    
    The Zfa specification can be found here:
      https://github.com/riscv/riscv-isa-manual/blob/master/src/zfa.tex
    The Zfa specifciation is frozen and is in public review since May 3, 2023:
      https://groups.google.com/a/groups.riscv.org/g/isa-dev/c/SED4ntBkabg
    
    
    
    The patch also includes a TCG test for the fcvtmod.w.d instruction.
    The test cases test for correct results and flag behaviour.
    Note, that the Zfa specification requires fcvtmod's flag behaviour
    to be identical to a fcvt with the same operands (which is also
    tested).
    
    Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
    Signed-off-by: default avatarChristoph Müllner <christoph.muellner@vrull.eu>
    Message-Id: <20230710071243.282464-1-christoph.muellner@vrull.eu>
    Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
    a47842d1
    riscv: Add support for the Zfa extension
    Christoph Müllner authored
    This patch introduces the RISC-V Zfa extension, which introduces
    additional floating-point instructions:
    * fli (load-immediate) with pre-defined immediates
    * fminm/fmaxm (like fmin/fmax but with different NaN behaviour)
    * fround/froundmx (round to integer)
    * fcvtmod.w.d (Modular Convert-to-Integer)
    * fmv* to access high bits of float register bigger than XLEN
    * Quiet comparison instructions (fleq/fltq)
    
    Zfa defines its instructions in combination with the following extensions:
    * single-precision floating-point (F)
    * double-precision floating-point (D)
    * quad-precision floating-point (Q)
    * half-precision floating-point (Zfh)
    
    Since QEMU does not support the RISC-V quad-precision floating-point
    ISA extension (Q), this patch does not include the instructions that
    depend on this extension. All other instructions are included in this
    patch.
    
    The Zfa specification can be found here:
      https://github.com/riscv/riscv-isa-manual/blob/master/src/zfa.tex
    The Zfa specifciation is frozen and is in public review since May 3, 2023:
      https://groups.google.com/a/groups.riscv.org/g/isa-dev/c/SED4ntBkabg
    
    
    
    The patch also includes a TCG test for the fcvtmod.w.d instruction.
    The test cases test for correct results and flag behaviour.
    Note, that the Zfa specification requires fcvtmod's flag behaviour
    to be identical to a fcvt with the same operands (which is also
    tested).
    
    Reviewed-by: default avatarRichard Henderson <richard.henderson@linaro.org>
    Signed-off-by: default avatarChristoph Müllner <christoph.muellner@vrull.eu>
    Message-Id: <20230710071243.282464-1-christoph.muellner@vrull.eu>
    Signed-off-by: default avatarAlistair Francis <alistair.francis@wdc.com>
Loading