diff options
Diffstat (limited to 'src/zc/cm_lbu.adoc')
-rw-r--r-- | src/zc/cm_lbu.adoc | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/src/zc/cm_lbu.adoc b/src/zc/cm_lbu.adoc new file mode 100644 index 0000000..7e9735f --- /dev/null +++ b/src/zc/cm_lbu.adoc @@ -0,0 +1,50 @@ +<<< +[#insns-cm_lbu,reftext="Load unsigned byte, 16-bit encoding"] +=== cm.lbu + +Synopsis:: +Load unsigned byte, 16-bit encoding + +Mnemonic:: +cm.lbu _rd'_, _uimm_(_rs1'_) + +Encoding (RV32, RV64):: +[wavedrom, , svg] +.... +{reg:[ + { bits: 2, name: 0x2, attr: ['C2'] }, + { bits: 3, name: 'rd\'' }, + { bits: 2, name: 'uimm[2:1]' }, + { bits: 3, name: 'rs1\'' }, + { bits: 2, name: 'uimm[0|3]' }, + { bits: 1, name: 0x0 }, + { bits: 3, name: 0x1, attr: ['FUNCT3'] }, +],config:{bits:16}} +.... + +[NOTE] + If _uimm < 4_ the encoding is designated for custom use, as the functionality overlaps with <<insns-c_lbu>>. + +include::cm_lbsb_imm_offset.adoc[] + +Description:: +This instruction loads a byte from the memory address formed by adding _rs1'_ to the zero extended immediate _uimm_. The resulting byte is zero extended to XLEN bits and is written to _rd'_. + +[NOTE] + _rd'_ and _rs1'_ are from the standard 8-register set x8-x15. + +Prerequisites:: +None + +32-bit equivalent:: +<<insns-lbu>> + +Operation:: +[source,sail] +-- +//This is not SAIL, it's pseudo-code. The SAIL hasn't been written yet. + +X(rdc) = EXTZ(mem[X(rs1c)+EXTZ(uimm)][7..0]); +-- + +include::Zcmb_footer.adoc[] |