Is it just add then shift right?
Not exactly. The right shift uses vxrm rounding modes rnu/rne/rdn/rod.
Vector signed averaging add: vd[i] = roundoff_signed(vs2[i] + vs1[i], 1).
vaadd.vv performs vector signed averaging add. The infinite-precision sum vs2[i]+vs1[i] is right-shifted by one bit and rounded according to vxrm, then truncated to SEW bits. There is no result overflow for vaadd/vaaddu.
VAADD.VV is an RVV fixed-point averaging add: it adds in infinite precision, right-shifts by one with vxrm rounding, then truncates to an SEW-bit result.
Understand this scenario with real code like «vaadd.vv vd, vs2, vs1».
Understand this scenario with real code like «vaadd.vv vd, vs2, vs1».
Understand this scenario with real code like «vaadd.vv vd, vs2, vs1».
Not exactly. The right shift uses vxrm rounding modes rnu/rne/rdn/rod.
Not for result overflow; averaging add cannot overflow by definition.