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