vse8.v

Vector 8-bit unit-stride store

This instruction is defined by:

Encoding

svg

Synopsis

Stores 8-bit elements from vector register vs3 to memory starting at address in xs1 register, using vector mask vm. The effective element width is 8 bits regardless of SEW setting.

Access

M HS U VS VU

Always

Always

Always

Always

Always

Decode Variables

Bits<1> vm = $encoding[25];
Bits<5> xs1 = $encoding[19:15];
Bits<5> vs3 = $encoding[11:7];

Execution

  • Pruned, XLEN == 64

  • Original

XReg virtual_address = X[xs1];
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
  U32 start_bit_pos = i * 8;
  U32 end_bit_pos = start_bit_pos + 7;
  write_memory(8, virtual_address + i, V[vs3][end_bit_pos:start_bit_pos], $encoding);
}
CSR[vstart].VALUE = 0;
XReg virtual_address = X[xs1];
for (U32 i = CSR[vstart].VALUE; i < CSR[vl].VALUE; i++) {
  U32 start_bit_pos = i * 8;
  U32 end_bit_pos = start_bit_pos + 7;
  write_memory(8, virtual_address + i, V[vs3][end_bit_pos:start_bit_pos], $encoding);
}
CSR[vstart].VALUE = 0;

Exceptions

This instruction may result in the following synchronous exceptions:

  • LoadAccessFault

  • StoreAmoAccessFault

  • StoreAmoPageFault