*SRC[31:0])
    01: TMP[31:0]←round_to_equal_or_smaller_integer(2<sup>M</sup>*SRC[31:0])
    10: TMP[31:0]←round_to_equal_or_larger_integer(2<sup>M</sup>*SRC[31:0])
    11: TMP[31:0]←round_to_nearest_smallest_magnitude_integer(2<sup>M</sup>*SRC[31:0])
    ESAC;
    Dest[31:0]←2<sup>-M</sup>* TMP[31:0] ; scale down back to 2<sup>-M</sup>
    if (imm8[3] = 0) Then ; check SPE
        if (SRC[31:0] != Dest[31:0]) Then
                    ; check precision lost
            set_precision() ; set #PE
    