On Tue, 16 Sep 2025 17:21:36 +0800, Chao Liu wrote:
>Hi all,
>
>Thanks Richard for the review. In patch v9:
>
>- Simplify the implementation of gen_check_vext_elem_mask():
> remove the `mask` argument, compute the mask directly inside the function,
> and eliminate redundant code.
>
>- Limit the bit width to 8 bits when loading the mask from memory.
>
>- Remove the `vreg` argument in gen_ldst_vreg().
>
>History of changes:
>
>patch v8:
>- Use the right TCGv type for each variable — for example, make mask_elem
> type TCGv_i64.
>- Use tcg_gen_trunc_i64_ptr() to change TCGv types — don't use C-style
> casting.
>- Use TCG_COND_TSTNE, not TCG_COND_NE in tcg_gen_brcond_i64() to represent:
> if (vext_elem_mask(v0, i) != 0)
> https://lore.kernel.org/qemu-devel/cover.1757690407.git.chao.liu@zevorn.cn/
>
>patch v7:
>- Standardize the subject line of patch 1 and remove the trailing period.
>- Split into sub-functions to improve the patch's code readability and
> facilitate review.
>- Use more faster TCG ops, use tcg_gen_andi_tl() instead of tcg_gen_rem_tl().
>- Add a tested-by signature for patch 2, as Eric has already tested it.
> https://lore.kernel.org/qemu-devel/cover.1756975571.git.chao.liu@zevorn.cn/
>
>patch v6:
>- If a strided vector memory access instruction has non-zero vstart,
> check it through vlse/vsse helpers function.
>- Adjust the tcg test Makefile.
> https://lore.kernel.org/qemu-devel/cover.1756906528.git.chao.liu@zevorn.cn/
>
>Patch v5:
>- Removed the redundant call to mark_vs_dirty(s) within the
> gen_ldst_stride_main_loop() function.
> https://lore.kernel.org/qemu-riscv/cover.1755609029.git.chao.liu@zevorn.cn/
>
>Patch v4:
>- Use ctz32() replace to for-loop
> https://lore.kernel.org/qemu-devel/cover.1755333616.git.chao.liu@yeah.net/
>
>Patch v3:
>- Fix the get_log2() function:
> https://lore.kernel.org/qemu-riscv/cover.1755287531.git.chao.liu@yeah.net/T/#t
>- Add test for vlsseg8e32 instruction.
>- Rebase on top of the latest master.
>
>Patch v2:
>- Split the TCG node emulation of the complex strided load/store operation into
> two separate functions to simplify the implementation:
> https://lore.kernel.org/qemu-riscv/20250312155547.289642-1-paolo.savini@embecosm.com/
>
>Patch v1:
>- Paolo submitted the initial version of the patch.
> https://lore.kernel.org/qemu-devel/20250211182056.412867-1-paolo.savini@embecosm.com/
>
Ping.
Does anyone have any further comments or revisions on this set of patches?
I have been using them in the production environment for a long time, and so far,
they have been working reliably.
Thanks,
Chao