target/riscv: rvv-1.0: Add Zve64f support for load and store insns
All Zve* extensions support all vector load and store instructions, except Zve64* extensions do not support EEW=64 for index values when XLEN=32. Signed-off-by: Frank Chang <frank.chang@sifive.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-id: 20220118014522.13613-4-frank.chang@sifive.com Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
c7a26fb2f6
commit
494104093f
@ -263,10 +263,21 @@ static bool vext_check_st_index(DisasContext *s, int vd, int vs2, int nf,
|
|||||||
uint8_t eew)
|
uint8_t eew)
|
||||||
{
|
{
|
||||||
int8_t emul = eew - s->sew + s->lmul;
|
int8_t emul = eew - s->sew + s->lmul;
|
||||||
return (emul >= -3 && emul <= 3) &&
|
bool ret = (emul >= -3 && emul <= 3) &&
|
||||||
require_align(vs2, emul) &&
|
require_align(vs2, emul) &&
|
||||||
require_align(vd, s->lmul) &&
|
require_align(vd, s->lmul) &&
|
||||||
require_nf(vd, nf, s->lmul);
|
require_nf(vd, nf, s->lmul);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* All Zve* extensions support all vector load and store instructions,
|
||||||
|
* except Zve64* extensions do not support EEW=64 for index values
|
||||||
|
* when XLEN=32. (Section 18.2)
|
||||||
|
*/
|
||||||
|
if (get_xl(s) == MXL_RV32) {
|
||||||
|
ret &= (!has_ext(s, RVV) && s->ext_zve64f ? eew != MO_64 : true);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user