target/arm: Implement UMOP4[AS] (4-way)
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20260702204314.79224-14-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Richard Henderson committed
Jul 2, 2026 at 13:43 UTC
bdd81a778ad8f835c554614cae71b05af751ce78
4 files changed
+18
target/arm/tcg/helper-sme-defs.h
+5
@@ -394,3 +394,8 @@ DEF_HELPER_FLAGS_4(sme_sumop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
394
DEF_HELPER_FLAGS_4(sme_sumop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
395
DEF_HELPER_FLAGS_4(sme_sumop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
396
DEF_HELPER_FLAGS_4(sme_sumop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
397
+
398
+DEF_HELPER_FLAGS_4(sme_umop4a_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
399
+DEF_HELPER_FLAGS_4(sme_umop4s_sb, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
400
+DEF_HELPER_FLAGS_4(sme_umop4a_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
401
+DEF_HELPER_FLAGS_4(sme_umop4s_dh, TCG_CALL_NO_RWG, void, ptr, ptr, ptr, i32)
target/arm/tcg/sme.decode
+3
@@ -1125,3 +1125,6 @@ SMOP4_dh 1010 0000 110. ...0 0000 00.. ..0. 1... @mop4_o3
1125
1126
SUMOP4_sb 1000 0000 001. ...0 1000 00.. ..0. 00.. @mop4_o2
1127
SUMOP4_dh 1010 0000 111. ...0 0000 00.. ..0. 1... @mop4_o3
1128
+
1129
+UMOP4_sb 1000 0001 001. ...0 1000 00.. ..0. 00.. @mop4_o2
1130
+UMOP4_dh 1010 0001 111. ...0 0000 00.. ..0. 1... @mop4_o3
target/arm/tcg/sme_helper.c
+5
@@ -2980,4 +2980,9 @@ IMOP4_4WAY(sumop4s_sb, -, int32_t, int8_t, uint8_t)
2980
IMOP4_4WAY(sumop4a_dh, +, int64_t, int16_t, uint16_t)
2981
IMOP4_4WAY(sumop4s_dh, -, int64_t, int16_t, uint16_t)
2982
2983
+IMOP4_4WAY(umop4a_sb, +, int32_t, uint8_t, uint8_t)
2984
+IMOP4_4WAY(umop4s_sb, -, int32_t, uint8_t, uint8_t)
2985
+IMOP4_4WAY(umop4a_dh, +, int64_t, uint16_t, uint16_t)
2986
+IMOP4_4WAY(umop4s_dh, -, int64_t, uint16_t, uint16_t)
2987
+
2988
#undef IMOP4_4WAY
target/arm/tcg/translate-sme.c
+5
@@ -2122,3 +2122,8 @@ TRANS_FEAT(SUMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32,
2122
a->s ? gen_helper_sme_sumop4s_sb : gen_helper_sme_sumop4a_sb)
2123
TRANS_FEAT(SUMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64,
2124
a->s ? gen_helper_sme_sumop4s_dh : gen_helper_sme_sumop4a_dh)
2125
+
2126
+TRANS_FEAT(UMOP4_sb, aa64_sme_mop4, do_mop4_int, a, MO_32,
2127
+ a->s ? gen_helper_sme_umop4s_sb : gen_helper_sme_umop4a_sb)
2128
+TRANS_FEAT(UMOP4_dh, aa64_sme_mop4_i16i64, do_mop4_int, a, MO_64,
2129
+ a->s ? gen_helper_sme_umop4s_dh : gen_helper_sme_umop4a_dh)