From 463221fe674568f45b4538ac439749a2ef0eb680 Mon Sep 17 00:00:00 2001 From: Afonso Oliveira Date: Fri, 25 Oct 2024 14:41:36 +0100 Subject: [PATCH] Add V pseudoinstrutions #110 Signed-off-by: Afonso Oliveira --- src/asm-manual.adoc | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/src/asm-manual.adoc b/src/asm-manual.adoc index d7e5cf2..5e8ceec 100644 --- a/src/asm-manual.adoc +++ b/src/asm-manual.adoc @@ -1068,7 +1068,7 @@ srli rd, rd, XLEN - 32 |bnez rs, offset | bne rs, x0, offset | Branch if != zero | |blez rs, offset | bge x0, rs, offset | Branch if ≤ zero | |bgez rs, offset | bge rs, x0, offset | Branch if ≥ zero | -|bltz rs, offset | blt rs, x0, offset | Branch if < zero | +|bltz rs, offsevt | blt rs, x0, offset | Branch if < zero | |bgtz rs, offset | blt x0, rs, offset | Branch if > zero | |bgt rs, rt, offset | blt rt, rs, offset | Branch if > | |ble rs, rt, offset | bge rt, rs, offset | Branch if ≤ | @@ -1079,6 +1079,32 @@ srli rd, rd, XLEN - 32 |jr rs | jalr x0, rs, 0 | Jump register | |jalr rs | jalr x1, rs, 0 | Jump and link register | |ret | jalr x0, x1, 0 | Return from subroutine | +|vfneg.v vd, vs | vfsgnjn.vv vd, vs, vs | Floating-point vector negate | +|vfabs.v vd, vs | vfsgnjx.vv vd, vs, vs | Floating-point vector absolute value | +|vmclr.m vd | vmxor.mm vd, vd, vd | Vector clear mask register | +|vmfge.vv vd, va, vb, vm | vmfle.vv vd, vb, va, vm | Vector Floating-point >=| +|vmfgt.vv vd, va, vb, vm | vmflt.vv vd, vb, va, vm | Vector Floating-point >| +|vmmv.m vd, vs | vmand.mm vd, vs, vs | Vector copy mask register | +|vmnot.m vd, vs | vmnand.mm vd, vs, vs | Vector invert mask bits| +|vmset.m vd | vmxnor.mm vd, vd, vd | Vector set all mask bits| +|vmsge.vi vd, va, i, vm | vmsgt.vi vd, va, i-1, vm | Vector >= Immediate| +|vmsgeu.vi vd, va, i, vm | vmsgtu.vi vd, va, i-1, vm | Vector >= Immediate, unsigned| +|vmsge.vv vd, va, vb, vm | vmsle.vv vd, vb, va, vm | Vector >= Vector| +|vmsgeu.vv vd, va, vb, vm | vmsleu.vv vd, vb, va, vm | Vector >= Vector, unsigned | +|vmsge.vx vd, va, x, vm | vmsle.vx vd, x, va, vm | Vector >= scalar| +|vmsgeu.vx vd, va, x, vm | vmsleu.vx vd, x, va, vm | Vector >= scalar, unsigned| +|vmsgt.vv vd, va, vb, vm | vmslt.vv vd, vb, va, vm | Vector > Vector| +|vmsgtu.vv vd, va, vb, vm | vmsltu.vv vd, vb, va, vm | Vector > Vector, unsigned| +|vmslt.vi vd, va, i, vm | vmsle.vi vd, va, i-1, vm | Vector < immediate| +|vmsltu.vi vd, va, i, vm | vmsleu.vi vd, va, i-1, vm | Vector < immediate, unsigned | +|vneg.v vd,vs | vrsub.vx vd,vs,x0 | Vector negate | +|vnot.v vd,vs,vm | vxor.vi vd, vs, -1, vm | Vector not | +|vwcvt.x.x.v vd,vs,vm | vwadd.vx vd,vs,x0,vm | Vector widen convert, integer-integer| +|vwcvtu.x.x.v vd,vs,vm | vwaddu.vx vd,vs,x0,vm | Vector widen convert, integer-integer, unsigned| + + + + |call offset |auipc x1, offset[31:12] +