mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-06 01:03:55 -06:00
target/riscv: rvv-1.0: fault-only-first unit stride load
Signed-off-by: Frank Chang <frank.chang@sifive.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Message-Id: <20211210075704.23951-24-frank.chang@sifive.com> Signed-off-by: Alistair Francis <alistair.francis@wdc.com>
This commit is contained in:
parent
83fcd573b1
commit
d3e5e2ff4f
4 changed files with 36 additions and 107 deletions
|
@ -935,28 +935,16 @@ static bool ldff_trans(uint32_t vd, uint32_t rs1, uint32_t data,
|
|||
return true;
|
||||
}
|
||||
|
||||
static bool ldff_op(DisasContext *s, arg_r2nfvm *a, uint8_t seq)
|
||||
static bool ldff_op(DisasContext *s, arg_r2nfvm *a, uint8_t eew)
|
||||
{
|
||||
uint32_t data = 0;
|
||||
gen_helper_ldst_us *fn;
|
||||
static gen_helper_ldst_us * const fns[7][4] = {
|
||||
{ gen_helper_vlbff_v_b, gen_helper_vlbff_v_h,
|
||||
gen_helper_vlbff_v_w, gen_helper_vlbff_v_d },
|
||||
{ NULL, gen_helper_vlhff_v_h,
|
||||
gen_helper_vlhff_v_w, gen_helper_vlhff_v_d },
|
||||
{ NULL, NULL,
|
||||
gen_helper_vlwff_v_w, gen_helper_vlwff_v_d },
|
||||
{ gen_helper_vleff_v_b, gen_helper_vleff_v_h,
|
||||
gen_helper_vleff_v_w, gen_helper_vleff_v_d },
|
||||
{ gen_helper_vlbuff_v_b, gen_helper_vlbuff_v_h,
|
||||
gen_helper_vlbuff_v_w, gen_helper_vlbuff_v_d },
|
||||
{ NULL, gen_helper_vlhuff_v_h,
|
||||
gen_helper_vlhuff_v_w, gen_helper_vlhuff_v_d },
|
||||
{ NULL, NULL,
|
||||
gen_helper_vlwuff_v_w, gen_helper_vlwuff_v_d }
|
||||
static gen_helper_ldst_us * const fns[4] = {
|
||||
gen_helper_vle8ff_v, gen_helper_vle16ff_v,
|
||||
gen_helper_vle32ff_v, gen_helper_vle64ff_v
|
||||
};
|
||||
|
||||
fn = fns[seq][s->sew];
|
||||
fn = fns[eew];
|
||||
if (fn == NULL) {
|
||||
return false;
|
||||
}
|
||||
|
@ -967,13 +955,10 @@ static bool ldff_op(DisasContext *s, arg_r2nfvm *a, uint8_t seq)
|
|||
return ldff_trans(a->rd, a->rs1, data, fn, s);
|
||||
}
|
||||
|
||||
GEN_VEXT_TRANS(vlbff_v, 0, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vlhff_v, 1, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vlwff_v, 2, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vleff_v, 3, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vlbuff_v, 4, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vlhuff_v, 5, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vlwuff_v, 6, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vle8ff_v, MO_8, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vle16ff_v, MO_16, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vle32ff_v, MO_32, r2nfvm, ldff_op, ld_us_check)
|
||||
GEN_VEXT_TRANS(vle64ff_v, MO_64, r2nfvm, ldff_op, ld_us_check)
|
||||
|
||||
/*
|
||||
*** Vector Integer Arithmetic Instructions
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue