vxsat

Vector Fixed-Point Saturate Flag

Indicates if a fixed-point instruction has had to saturate an output value to fit into a destination format

Attributes

Requirement

Defining extensions

Zvl32b

Vector register length must be at least 32 bits

CSR Address

0x9

Length

* 32 when (priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 0) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 0) || (priv_mode() == PrivilegeMode::U && CSR[mstatus].UXL == 0) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 0) || (priv_mode() == PrivilegeMode::VU && CSR[vsstatus].UXL == 0) * 64 when (priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 1) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 1) || (priv_mode() == PrivilegeMode::U && CSR[mstatus].UXL == 1) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 1) || (priv_mode() == PrivilegeMode::VU && CSR[vsstatus].UXL == 1)

Privilege Mode

U

Format

This CSR format changes dynamically.

vxsat Format when (priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 0) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 0) || (priv_mode() == PrivilegeMode::U && CSR[mstatus].UXL == 0) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 0) || (priv_mode() == PrivilegeMode::VU && CSR[vsstatus].UXL == 0)
Figure 1. vxsat Format when (priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 0) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 0) || (priv_mode() == PrivilegeMode::U && CSR[mstatus].UXL == 0) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 0) || (priv_mode() == PrivilegeMode::VU && CSR[vsstatus].UXL == 0)
vxsat Format when (priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 1) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 1) || (priv_mode() == PrivilegeMode::U && CSR[mstatus].UXL == 1) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 1) || (priv_mode() == PrivilegeMode::VU && CSR[vsstatus].UXL == 1)
Figure 2. vxsat Format when (priv_mode() == PrivilegeMode::M && CSR[misa].MXL == 1) || (priv_mode() == PrivilegeMode::S && CSR[mstatus].SXL == 1) || (priv_mode() == PrivilegeMode::U && CSR[mstatus].UXL == 1) || (priv_mode() == PrivilegeMode::VS && CSR[hstatus].VSXL == 1) || (priv_mode() == PrivilegeMode::VU && CSR[vsstatus].UXL == 1)

Field Summary

Name Location Type Reset Value

vxsat.VALUE

* 31:0 when CSR[mstatus].UXL == 0 * 63:0 when CSR[mstatus].UXL == 1

RW-H

UNDEFINED_LEGAL

Fields

VALUE

Location
  • 31:0 when CSR[mstatus].UXL == 0

  • 63:0 when CSR[mstatus].UXL == 1

Description

The vxsat CSR has a single read-write least-significant bit (vxsat[0]) that indicates if a fixed-point instruction has had to saturate an output value to fit into a destination format. Bits vxsat[XLEN-1:1] should be written as zeros.

The vxsat bit is mirrored in vcsr.

Type

RW-H

Reset value

UNDEFINED_LEGAL

Software write

This CSR may store a value that is different from what software attempts to write.

When a software write occurs (e.g., through csrrw), the following determines the written value:

VALUE = return csr_value.VALUE & 1;

Software read

This CSR may return a value that is different from what is stored in hardware.

return CSR[vcsr].VXSAT;