Hi all, In this patch (v5), I've removed the redundant call to mark_vs_dirty(s) within the gen_ldst_stride_main_loop() function.
The reason for this change is that mark_vs_dirty(s) is already being called at a higher level, making the call inside gen_ldst_stride_main_loop() unnecessary. static void gen_ldst_stride_main_loop(...) { ... - mark_vs_dirty(s); ... } static bool ldst_stride_trans(...) { .... mark_vs_dirty(s); gen_ldst_stride_main_loop(s, dest, rs1, rs2, vm, nf, ld_fn, st_fn, is_load); } patch v4 changes: - Use ctz32() replace to for-loop https://lore.kernel.org/qemu-devel/cover.1755333616.git.chao....@yeah.net/ patch v3 changes: - Fix the get_log2() function: https://lore.kernel.org/qemu-riscv/cover.1755287531.git.chao....@yeah.net/T/#t - Add test for vlsseg8e32 instruction. - Rebase on top of the latest master. patch v2 changes: - 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.sav...@embecosm.com/ Best regards, Chao Chao Liu (2): Generate strided vector loads/stores with tcg nodes. tests/tcg/riscv64: Add test for vlsseg8e32 instruction target/riscv/insn_trans/trans_rvv.c.inc | 317 ++++++++++++++++++---- tests/tcg/riscv64/Makefile.softmmu-target | 8 +- tests/tcg/riscv64/test-vlsseg8e32.S | 107 ++++++++ 3 files changed, 380 insertions(+), 52 deletions(-) create mode 100644 tests/tcg/riscv64/test-vlsseg8e32.S -- 2.50.1