Message ID | 20240221213140.365232-10-dbarboza@ventanamicro.com |
---|---|
State | New |
Headers | show |
Series | riscv: set vstart_eq_zero on mark_vs_dirty | expand |
On 2/21/24 11:31, Daniel Henrique Barboza wrote: > Change the for loops in ldst helpers to do a single increment in the > counter, and assign it env->vstart, to avoid re-reading from vstart > every time. > > Suggested-by: Richard Henderson<richard.henderson@linaro.org> > Signed-off-by: Daniel Henrique Barboza<dbarboza@ventanamicro.com> > --- > target/riscv/vector_helper.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~
On Thu, Feb 22, 2024 at 7:33 AM Daniel Henrique Barboza <dbarboza@ventanamicro.com> wrote: > > Change the for loops in ldst helpers to do a single increment in the > counter, and assign it env->vstart, to avoid re-reading from vstart > every time. > > Suggested-by: Richard Henderson <richard.henderson@linaro.org> > Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> Reviewed-by: Alistair Francis <alistair.francis@wdc.com> Alistair > --- > target/riscv/vector_helper.c | 6 +++--- > 1 file changed, 3 insertions(+), 3 deletions(-) > > diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c > index cc7290a1bb..1ab386830a 100644 > --- a/target/riscv/vector_helper.c > +++ b/target/riscv/vector_helper.c > @@ -208,7 +208,7 @@ vext_ldst_stride(void *vd, void *v0, target_ulong base, > uint32_t esz = 1 << log2_esz; > uint32_t vma = vext_vma(desc); > > - for (i = env->vstart; i < env->vl; i++, env->vstart++) { > + for (i = env->vstart; i < env->vl; env->vstart = ++i) { > k = 0; > while (k < nf) { > if (!vm && !vext_elem_mask(v0, i)) { > @@ -274,7 +274,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc, > uint32_t esz = 1 << log2_esz; > > /* load bytes from guest memory */ > - for (i = env->vstart; i < evl; i++, env->vstart++) { > + for (i = env->vstart; i < evl; env->vstart = ++i) { > k = 0; > while (k < nf) { > target_ulong addr = base + ((i * nf + k) << log2_esz); > @@ -388,7 +388,7 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, > uint32_t vma = vext_vma(desc); > > /* load bytes from guest memory */ > - for (i = env->vstart; i < env->vl; i++, env->vstart++) { > + for (i = env->vstart; i < env->vl; env->vstart = ++i) { > k = 0; > while (k < nf) { > if (!vm && !vext_elem_mask(v0, i)) { > -- > 2.43.2 > >
diff --git a/target/riscv/vector_helper.c b/target/riscv/vector_helper.c index cc7290a1bb..1ab386830a 100644 --- a/target/riscv/vector_helper.c +++ b/target/riscv/vector_helper.c @@ -208,7 +208,7 @@ vext_ldst_stride(void *vd, void *v0, target_ulong base, uint32_t esz = 1 << log2_esz; uint32_t vma = vext_vma(desc); - for (i = env->vstart; i < env->vl; i++, env->vstart++) { + for (i = env->vstart; i < env->vl; env->vstart = ++i) { k = 0; while (k < nf) { if (!vm && !vext_elem_mask(v0, i)) { @@ -274,7 +274,7 @@ vext_ldst_us(void *vd, target_ulong base, CPURISCVState *env, uint32_t desc, uint32_t esz = 1 << log2_esz; /* load bytes from guest memory */ - for (i = env->vstart; i < evl; i++, env->vstart++) { + for (i = env->vstart; i < evl; env->vstart = ++i) { k = 0; while (k < nf) { target_ulong addr = base + ((i * nf + k) << log2_esz); @@ -388,7 +388,7 @@ vext_ldst_index(void *vd, void *v0, target_ulong base, uint32_t vma = vext_vma(desc); /* load bytes from guest memory */ - for (i = env->vstart; i < env->vl; i++, env->vstart++) { + for (i = env->vstart; i < env->vl; env->vstart = ++i) { k = 0; while (k < nf) { if (!vm && !vext_elem_mask(v0, i)) {
Change the for loops in ldst helpers to do a single increment in the counter, and assign it env->vstart, to avoid re-reading from vstart every time. Suggested-by: Richard Henderson <richard.henderson@linaro.org> Signed-off-by: Daniel Henrique Barboza <dbarboza@ventanamicro.com> --- target/riscv/vector_helper.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)