On 3/27/23 20:06, Song Gao wrote:
+static bool do_cmp(DisasContext *ctx, arg_vvv *a, MemOp mop, TCGCond cond, + void (*func)(TCGCond, unsigned, uint32_t, uint32_t, + uint32_t, uint32_t, uint32_t)) +{ + uint32_t vd_ofs, vj_ofs, vk_ofs; + + CHECK_SXE; + + vd_ofs = vreg_full_offset(a->vd); + vj_ofs = vreg_full_offset(a->vj); + vk_ofs = vreg_full_offset(a->vk); + + func(cond, mop, vd_ofs, vj_ofs, vk_ofs, 16, 16);
You always pass tcg_gen_cmp_vec.
+static void do_cmpi_vec(TCGCond cond, + unsigned vece, TCGv_vec t, TCGv_vec a, int64_t imm) +{ + TCGv_vec t1; + + t1 = tcg_temp_new_vec_matching(t); + tcg_gen_dupi_vec(vece, t1, imm);
tcg_constant_vec_matching. r~