@samitouri / QOSamiQemu / commits / e56b670ea1

target/arm: Implement {S,SU,US,U}TMOPA (4-way)

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

Richard Henderson committed Aug 11, 2026 at 20:14 UTC e56b670ea130b05c6abd3218357996a14c88338d
4 files changed +33
target/arm/tcg/helper-sme-defs.h
+5
@@ -414,3 +414,8 @@ DEF_HELPER_FLAGS_6(sme_ftmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, env
414
415 DEF_HELPER_FLAGS_5(sme_stmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
416 DEF_HELPER_FLAGS_5(sme_utmopa_sh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
417 +
418 +DEF_HELPER_FLAGS_5(sme_stmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
419 +DEF_HELPER_FLAGS_5(sme_sutmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
420 +DEF_HELPER_FLAGS_5(sme_utmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
421 +DEF_HELPER_FLAGS_5(sme_ustmopa_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, ptr, i32)
target/arm/tcg/sme.decode
+5
@@ -1154,3 +1154,8 @@ FTMOPA_sb 1000 0000 011 ..... 000 ... .... .. 00 .. @tmop_o2
1154
1155 STMOPA_sh 1000 0000 010 ..... 100 ... .... .. 10 .. @tmop_o2
1156 UTMOPA_sh 1000 0001 010 ..... 100 ... .... .. 10 .. @tmop_o2
1157 +
1158 +STMOPA_sb 1000 0000 010 ..... 100 ... .... .. 00 .. @tmop_o2
1159 +SUTMOPA_sb 1000 0000 011 ..... 100 ... .... .. 00 .. @tmop_o2
1160 +USTMOPA_sb 1000 0001 010 ..... 100 ... .... .. 00 .. @tmop_o2
1161 +UTMOPA_sb 1000 0001 011 ..... 100 ... .... .. 00 .. @tmop_o2
target/arm/tcg/sme_helper.c
+14
@@ -3168,3 +3168,17 @@ IMOP4_4WAY(usmop4a_dh, +, int64_t, uint16_t, int16_t)
3168 IMOP4_4WAY(usmop4s_dh, -, int64_t, uint16_t, int16_t)
3169
3170 #undef IMOP4_4WAY
3171 +
3172 +#define ITMOP_4WAY(TNAME, MNAME) \
3173 +void HELPER(sme_##TNAME)(void *vza, void *vzn, void *vzm, \
3174 + void *vzk, uint32_t desc) \
3175 +{ \
3176 + sme_tmop_4way_sb(vza, vzn, vzm, vzk, NULL, desc, inner_##MNAME); \
3177 +}
3178 +
3179 +ITMOP_4WAY(stmopa_sb, smop4a_sb)
3180 +ITMOP_4WAY(utmopa_sb, umop4a_sb)
3181 +ITMOP_4WAY(sutmopa_sb, sumop4a_sb)
3182 +ITMOP_4WAY(ustmopa_sb, usmop4a_sb)
3183 +
3184 +#undef ITMOP_4WAY
target/arm/tcg/translate-sme.c
+9
@@ -2202,3 +2202,12 @@ TRANS_FEAT(STMOPA_sh, aa64_sme_tmop, do_tmop_int,
2202 a, MO_32, gen_helper_sme_stmopa_sh)
2203 TRANS_FEAT(UTMOPA_sh, aa64_sme_tmop, do_tmop_int,
2204 a, MO_32, gen_helper_sme_utmopa_sh)
2205 +
2206 +TRANS_FEAT(STMOPA_sb, aa64_sme_tmop, do_tmop_int,
2207 + a, MO_32, gen_helper_sme_stmopa_sb)
2208 +TRANS_FEAT(SUTMOPA_sb, aa64_sme_tmop, do_tmop_int,
2209 + a, MO_32, gen_helper_sme_sutmopa_sb)
2210 +TRANS_FEAT(USTMOPA_sb, aa64_sme_tmop, do_tmop_int,
2211 + a, MO_32, gen_helper_sme_ustmopa_sb)
2212 +TRANS_FEAT(UTMOPA_sb, aa64_sme_tmop, do_tmop_int,
2213 + a, MO_32, gen_helper_sme_utmopa_sb)