NEORV32 Software Framework Documentation
The NEORV32 RISC-V Processor
|
"Intrinsic" library for the NEORV32 single-precision floating-point in x registers (Zfinx) extension More...
#include <float.h>
#include <math.h>
Go to the source code of this file.
Data Structures | |
union | float_conv_t |
Functions | |
float | subnormal_flush (float tmp) |
float | riscv_intrinsic_fadds (float rs1, float rs2) |
float | riscv_intrinsic_fsubs (float rs1, float rs2) |
float | riscv_intrinsic_fmuls (float rs1, float rs2) |
float | riscv_intrinsic_fmins (float rs1, float rs2) |
float | riscv_intrinsic_fmaxs (float rs1, float rs2) |
uint32_t | riscv_intrinsic_fcvt_wus (float rs1) |
int32_t | riscv_intrinsic_fcvt_ws (float rs1) |
float | riscv_intrinsic_fcvt_swu (uint32_t rs1) |
float | riscv_intrinsic_fcvt_sw (int32_t rs1) |
uint32_t | riscv_intrinsic_feqs (float rs1, float rs2) |
uint32_t | riscv_intrinsic_flts (float rs1, float rs2) |
uint32_t | riscv_intrinsic_fles (float rs1, float rs2) |
float | riscv_intrinsic_fsgnjs (float rs1, float rs2) |
float | riscv_intrinsic_fsgnjns (float rs1, float rs2) |
float | riscv_intrinsic_fsgnjxs (float rs1, float rs2) |
uint32_t | riscv_intrinsic_fclasss (float rs1) |
float | riscv_intrinsic_fdivs (float rs1, float rs2) |
float | riscv_intrinsic_fsqrts (float rs1) |
float | riscv_intrinsic_fmadds (float rs1, float rs2, float rs3) |
float | riscv_intrinsic_fmsubs (float rs1, float rs2, float rs3) |
float | riscv_intrinsic_fnmsubs (float rs1, float rs2, float rs3) |
float | riscv_intrinsic_fnmadds (float rs1, float rs2, float rs3) |
float | riscv_emulate_fadds (float rs1, float rs2) |
float | riscv_emulate_fsubs (float rs1, float rs2) |
float | riscv_emulate_fmuls (float rs1, float rs2) |
float | riscv_emulate_fmins (float rs1, float rs2) |
float | riscv_emulate_fmaxs (float rs1, float rs2) |
uint32_t | riscv_emulate_fcvt_wus (float rs1) |
int32_t | riscv_emulate_fcvt_ws (float rs1) |
float | riscv_emulate_fcvt_swu (uint32_t rs1) |
float | riscv_emulate_fcvt_sw (int32_t rs1) |
uint32_t | riscv_emulate_feqs (float rs1, float rs2) |
uint32_t | riscv_emulate_flts (float rs1, float rs2) |
uint32_t | riscv_emulate_fles (float rs1, float rs2) |
float | riscv_emulate_fsgnjs (float rs1, float rs2) |
float | riscv_emulate_fsgnjns (float rs1, float rs2) |
float | riscv_emulate_fsgnjxs (float rs1, float rs2) |
uint32_t | riscv_emulate_fclasss (float rs1) |
float | riscv_emulate_fdivs (float rs1, float rs2) |
float | riscv_emulate_fsqrts (float rs1) |
float | riscv_emulate_fmadds (float rs1, float rs2, float rs3) |
float | riscv_emulate_fmsubs (float rs1, float rs2, float rs3) |
float | riscv_emulate_fnmsubs (float rs1, float rs2, float rs3) |
float | riscv_emulate_fnmadds (float rs1, float rs2, float rs3) |
"Intrinsic" library for the NEORV32 single-precision floating-point in x registers (Zfinx) extension
Also provides emulation functions for all intrinsics (functionality re-built in pure software). The functionality of the emulation
functions is based on the RISC-V floating-point spec.
float riscv_emulate_fadds | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point addition
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
uint32_t riscv_emulate_fclasss | ( | float | rs1 | ) |
Single-precision floating-point number classification
[in] | rs1 | Source operand 1. |
< Access as native float
< Access in binary representation
float riscv_emulate_fcvt_sw | ( | int32_t | rs1 | ) |
Single-precision floating-point signed integer to float
[in] | rs1 | Source operand 1. |
float riscv_emulate_fcvt_swu | ( | uint32_t | rs1 | ) |
Single-precision floating-point unsigned integer to float
[in] | rs1 | Source operand 1. |
int32_t riscv_emulate_fcvt_ws | ( | float | rs1 | ) |
Single-precision floating-point float to signed integer
[in] | rs1 | Source operand 1. |
uint32_t riscv_emulate_fcvt_wus | ( | float | rs1 | ) |
Single-precision floating-point float to unsigned integer
[in] | rs1 | Source operand 1. |
float riscv_emulate_fdivs | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point division
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
uint32_t riscv_emulate_feqs | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point equal comparison
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
uint32_t riscv_emulate_fles | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point less-than-or-equal comparison
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
uint32_t riscv_emulate_flts | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point less-than comparison
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
float riscv_emulate_fmadds | ( | float | rs1, |
float | rs2, | ||
float | rs3 ) |
Single-precision floating-point fused multiply-add
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
float riscv_emulate_fmaxs | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point maximum
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
< Access as native float
< Access in binary representation
float riscv_emulate_fmins | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point minimum
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
< Access as native float
< Access in binary representation
float riscv_emulate_fmsubs | ( | float | rs1, |
float | rs2, | ||
float | rs3 ) |
Single-precision floating-point fused multiply-sub
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
float riscv_emulate_fmuls | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point multiplication
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
float riscv_emulate_fnmadds | ( | float | rs1, |
float | rs2, | ||
float | rs3 ) |
Single-precision floating-point fused negated multiply-add
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
float riscv_emulate_fnmsubs | ( | float | rs1, |
float | rs2, | ||
float | rs3 ) |
Single-precision floating-point fused negated multiply-sub
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
float riscv_emulate_fsgnjns | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point sign-injection NOT
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
float riscv_emulate_fsgnjs | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point sign-injection
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
float riscv_emulate_fsgnjxs | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point sign-injection XOR
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
float riscv_emulate_fsqrts | ( | float | rs1 | ) |
Single-precision floating-point square root
[in] | rs1 | Source operand 1. |
float riscv_emulate_fsubs | ( | float | rs1, |
float | rs2 ) |
Single-precision floating-point subtraction
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point addition
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point number classification
[in] | rs1 | Source operand 1. |
|
inline |
Single-precision floating-point convert signed integer to float
[in] | rs1 | Source operand 1. |
|
inline |
Single-precision floating-point convert unsigned integer to float
[in] | rs1 | Source operand 1. |
|
inline |
Single-precision floating-point convert float to signed integer
[in] | rs1 | Source operand 1. |
|
inline |
Single-precision floating-point convert float to unsigned integer
[in] | rs1 | Source operand 1. |
|
inline |
Single-precision floating-point division
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point equal comparison
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point less-than-or-equal comparison
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point less-than comparison
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point fused multiply-add
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
|
inline |
Single-precision floating-point maximum
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point minimum
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point fused multiply-sub
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
|
inline |
Single-precision floating-point multiplication
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point fused negated multiply-add
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
|
inline |
Single-precision floating-point fused negated multiply-sub
[in] | rs1 | Source operand 1 |
[in] | rs2 | Source operand 2 |
[in] | rs3 | Source operand 3 |
|
inline |
Single-precision floating-point sign-injection NOT
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point sign-injection
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point sign-injection XOR
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
|
inline |
Single-precision floating-point square root
[in] | rs1 | Source operand 1. |
|
inline |
Single-precision floating-point subtraction
[in] | rs1 | Source operand 1. |
[in] | rs2 | Source operand 2. |
float subnormal_flush | ( | float | tmp | ) |
Flush to zero if de-normal number.
[in] | tmp | Source operand. |