fcvt.wu.s

Converts a floating-point number in floating-point register `fs1` to an unsigned 32-bit integer in integer register `xd`. For XLEN >32, `fcvt.wu.s` sign-extends the 32-bit result to the destination register width. If the rounded result is not representable as a 32-bit unsigned 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) ! `0` h! Maximum valid input (after rounding) ! `2^32 - 1` h! Output for out-of-range negative input ! `0` h! Output for `-∞` ! `0` h! Output for out-of-range positive input ! `2^32 - 1` h! Output for `+∞` for `NaN` ! `2^32 - 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.

Synopsis

fcvt.wu.s xd, fs1, rm

Encoding

Type:

067111214151920311010011xdrmfs1110000000001
funct7: 1100000
funct3: ---
opcode: 1010011

RISC-V Instruction Encoder/Decoder

open fcvt.wu.s in rvcodecjs

Availability