target/arm: Implement SVE mixed sign dot product
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210525010358.152808-68-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
2867039a9f
commit
6a98cb2ae0
@ -612,6 +612,7 @@ DEF_HELPER_FLAGS_5(gvec_sdot_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
|
||||
DEF_HELPER_FLAGS_5(gvec_udot_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
|
||||
DEF_HELPER_FLAGS_5(gvec_sdot_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
|
||||
DEF_HELPER_FLAGS_5(gvec_udot_h, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
|
||||
DEF_HELPER_FLAGS_5(gvec_usdot_b, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
|
||||
|
||||
DEF_HELPER_FLAGS_5(gvec_sdot_idx_b, TCG_CALL_NO_RWG,
|
||||
void, ptr, ptr, ptr, ptr, i32)
|
||||
|
@ -1530,6 +1530,10 @@ UMLSLT_zzzw 01000100 .. 0 ..... 010 111 ..... ..... @rda_rn_rm
|
||||
CMLA_zzzz 01000100 esz:2 0 rm:5 0010 rot:2 rn:5 rd:5 ra=%reg_movprfx
|
||||
SQRDCMLAH_zzzz 01000100 esz:2 0 rm:5 0011 rot:2 rn:5 rd:5 ra=%reg_movprfx
|
||||
|
||||
## SVE mixed sign dot product
|
||||
|
||||
USDOT_zzzz 01000100 .. 0 ..... 011 110 ..... ..... @rda_rn_rm
|
||||
|
||||
### SVE2 floating point matrix multiply accumulate
|
||||
|
||||
FMMLA 01100100 .. 1 ..... 111001 ..... ..... @rda_rn_rm
|
||||
|
@ -8132,3 +8132,19 @@ static bool trans_SQRDCMLAH_zzzz(DisasContext *s, arg_SQRDCMLAH_zzzz *a)
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool trans_USDOT_zzzz(DisasContext *s, arg_USDOT_zzzz *a)
|
||||
{
|
||||
if (a->esz != 2 || !dc_isar_feature(aa64_sve_i8mm, s)) {
|
||||
return false;
|
||||
}
|
||||
if (sve_access_check(s)) {
|
||||
unsigned vsz = vec_full_reg_size(s);
|
||||
tcg_gen_gvec_4_ool(vec_full_reg_offset(s, a->rd),
|
||||
vec_full_reg_offset(s, a->rn),
|
||||
vec_full_reg_offset(s, a->rm),
|
||||
vec_full_reg_offset(s, a->ra),
|
||||
vsz, vsz, 0, gen_helper_gvec_usdot_b);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
@ -566,6 +566,7 @@ void HELPER(NAME)(void *vd, void *vn, void *vm, void *va, uint32_t desc) \
|
||||
|
||||
DO_DOT(gvec_sdot_b, int32_t, int8_t, int8_t)
|
||||
DO_DOT(gvec_udot_b, uint32_t, uint8_t, uint8_t)
|
||||
DO_DOT(gvec_usdot_b, uint32_t, uint8_t, int8_t)
|
||||
DO_DOT(gvec_sdot_h, int64_t, int16_t, int16_t)
|
||||
DO_DOT(gvec_udot_h, uint64_t, uint16_t, uint16_t)
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user