You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
Hello,
When I replaying the floating_point_test, I came across an error on converting a float to a signed integer.
It seems that the rounding of values exceeding 32 bits with the mantissa at zero is not good.
To be sure, here's the code I used:
To Reproduce
int main() {
uint32_t err_cnt = 0;
uint32_t err_cnt_total = 0;
uint32_t test_cnt = 0;
uint32_t i = 0;
float_conv_t opa;
float_conv_t opb;
float_conv_t res_hw;
float_conv_t res_sw;
// setup UART at default baud rate, no interrupts
neorv32_uart0_setup(BAUD_RATE, 0);
// capture all exceptions and give debug info via UART
neorv32_rte_setup();
/////////////// test //////////////////////////
neorv32_uart0_printf("\nStart Float to signed integer\n");
for(uint32_t i=0; i < 256; i++){
uint32_t f_value = 0;
f_value += (i << 24);
opa.binary_value = f_value;
res_hw.binary_value = (uint32_t)riscv_intrinsic_fcvt_ws(opa.float_value);
res_sw.binary_value = (uint32_t)riscv_emulate_fcvt_ws(opa.float_value);
err_cnt += verify_result(i, opa.binary_value, 0, res_sw.binary_value, res_hw.binary_value);
}
neorv32_uart0_printf("Float to signed integer finished! \n");
return 0;
///////////////////////////////////////////////
}
Expected behavior
The rounding should be 0x80000000 but it is just 0.
Screenshots
Environment:
OS: Linux Ubuntu 20.04
GCC Version : Your distribution
Libraries used : neorv32_zfinx_extension_intrinsics.h and the NEORV32 Lib
Hardware:
Hardware version: 1.9.4
Implemented CPU extensions, peripherals: Zfinx, Zicond, Zicntr, C, B, M, UART, DSP, Barrel shifter, IMEM, DMEM
Hardware modifications: No
Thank you for your help!
The text was updated successfully, but these errors were encountered:
Describe the bug
Hello,
When I replaying the floating_point_test, I came across an error on converting a float to a signed integer.
It seems that the rounding of values exceeding 32 bits with the mantissa at zero is not good.
To be sure, here's the code I used:
To Reproduce
Expected behavior
The rounding should be 0x80000000 but it is just 0.
Screenshots
Environment:
Hardware:
Thank you for your help!
The text was updated successfully, but these errors were encountered: