fint - 2024.2 English

MicroBlaze Processor Reference Guide (UG984)

Document ID
UG984
Release Date
2024-11-27
Version
2024.2 English
Figure 1. fint

Description

Converts the floating-point number in register rA to a signed integer and puts the result in register rD. This is a 32-bit truncating signed conversion that will produce a 32-bit integer result.

Pseudocode

if isDnz(rA) then
   (rD) ← 0xFFC00000
   FSR[DO] ← 1
   ESR[EC] ← 00110
else if isNaN(rA) then
   (rD) ← 0xFFC00000
   FSR[IO] ← 1
   ESR[EC] ← 00110
else if isInf(rA) or (rA) < -231 or (rA) > 231 - 1 then
   (rD) ← 0xFFC00000
   FSR[IO] ← 1
   ESR[EC] ← 00110
else
   (rD) ← int ((rA))

Registers Altered

  • rD, unless an FP exception is generated, in which case the register is unchanged
  • ESR[EC], if an FP exception is generated
  • FSR[IO,DO]

Latency

  • 4 cycles with C_AREA_OPTIMIZED=0
  • 6 cycles with C_AREA_OPTIMIZED=1
  • 1 cycle with C_AREA_OPTIMIZED=2

Note

This instruction is only available when the MicroBlaze parameter C_USE_FPU is set to 2 (Extended).