Skip to main content

long_convertible

Function long_convertible 

Source
pub const fn long_convertible(v: i64) -> bool
Expand description

Does a 64-bit integer satisfy CVT.[S,D].L’s range restriction?

“When converting a long integer to a single- or double-precision floating-point number (CVT.[S,D].L), bits 63:55 of the 64-bit integer must be all zeroes or ones, otherwise the VR4300 processor raises a floating-point instruction exception.” — UM §7.5.2

This is a VR4300-specific hardware limitation, not IEEE behavior: the value is perfectly representable, the processor simply declines. An emulator that converts it anyway produces a correct number where hardware traps, so software’s fixup path never runs and the difference surfaces far downstream.