[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v8 00/10] riscv: set vstart_eq_zero on mark_vs_dirty
From: |
Daniel Henrique Barboza |
Subject: |
[PATCH v8 00/10] riscv: set vstart_eq_zero on mark_vs_dirty |
Date: |
Fri, 8 Mar 2024 18:53:40 -0300 |
Hi,
In this new version we addressed the points rose by LIU Zhiwei in the v7
version. Some patches had to go, additional patches were added:
- patches 1 and 2 from v7: already queued and sent in the last PR.
- patch 6 from v7: moved to patch 1
- patches 2, 3, 4 and 5 (all new): rework how we update tail elements
Version 7 has a problem with tail elements being updated regardless of
vstart >= vl because there's no guard for it. To fix that, and be able
to remove the the vstart >= vl brconds from the translation code (most
of them - more on that later), we changed vext_set_tail_elems_1s() to
be a no-op if vstart >= vl. After that we went through all the code
that was setting tail elems with vext_set_elems_1s() and converted it
to use vext_set_tail_elems_1s(). We'll not update tail elements if
vstart >= vl even without a brcond guard in the translation code.
- patch 6 (new): fix scalar move insns. They weren't setting vstart = 0.
- patch 7 (patch 3 from v7): do not remove brconds from scalar move
insns
trans_vmv_s_x() and trans_vfmv_s_f() does not have a helper that will
handle vstart >= vl for them, so they need their brcond.
- patches 4 and 5 from v7: dropped. We're not removing all brconds, so
we can't get rid of cpu_vstart and cpu_vl.
Series based on alistair/riscv-to-apply.next.
Patches missing review: 2, 3, 4, 5, 6.
Daniel Henrique Barboza (9):
target/riscv/vector_helper.c: set vstart = 0 in GEN_VEXT_VSLIDEUP_VX()
target/riscv: handle vstart >= vl in vext_set_tail_elems_1s()
target/riscv/vector_helper.c: do vstart=0 after updating tail
target/riscv/vector_helper.c: update tail with
vext_set_tail_elems_1s()
target/riscv: use vext_set_tail_elems_1s() in vcrypto insns
trans_rvv.c.inc: set vstart = 0 in int scalar move insns
target/riscv: remove 'over' brconds from vector trans
trans_rvv.c.inc: remove redundant mark_vs_dirty() calls
target/riscv/vector_helper.c: optimize loops in ldst helpers
Ivan Klokov (1):
target/riscv: Clear vstart_qe_zero flag
target/riscv/insn_trans/trans_rvbf16.c.inc | 18 +-
target/riscv/insn_trans/trans_rvv.c.inc | 205 ++++++---------------
target/riscv/insn_trans/trans_rvvk.c.inc | 30 +--
target/riscv/translate.c | 6 +
target/riscv/vcrypto_helper.c | 63 +++----
target/riscv/vector_helper.c | 168 ++++++-----------
target/riscv/vector_internals.c | 28 +++
target/riscv/vector_internals.h | 4 +
8 files changed, 186 insertions(+), 336 deletions(-)
--
2.43.2
- [PATCH v8 00/10] riscv: set vstart_eq_zero on mark_vs_dirty,
Daniel Henrique Barboza <=
- [PATCH v8 02/10] target/riscv: handle vstart >= vl in vext_set_tail_elems_1s(), Daniel Henrique Barboza, 2024/03/08
- [PATCH v8 01/10] target/riscv/vector_helper.c: set vstart = 0 in GEN_VEXT_VSLIDEUP_VX(), Daniel Henrique Barboza, 2024/03/08
- [PATCH v8 03/10] target/riscv/vector_helper.c: do vstart=0 after updating tail, Daniel Henrique Barboza, 2024/03/08
- [PATCH v8 04/10] target/riscv/vector_helper.c: update tail with vext_set_tail_elems_1s(), Daniel Henrique Barboza, 2024/03/08
- [PATCH v8 05/10] target/riscv: use vext_set_tail_elems_1s() in vcrypto insns, Daniel Henrique Barboza, 2024/03/08
- [PATCH v8 06/10] trans_rvv.c.inc: set vstart = 0 in int scalar move insns, Daniel Henrique Barboza, 2024/03/08
- [PATCH v8 07/10] target/riscv: remove 'over' brconds from vector trans, Daniel Henrique Barboza, 2024/03/08
- [PATCH v8 08/10] trans_rvv.c.inc: remove redundant mark_vs_dirty() calls, Daniel Henrique Barboza, 2024/03/08