The `fcvt.w.s` instruction converts a floating-point number in floating-point register `fs1` to a signed 32-bit integer in integer register `xd`. For XLEN >32, `fcvt.w.s` sign-extends the 32-bit result to the destination register width. If the rounded result is not representable as a 32-bit signed integer, it is clipped to the nearest value and the invalid flag is set. The range of valid inputs and behavior for invalid inputs are: [separator="!"] !=== ! ! Value h! Minimum valid input (after rounding) ! `-2^31` h! Maximum valid input (after rounding) ! `2^31 - 1` h! Output for out-of-range negative input ! `-2^31` h! Output for `-∞` ! `-2^31` h! Output for out-of-range positive input ! `2^31 - 1` h! Output for `+∞` for `NaN` ! `2^31 - 1` !=== All floating-point to integer and integer to floating-point conversion instructions round according to the `rm` field. A floating-point register can be initialized to floating-point positive zero using `fcvt.s.w xd, x0`, which will never set any exception flags. All floating-point conversion instructions set the Inexact exception flag if the rounded result differs from the operand value and the Invalid exception flag is not set.
fcvt.w.s xd, fs1, rm
Type: