mirror of https://github.com/xemu-project/xemu.git
target/riscv: Add vill check for whole vector register move instructions
The ratified version of RISC-V V spec section 16.6 says that `The instructions operate as if EEW=SEW`. So the whole vector register move instructions depend on the vtype register that means the whole vector register move instructions should raise an illegal-instruction exception when vtype.vill=1. Signed-off-by: Max Chou <max.chou@sifive.com> Reviewed-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Message-ID: <20231129170400.21251-2-max.chou@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
9468484fe9
commit
4eff52cd46
|
@ -3631,13 +3631,14 @@ static bool trans_vcompress_vm(DisasContext *s, arg_r *a)
|
|||
}
|
||||
|
||||
/*
|
||||
* Whole Vector Register Move Instructions ignore vtype and vl setting.
|
||||
* Thus, we don't need to check vill bit. (Section 16.6)
|
||||
* Whole Vector Register Move Instructions depend on vtype register(vsew).
|
||||
* Thus, we need to check vill bit. (Section 16.6)
|
||||
*/
|
||||
#define GEN_VMV_WHOLE_TRANS(NAME, LEN) \
|
||||
static bool trans_##NAME(DisasContext *s, arg_##NAME * a) \
|
||||
{ \
|
||||
if (require_rvv(s) && \
|
||||
vext_check_isa_ill(s) && \
|
||||
QEMU_IS_ALIGNED(a->rd, LEN) && \
|
||||
QEMU_IS_ALIGNED(a->rs2, LEN)) { \
|
||||
uint32_t maxsz = (s->cfg_ptr->vlen >> 3) * LEN; \
|
||||
|
|
Loading…
Reference in New Issue