This file specifies the functionalities of the RISC-V Vector Specification supported by Ara.
- Maximum size of a single vector element in bits: ELEN = 64
- Striping distance, in bits: SLEN = 64
- Vector unit-strided loads:
vle<eew>, vl1r.v - Vector unit-strided stores:
vse<eew>,vs1r.v - Vector strided loads:
vlse<eew> - Vector strided stores:
vsse<eew> - Vector indexed loads:
vluxei<eew>,vloxei<eew> - Vector indexed stores:
vsuxei<eew>,vsoxei<eew>
- Vector single-width integer add and subtract instructions:
vadd,vsub,vrsub - Vector widening integer add and subtract instructions:
vwaddu,vwsubu,vwadd,vwsub - Vector integer extension instructions:
vzext,vsext - Vector integer add-with-carry/subtract-with-borrow instructions:
vadc,vmadc,vsbc,vmsbc - Vector bitwise logical instructions:
vand,vor,vxor - Vector single-width bit shift instructions:
vsll,vsrl,vsra - Vector narrowing integer right shift instructions:
vnsrl,vnsra - Vector integer comparison instructions:
vmseq,vmsne,vmsltu,vmslt,vmsleu,vmsle,vmsgtu,vmsgt - Vector integer min/max instructions:
vminu,vmin,vmaxu,vmax - Vector single-width integer multiply instructions:
vmul,vmulh,vmulhu,vmulhsu - Vector integer divide instructions:
vdivu,vdiv,vremu,vrem - Vector widening integer multiply instructions:
vwmul,vwmulu,vwmulsu - Vector single-width integer multiply-add instructions:
vmacc,vnmsac,vmadd,vnmsub - Vector widening integer multiply-add instructions:
vwmaccu,vwmacc,vwmaccsu,vwmaccus - Vector integer merge instructions:
vmerge - Vector integer move instructions:
vmv - Vector whole-register move instructions:
vmv<nr>r
- Vector single-width floating-point add/subtract instructions:
vfadd,vfsub,vfrsub - Vector widening floating-point add/subtract instructions:
vfwadd,vfwsub,vfwadd.w,vfwsub.w - Vector single-width floating-point multiply/divide instructions:
vfmul,vfdiv,vfrdiv - Vector widening floating-point multiply/divide instructions:
vfwmul - Vector single-width floating-point fused multiply-add instructions:
vfmacc,vfnmacc,vfmsac,vfnmsac,vfmadd,vfnmadd,vfmsub,vfnmsub - Vector widening floating-point fused multiply-add instructions:
vfwmacc,vfwnmacc,vfwmsac,vfwnmsac - Vector floating-point square-root instruction:
vfsqrt - Vector floating-point min/max instructions:
vfmin,vfmax - Vector floating-point sign-injection instructions:
vfsgnj,vfsgnjn,vfsgnjx - Vecotr floating-point classify instruction:
vfclass - Vector floating-point merge instruction:
vfmerge - Vector floating-point move instruction:
vfmv - Vector floating-point compare instructions:
vmfeq,vmfne,vmflt,vmfle,vmfgt,vmfge - Vector single-width floating-point/integer type-convert instructions:
vfcvt.xu.f,vfcvt.x.f,vfcvt.rtz.xu.f,vfcvt.rtz.x.f,vfcvt.f.xu,vfcvt.f.x - Vector widening floating-point/integer type-convert instructions:
vfwcvt.xu.f,vfwcvt.x.f,vfwcvt.rtz.xu.f,vfwcvt.rtz.x.f,vfwcvt.f.xu,vfwcvt.f.x,vfwcvt.f.f - Vector narrowing floating-point/integer type-convert instructions:
vfncvt.xu.f,vfncvt.x.f,vfncvt.rtz.xu.f,vfncvt.rtz.x.f,vfncvt.f.xu,vfncvt.f.x,vfncvt.f.f - Vector floating-point reciprocal estimate instruction:
vfrec7 - Vector floating-point reciprocal square-root estimate instruction:
vfrsqrt7 - Vector narrowing floating-point convert instructions:
vfncvt.rod.f.f
- Vector single-width integer reduction instructions:
vredsum,vredmaxu,vredmax,vredminu,vredmin,vredand,vredor,vredxor - Vector widening integer reductions:
vwredsumu,vwredsum - Vector single-width floating-point reduction instructions:
vfredusum,vfredosum,vfredmin,vfredmax - Vector widening floating-point reductions:
vfwredusum,vfwredosum
- Vector mask-register logical instructions:
vmand,vmnand,vmandnot,vmxor,vmor,vmnor,vmornot,vmxnor - Vector mask instructions:
vmsbf,vmsof,vmsif,viota,vid - Vector mask population count and find first set bit instructions:
vcpop.m,vfirst.m
- Integer Scalar Move instructions:
vmv.x.s,vmv.s.x - Floating-Point Scalar Move instructions:
vfmv.f.s,vfmv.s.f - Vector slide instructions:
vslideup,vslidedown,vslide1up,vfslide1up,vslide1down,vfslide1down
- Vector single-width saturating add and subtract:
vsaddu,vsadd,vssubu,vssub - Vector single-width averaging add and subtract:
vaadd,vaaddu,vasub,vasubu - Vector single-width fractional multiply with rounding and saturation instruction:
vsmul - Vector single-width scaling shift instructions:
vssra,vssrl - Vector narrowing fixed-point clip instructions:
vnclip,vnclipu