@samitouri / QOSamiQemu / commits / f1f8762cc4

target/arm: Implement SUMOP4[AS]

Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20260702204314.79224-12-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Richard Henderson committed Jul 2, 2026 at 13:43 UTC f1f8762cc4d711d0b300612b2c3da1d6f752001d
4 files changed +18
target/arm/tcg/helper-sme-defs.h
+5
@@ -386,3 +386,8 @@ DEF_HELPER_FLAGS_4(sme_smop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
386 DEF_HELPER_FLAGS_4(sme_smop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
387 DEF_HELPER_FLAGS_4(sme_smop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
388 DEF_HELPER_FLAGS_4(sme_smop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
389 +
390 +DEF_HELPER_FLAGS_4(sme_sumop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
391 +DEF_HELPER_FLAGS_4(sme_sumop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
392 +DEF_HELPER_FLAGS_4(sme_sumop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
393 +DEF_HELPER_FLAGS_4(sme_sumop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
target/arm/tcg/sme.decode
+3
@@ -1120,3 +1120,6 @@ FMOP4A_hb 1000 0000 001. ...0 0000 00.. ..00 100. @mop4_o1_s0
1120 SMOP4_sh 1000 0000 000. ...0 1000 00.. ..0. 10.. @mop4_o2
1121 SMOP4_sb 1000 0000 000. ...0 1000 00.. ..0. 00.. @mop4_o2
1122 SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3
1123 +
1124 +SUMOP4_sb 1000 0000 001. ...0 1000 00.. ..0. 00.. @mop4_o2
1125 +SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1... @mop4_o3
target/arm/tcg/sme_helper.c
+5
@@ -2972,4 +2972,9 @@ IMOP4_4WAY(smop4s_sb, -, int32_t, int8_t, int8_t)
2972 IMOP4_4WAY(smop4a_dh, +, int64_t, int16_t, int16_t)
2973 IMOP4_4WAY(smop4s_dh, -, int64_t, int16_t, int16_t)
2974
2975 +IMOP4_4WAY(sumop4a_sb, +, int32_t, int8_t, uint8_t)
2976 +IMOP4_4WAY(sumop4s_sb, -, int32_t, int8_t, uint8_t)
2977 +IMOP4_4WAY(sumop4a_dh, +, int64_t, int16_t, uint16_t)
2978 +IMOP4_4WAY(sumop4s_dh, -, int64_t, int16_t, uint16_t)
2979 +
2980 #undef IMOP4_4WAY
target/arm/tcg/translate-sme.c
+5
@@ -2114,3 +2114,8 @@ TRANS_FEAT(SMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32,
2114 a->s ? gen_helper_sme_smop4s_sb : gen_helper_sme_smop4a_sb)
2115 TRANS_FEAT(SMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64,
2116 a->s ? gen_helper_sme_smop4s_dh : gen_helper_sme_smop4a_dh)
2117 +
2118 +TRANS_FEAT(SUMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32,
2119 + a->s ? gen_helper_sme_sumop4s_sb : gen_helper_sme_sumop4a_sb)
2120 +TRANS_FEAT(SUMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64,
2121 + a->s ? gen_helper_sme_sumop4s_dh : gen_helper_sme_sumop4a_dh)