Skip to content

Latest commit

 

History

History
35 lines (29 loc) · 1.47 KB

vadd.md

File metadata and controls

35 lines (29 loc) · 1.47 KB

R-Type Instrcution.

vadd.vv vd, vs2, vs1
[R-Type]
+---------------------------------------------------------------------------------------------------+
| 31 30 29 28 27 26  25  24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 |
+-----------------------+--------------+--------------+--------+--------------+---------------------+
| funct7                | rs2          | rs1          | funct3 | rd           | opcode              |
+-----------------------+--------------+--------------+--------+--------------+---------------------+

[VADD]
+---------------------------------------------------------------------------------------------------+
| 31 30 29 28 27 26  25  24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 |
+------------------+----+--------------+--------------+--------+--------------+---------------------+
| 000000           | vm | vs2          | vs1          | 000    | vd           | 1010111             |
+------------------+----+--------------+--------------+--------+--------------+---------------------+

There are 8 different sizes of adder, from 8-bit to 1024-bit.

for(vSew <- 0 to 7) {
    val sew = 1 << (vSew + 3)
    val num = Vlen*8 / sew
    when(csrSew === sew.U) {
        vAddvv := Cat(Seq.tabulate(num)(n =>
            (vs1Data(sew*(n+1)-1, sew*n) + vs2Data(sew*(n+1)-1, sew*n))
        ).reverse)
    }
}