return true;
}
+static bool gen_gvec_ool_arg_zzz(DisasContext *s, gen_helper_gvec_3 *fn,
+ arg_rrr_esz *a, int data)
+{
+ return gen_gvec_ool_zzz(s, fn, a->rd, a->rn, a->rm, data);
+}
+
/* Invoke an out-of-line helper on 4 Zregs. */
static void gen_gvec_ool_zzzz(DisasContext *s, gen_helper_gvec_4 *fn,
int rd, int rn, int rm, int ra, int data)
return do_shift_imm(s, a, false, tcg_gen_gvec_shli);
}
-static bool do_zzw_ool(DisasContext *s, arg_rrr_esz *a, gen_helper_gvec_3 *fn)
-{
- return gen_gvec_ool_zzz(s, fn, a->rd, a->rn, a->rm, 0);
-}
-
#define DO_ZZW(NAME, name) \
static bool trans_##NAME##_zzw(DisasContext *s, arg_rrr_esz *a) \
{ \
gen_helper_sve_##name##_zzw_b, gen_helper_sve_##name##_zzw_h, \
gen_helper_sve_##name##_zzw_s, NULL \
}; \
- return do_zzw_ool(s, a, fns[a->esz]); \
+ return gen_gvec_ool_arg_zzz(s, fns[a->esz], a, 0); \
}
DO_ZZW(ASR, asr)
gen_helper_sve_ftssel_s,
gen_helper_sve_ftssel_d,
};
- return gen_gvec_ool_zzz(s, fns[a->esz], a->rd, a->rn, a->rm, 0);
+ return gen_gvec_ool_arg_zzz(s, fns[a->esz], a, 0);
}
/*
gen_helper_sve_tbl_b, gen_helper_sve_tbl_h,
gen_helper_sve_tbl_s, gen_helper_sve_tbl_d
};
- return gen_gvec_ool_zzz(s, fns[a->esz], a->rd, a->rn, a->rm, 0);
+ return gen_gvec_ool_arg_zzz(s, fns[a->esz], a, 0);
}
static bool trans_TBL_sve2(DisasContext *s, arg_rrr_esz *a)
if (!dc_isar_feature(aa64_sve2, s)) {
return false;
}
- return gen_gvec_ool_zzz(s, fns[a->esz], a->rd, a->rn, a->rm, 0);
+ return gen_gvec_ool_arg_zzz(s, fns[a->esz], a, 0);
}
static bool trans_UNPK(DisasContext *s, arg_UNPK *a)
return true;
}
-static bool do_zzz_data_ool(DisasContext *s, arg_rrr_esz *a, int data,
- gen_helper_gvec_3 *fn)
-{
- return gen_gvec_ool_zzz(s, fn, a->rd, a->rn, a->rm, data);
-}
-
static bool trans_ZIP1_z(DisasContext *s, arg_rrr_esz *a)
{
return do_zip(s, a, false);
static bool trans_UZP1_z(DisasContext *s, arg_rrr_esz *a)
{
- return do_zzz_data_ool(s, a, 0, uzp_fns[a->esz]);
+ return gen_gvec_ool_arg_zzz(s, uzp_fns[a->esz], a, 0);
}
static bool trans_UZP2_z(DisasContext *s, arg_rrr_esz *a)
{
- return do_zzz_data_ool(s, a, 1 << a->esz, uzp_fns[a->esz]);
+ return gen_gvec_ool_arg_zzz(s, uzp_fns[a->esz], a, 1 << a->esz);
}
static bool trans_UZP1_q(DisasContext *s, arg_rrr_esz *a)
if (!dc_isar_feature(aa64_sve_f64mm, s)) {
return false;
}
- return do_zzz_data_ool(s, a, 0, gen_helper_sve2_uzp_q);
+ return gen_gvec_ool_arg_zzz(s, gen_helper_sve2_uzp_q, a, 0);
}
static bool trans_UZP2_q(DisasContext *s, arg_rrr_esz *a)
if (!dc_isar_feature(aa64_sve_f64mm, s)) {
return false;
}
- return do_zzz_data_ool(s, a, 16, gen_helper_sve2_uzp_q);
+ return gen_gvec_ool_arg_zzz(s, gen_helper_sve2_uzp_q, a, 16);
}
static gen_helper_gvec_3 * const trn_fns[4] = {
static bool trans_TRN1_z(DisasContext *s, arg_rrr_esz *a)
{
- return do_zzz_data_ool(s, a, 0, trn_fns[a->esz]);
+ return gen_gvec_ool_arg_zzz(s, trn_fns[a->esz], a, 0);
}
static bool trans_TRN2_z(DisasContext *s, arg_rrr_esz *a)
{
- return do_zzz_data_ool(s, a, 1 << a->esz, trn_fns[a->esz]);
+ return gen_gvec_ool_arg_zzz(s, trn_fns[a->esz], a, 1 << a->esz);
}
static bool trans_TRN1_q(DisasContext *s, arg_rrr_esz *a)
if (!dc_isar_feature(aa64_sve_f64mm, s)) {
return false;
}
- return do_zzz_data_ool(s, a, 0, gen_helper_sve2_trn_q);
+ return gen_gvec_ool_arg_zzz(s, gen_helper_sve2_trn_q, a, 0);
}
static bool trans_TRN2_q(DisasContext *s, arg_rrr_esz *a)
if (!dc_isar_feature(aa64_sve_f64mm, s)) {
return false;
}
- return do_zzz_data_ool(s, a, 16, gen_helper_sve2_trn_q);
+ return gen_gvec_ool_arg_zzz(s, gen_helper_sve2_trn_q, a, 16);
}
/*
if (!dc_isar_feature(aa64_sve2, s)) {
return false;
}
- return gen_gvec_ool_zzz(s, fn, a->rd, a->rn, a->rm, 0);
+ return gen_gvec_ool_arg_zzz(s, fn, a, 0);
}
static bool trans_SMULH_zzz(DisasContext *s, arg_rrr_esz *a)
if (!dc_isar_feature(aa64_sve2_aes, s)) {
return false;
}
- return gen_gvec_ool_zzz(s, gen_helper_crypto_aese,
- a->rd, a->rn, a->rm, decrypt);
+ return gen_gvec_ool_arg_zzz(s, gen_helper_crypto_aese, a, decrypt);
}
static bool trans_AESE(DisasContext *s, arg_rrr_esz *a)
if (!dc_isar_feature(aa64_sve2_sm4, s)) {
return false;
}
- return gen_gvec_ool_zzz(s, fn, a->rd, a->rn, a->rm, 0);
+ return gen_gvec_ool_arg_zzz(s, fn, a, 0);
}
static bool trans_SM4E(DisasContext *s, arg_rrr_esz *a)