Hi Anton,
You might need to extend this patch or provide a new patch to handle
the different EEWs source operands checking for the vrgatherei16.vv
instruction (when SEW is not 16).
Thanks,
Max
On 2025/1/26 3:20 PM, Anton Blanchard wrote:
Signed-off-by: Anton Blanchard
---
target/riscv/insn
Hi Anton,
I think that the commit message could be improved for better clarity.
The vext_check_ss function affects more RVV instructions than the
vadd.vx instruction alone.
(PS:perhaps using the category (OPIVX/OPFVF/etc.) to describe the
affected RVV instructions would be more helpful.)
Addit
Hi Anton,
The vext_check_slide function affects the
vslide[up|down].v[x|i]/vfslide1[up|down].vf/vslide1[up|down].vx
instructions than the vslide1down.vx instruction alone.
Therefore, it would be more appropriate to update the commit message to
provide a clearer information.
(PS:perhaps, using
Hi Anton,
This patch violates some coding style rules of QEMU.
You can verify the coding style by running the checkpatch.pl script in
the QEMU repository.
(ref:
https://www.qemu.org/docs/master/devel/submitting-a-patch.html#use-the-qemu-coding-style)
The patch 12 also has the same issue.
Than
Reviewed-by: Max Chou
On 2025/1/26 3:20 PM, Anton Blanchard wrote:
Signed-off-by: Anton Blanchard
---
target/riscv/insn_trans/trans_rvv.c.inc | 18 +-
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/target/riscv/insn_trans/trans_rvv.c.inc
b/target/riscv
On 2024/12/11 8:51 PM, Craig Blackmore wrote:
Calling `vext_continuous_ldst_tlb` for load/stores smaller than 12 bytes
significantly improves performance.
Co-authored-by: Helene CHELIN
Co-authored-by: Paolo Savini
Co-authored-by: Craig Blackmore
Signed-off-by: Helene CHELIN
Signed-off-by: P
Reviewed-by: Max Chou
max
On 2024/12/18 10:23 PM, Craig Blackmore wrote:
Replace `continus` with `continuous`.
Signed-off-by: Craig Blackmore
---
target/riscv/vector_helper.c | 10 +-
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/target/riscv/vector_helper.c b
+for (int i = 0; i < size; i += 16) {
+addr = get_address(s, rs1, i);
+if (is_load) {
+tcg_gen_qemu_ld_i128(t16, addr, s->mem_idx,
+MO_LE | MO_128 | atomicity);
+tcg_gen_st_i128(t16, tcg_env, vreg_ofs(s, vd) +
value
to 64 bits during the TCG translation phase to ensure that the helper
functions won't lost the higer 32 bits.
Signed-off-by: Max Chou
---
target/riscv/helper.h | 16
target/riscv/insn_trans/trans_rvv.c.inc | 50 -
target/
In prop_vlen_set function, there is an incorrect comparison between
vlen(bit) and vlenb(byte).
This will cause unexpected error when user applies the `vlen=1024` cpu
option with a vendor predefined cpu type that the default vlen is
1024(vlenb=128).
Signed-off-by: Max Chou
---
target/riscv/cpu.c
According to the Vector Reduction Operations section in the RISC-V "V"
Vector Extension spec,
"If vl=0, no operation is performed and the destination register is not
updated."
The vd should be updated when vl is larger than 0.
Signed-off-by: Max Chou
---
target/riscv
According to the v spec, a vector register cannot be used to provide source
operands with more than one EEW for a single instruction.
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 29 +
1 file changed, 29 insertions(+)
diff --git a/target/riscv
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 6 --
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/target/riscv
According to the v spec, a vector register cannot be used to provide source
operands with more than one EEW for a single instruction.
The vs1 EEW of vrgatherei16.vv is 16.
Co-authored-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn_trans
Handle the overlap of source registers with different EEWs.
The vd of vector widening mul-add instructions is one of the input
operands.
Co-authored-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvbf16.c.inc | 9 ++-
target
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans
From: Anton Blanchard
Signed-off-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Reviewed-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 18 +-
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/target/riscv/insn_trans
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans
According to the v spec, the encodings of vcomoress.vm and vector
mask-register logical instructions with vm=0 are reserved.
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn32.decode | 18 +-
1 file changed, 9 insertions(+), 9 deletions
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 1 +
1 file changed, 1 insertion(+)
diff --git a/target/riscv/insn_trans/trans_rvv.c.inc
b
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans
From: Anton Blanchard
Add the relevant ISA paragraphs explaining why source (and destination)
registers cannot overlap the mask register.
Signed-off-by: Anton Blanchard
Reviewed-by: Daniel Henrique Barboza
Reviewed-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans
estions and review.
Anton Blanchard (2):
target/riscv: rvv: Source vector registers cannot overlap mask
register
target/riscv: rvv: Add CHECK arg to GEN_OPFVF_WIDEN_TRANS
Max Chou (8):
target/riscv: rvv: Apply vext_check_input_eew to vrgather instructions
to check mismatched i
On 2025/4/5 5:09 PM, Daniel Henrique Barboza wrote:
On 3/29/25 11:44 AM, Max Chou wrote:
According to the v spec, a vector register cannot be used to provide
source
operands with more than one EEW for a single instruction.
Signed-off-by: Max Chou
---
target/riscv/insn_trans
On 2025/4/5 5:14 PM, Daniel Henrique Barboza wrote:
On 3/29/25 11:44 AM, Max Chou wrote:
Handle the overlap of source registers with different EEWs.
The vs1 EEW of vrgatherei16.vv is 16.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Since you're marked as Author you don
On 2025/4/5 5:17 PM, Daniel Henrique Barboza wrote:
On 3/29/25 11:44 AM, Max Chou wrote:
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1
Hi Anton,
I hope you’re doing well.
While reviewing this patchset, I noticed a few missing parts related to
the mismatched input EEWs encoding constraint.
I also found a few other rvv encoding issues and planned to submit an
upstream patchset to address them.
However, I think it would be bette
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans
From: Anton Blanchard
Add the relevant ISA paragraphs explaining why source (and destination)
registers cannot overlap the mask register.
Signed-off-by: Anton Blanchard
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 29 ++---
1 file changed, 26
andling of register overlaps in vector widening/narrowing
instructions
4. Fix unmasked RVV instruction encoding (e.g. vcompress.vm)
Anton Blanchard (2):
target/riscv: rvv: Source vector registers cannot overlap mask
register
target/riscv: rvv: Add CHECK arg to GEN_OPFVF_WIDEN_TRANS
Ma
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 6 --
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/target/riscv/insn_trans
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans
From: Anton Blanchard
Signed-off-by: Anton Blanchard
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 18 +-
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/target/riscv/insn_trans/trans_rvv.c.inc
b/target/riscv/insn_trans/trans_rvv.c.inc
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans
According to the v spec, the encodings of vcomoress.vm and vector
mask-register logical instructions with vm=0 are reserved.
Signed-off-by: Max Chou
---
target/riscv/insn32.decode | 18 +-
1 file changed, 9 insertions(+), 9 deletions(-)
diff --git a/target/riscv/insn32.decode b
Handle the overlap of source registers with different EEWs.
The vd of vector widening mul-add instructions is one of the input
operands.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvbf16.c.inc | 9 ++-
target/riscv
Handle the overlap of source registers with different EEWs.
The vs1 EEW of vrgatherei16.vv is 16.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 3 +++
1 file changed, 3 insertions(+)
diff --git a/target/riscv
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans
Handle the overlap of source registers with different EEWs.
Co-authored-by: Anton Blanchard
Co-authored-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 1 +
1 file changed, 1 insertion(+)
diff --git a/target/riscv/insn_trans/trans_rvv.c.inc
b/target/riscv
Hi Nutty,
Thanks for the suggestion.
I'll provide a new version including the new description and a fix about
another EEWs issue.
Thanks,
Max
On Tue, Jul 1, 2025 at 2:43 PM Nutty Liu
wrote:
> On 6/27/2025 9:20 PM, Max Chou wrote:
> > From: Anton Blanchard
> >
>
On 6/27/25 10:21 AM, Max Chou wrote:
> > According to the RISC-V instruction set manual, the minimum VLEN needs
> > to respect the following extensions:
> >
> >Extension Minimum VLEN
> > * V 128
> > * Zve64[d|f|x] 64
> > * Zve32[f|x
From: Anton Blanchard
We were marking vadc and vsbc as vm=1 instructions, which meant
vext_check_input_eew wouldn't detect mask vs source register
overlaps.
Signed-off-by: Anton Blanchard
Reviewed-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn32.decode | 10 +-
1
From: Anton Blanchard
Handle the overlap of source registers with different EEWs.
Signed-off-by: Anton Blanchard
Reviewed-by: Max Chou
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 22 --
1 file changed, 12 insertions(+), 10 deletions(-)
diff
From: Anton Blanchard
Handle the overlap of source registers with different EEWs.
Signed-off-by: Anton Blanchard
Signed-off-by: Max Chou
---
target/riscv/insn_trans/trans_rvv.c.inc | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/target/riscv/insn_trans/trans_rvv.c.inc
According to the RISC-V instruction set manual, the minimum VLEN needs
to respect the following extensions:
Extension Minimum VLEN
* V 128
* Zve64[d|f|x] 64
* Zve32[f|x] 32
Signed-off-by: Max Chou
---
target/riscv/tcg/tcg-cpu.c | 13 +++--
1 file changed, 11
According to the V spec, the vector fault-only-first load instructions
may change the VL CSR.
So the ldff_trans TCG translation function should generate the
lookup_and_goto_ptr flow as the vsetvl/vsetvli translation function to
make sure the vl_eq_vlmax TB flag is correct.
Signed-off-by: Max Chou
This patchset is based on the v1 provided by Anoton Blanchard with
following update:
* Add the missing input EEWs checking rule for widen vector reduction
instruction.
Reference:
* v1: 20250415043207.3512209-1-ant...@tenstorrent.com
Anton Blanchard (3):
target/riscv: rvv: Apply vext_check_in
From: Nazar Kazakov
Exposes earlier CPU flags allowing the use of the vector cryptography
extensions.
Signed-off-by: Nazar Kazakov
Signed-off-by: Max Chou
---
target/riscv/cpu.c | 10 ++
1 file changed, 10 insertions(+)
diff --git a/target/riscv/cpu.c b/target/riscv/cpu.c
index
201 - 248 of 248 matches
Mail list logo