Browse Source

rvv: commitlog: fix vmsgtu.vi and vmsleu.vi dst information

Comparison only writes one vector register

Signed-off-by: Chih-Min Chao <chihmin.chao@sifive.com>
pull/456/head
Chih-Min Chao 6 years ago
parent
commit
020e9aa441
  1. 11
      riscv/decode.h
  2. 2
      riscv/insns/vmsgtu_vi.h
  3. 2
      riscv/insns/vmsleu_vi.h

11
riscv/decode.h

@ -660,6 +660,9 @@ static inline bool is_overlapped(const int astart, const int asize,
type_usew_t<x>::type rs1 = (type_usew_t<x>::type)RS1; \
type_usew_t<x>::type vs2 = P.VU.elt<type_usew_t<x>::type>(rs2_num, i);
#define VI_UCMP_PARAMS(x) \
type_usew_t<x>::type vs2 = P.VU.elt<type_usew_t<x>::type>(rs2_num, i);
#define VV_CMP_PARAMS(x) \
type_sew_t<x>::type vs1 = P.VU.elt<type_sew_t<x>::type>(rs1_num, i); \
type_sew_t<x>::type vs2 = P.VU.elt<type_sew_t<x>::type>(rs2_num, i);
@ -819,16 +822,16 @@ static inline bool is_overlapped(const int astart, const int asize,
VI_CHECK_MSS(false); \
VI_LOOP_CMP_BASE \
if (sew == e8){ \
VI_U_PARAMS(e8); \
VI_UCMP_PARAMS(e8); \
BODY; \
}else if(sew == e16){ \
VI_U_PARAMS(e16); \
VI_UCMP_PARAMS(e16); \
BODY; \
}else if(sew == e32){ \
VI_U_PARAMS(e32); \
VI_UCMP_PARAMS(e32); \
BODY; \
}else if(sew == e64){ \
VI_U_PARAMS(e64); \
VI_UCMP_PARAMS(e64); \
BODY; \
} \
VI_LOOP_CMP_END

2
riscv/insns/vmsgtu_vi.h

@ -1,4 +1,4 @@
// vsgtu.vi vd, vd2, simm5
// vmsgtu.vi vd, vd2, simm5
VI_VI_ULOOP_CMP
({
res = vs2 > (insn.v_simm5() & (UINT64_MAX >> (64 - P.VU.vsew)));

2
riscv/insns/vmsleu_vi.h

@ -1,4 +1,4 @@
// vsleu.vi vd, vs2, simm5
// vmsleu.vi vd, vs2, simm5
VI_VI_ULOOP_CMP
({
res = vs2 <= (insn.v_simm5() & (UINT64_MAX >> (64 - P.VU.vsew)));

Loading…
Cancel
Save