diff --git a/riscv/v_ext_macros.h b/riscv/v_ext_macros.h index 8f9820d9..a95af3ea 100644 --- a/riscv/v_ext_macros.h +++ b/riscv/v_ext_macros.h @@ -608,7 +608,7 @@ static inline bool is_overlapped_widen(const int astart, int asize, reg_t rd_num = insn.rd(); \ reg_t rs1_num = insn.rs1(); \ reg_t rs2_num = insn.rs2(); \ - auto &vd_0_des = P.VU.elt::type>(rd_num, 0, true); \ + auto &vd_0_des = P.VU.elt::type>(rd_num, 0, vl > 0); \ auto vd_0_res = P.VU.elt::type>(rs1_num, 0); \ for (reg_t i = P.VU.vstart->read(); i < vl; ++i) { \ VI_LOOP_ELEMENT_SKIP(); \ @@ -639,7 +639,7 @@ static inline bool is_overlapped_widen(const int astart, int asize, reg_t rd_num = insn.rd(); \ reg_t rs1_num = insn.rs1(); \ reg_t rs2_num = insn.rs2(); \ - auto &vd_0_des = P.VU.elt::type>(rd_num, 0, true); \ + auto &vd_0_des = P.VU.elt::type>(rd_num, 0, vl > 0); \ auto vd_0_res = P.VU.elt::type>(rs1_num, 0); \ for (reg_t i = P.VU.vstart->read(); i < vl; ++i) { \ VI_LOOP_ELEMENT_SKIP(); \ @@ -1019,7 +1019,7 @@ static inline bool is_overlapped_widen(const int astart, int asize, reg_t rd_num = insn.rd(); \ reg_t rs1_num = insn.rs1(); \ reg_t rs2_num = insn.rs2(); \ - auto &vd_0_des = P.VU.elt::type>(rd_num, 0, true); \ + auto &vd_0_des = P.VU.elt::type>(rd_num, 0, vl > 0); \ auto vd_0_res = P.VU.elt::type>(rs1_num, 0); \ for (reg_t i = P.VU.vstart->read(); i < vl; ++i) { \ VI_LOOP_ELEMENT_SKIP(); \ @@ -1047,7 +1047,7 @@ static inline bool is_overlapped_widen(const int astart, int asize, reg_t rd_num = insn.rd(); \ reg_t rs1_num = insn.rs1(); \ reg_t rs2_num = insn.rs2(); \ - auto &vd_0_des = P.VU.elt::type>(rd_num, 0, true); \ + auto &vd_0_des = P.VU.elt::type>(rd_num, 0, vl > 0); \ auto vd_0_res = P.VU.elt::type>(rs1_num, 0); \ for (reg_t i = P.VU.vstart->read(); i < vl; ++i) { \ VI_LOOP_ELEMENT_SKIP(); \