Vector Fixed-Point Instructions
vaaddu
Averaging adds of unsigned integers.
vaaddu.vv vd, vs2, vs1, vm
vaaddu.vx vd, vs2, rs1, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001000 |
vm |
vs2 |
vs1 |
010 |
vd/rd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001000 |
vm |
vs2 |
rs1 |
110 |
vd/rd |
1010111 |
vaadd
Averaging adds of signed integers.
vaadd.vv vd, vs2, vs1, vm
vaadd.vx vd, vs2, rs1, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001001 |
vm |
vs2 |
vs1 |
010 |
vd/rd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001001 |
vm |
vs2 |
rs1 |
110 |
vd/rd |
1010111 |
vasubu
Averaging subtract of unsigned integers.
vasubu.vv vd, vs2, vs1, vm
vasubu.vx vd, vs2, rs1, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001010 |
vm |
vs2 |
vs1 |
010 |
vd/rd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001010 |
vm |
vs2 |
rs1 |
110 |
vd/rd |
1010111 |
vasub
Averaging subtract of signed integers.
vasub.vv vd, vs2, vs1, vm
vasub.vx vd, vs2, rs1, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001011 |
vm |
vs2 |
vs1 |
010 |
vd/rd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
001011 |
vm |
vs2 |
rs1 |
110 |
vd/rd |
1010111 |
vsaddu
Saturating adds of unsigned integers.
vsaddu.vv vd, vs2, vs1, vm
vsaddu.vx vd, vs2, rs1, vm
vsaddu.vi vd, vs2, imm, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100000 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100000 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100000 |
vm |
vs2 |
imm[4:0] |
011 |
vd |
1010111 |
vsadd
Saturating adds of signed integers.
vsadd.vv vd, vs2, vs1, vm
vsadd.vx vd, vs2, rs1, vm
vsadd.vi vd, vs2, imm, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100001 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100001 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100001 |
vm |
vs2 |
imm[4:0] |
011 |
vd |
1010111 |
vssubu
Saturating subtract of unsigned integers.
vssubu.vv vd, vs2, vs1, vm
vssubu.vx vd, vs2, rs1, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100010 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100010 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
vssub
Saturating subtract of signed integers.
vssub.vv vd, vs2, vs1, vm
vssub.vx vd, vs2, rs1, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100011 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100011 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
vsmul
Signed saturating and rounding fractional multiply.
vsmul.vv vd, vs2, vs1, vm
vsmul.vx vd, vs2, rs1, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100111 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
100111 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
vssrl
Scaling shift right logical.
vssrl.vv vd, vs2, vs1, vm
vssrl.vx vd, vs2, rs1, vm
vssrl.vi vd, vs2, imm, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101010 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101010 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101010 |
vm |
vs2 |
imm[4:0] |
011 |
vd |
1010111 |
vssra
Scaling shift right arithmetic.
vssra.vv vd, vs2, vs1, vm
vssra.vx vd, vs2, rs1, vm
vssra.vi vd, vs2, imm, vm
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101011 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101011 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101011 |
vm |
vs2 |
imm[4:0] |
011 |
vd |
1010111 |
vnclipu
Narrowing unsigned clip.
vnclipu.wv vd, vs2, vs1, vm # vd[i] = clip(roundoff(vs2[i], vs1[i]))
vnclipu.wx vd, vs2, rs1, vm # vd[i] = clip(roundoff(vs2[i], x[rs1]))
vnclipu.wi vd, vs2, uimm, vm # vd[i] = clip(roundoff(vs2[i], uimm))
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101110 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101110 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101110 |
vm |
vs2 |
imm[4:0] |
011 |
vd |
1010111 |
vnclip
Narrowing signed clip.
vnclip.wv vd, vs2, vs1, vm # vd[i] = clip(roundoff(vs2[i], vs1[i]))
vnclip.wx vd, vs2, rs1, vm # vd[i] = clip(roundoff(vs2[i], x[rs1]))
vnclip.wi vd, vs2, uimm, vm # vd[i] = clip(roundoff(vs2[i], uimm))
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101111 |
vm |
vs2 |
vs1 |
000 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101111 |
vm |
vs2 |
rs1 |
100 |
vd |
1010111 |
31-26 |
25 |
24-20 |
19-15 |
14-12 |
11-7 |
6-0 |
101111 |
vm |
vs2 |
imm[4:0] |
011 |
vd |
1010111 |