summaryrefslogtreecommitdiffstats
path: root/target/arm/translate-sve.c
diff options
context:
space:
mode:
authorRichard Henderson2021-05-25 03:03:23 +0200
committerPeter Maydell2021-05-25 17:01:44 +0200
commitb95f5eebf6be4ebcc8ff13aaa5d93431c20e9b07 (patch)
tree0cbcafc5cb7a5b0403a2dd509310fb24fdcc937a /target/arm/translate-sve.c
parenttarget/arm: Implement SVE2 saturating multiply-add (indexed) (diff)
downloadqemu-b95f5eebf6be4ebcc8ff13aaa5d93431c20e9b07.tar.gz
qemu-b95f5eebf6be4ebcc8ff13aaa5d93431c20e9b07.tar.xz
qemu-b95f5eebf6be4ebcc8ff13aaa5d93431c20e9b07.zip
target/arm: Implement SVE2 saturating multiply (indexed)
Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210525010358.152808-58-richard.henderson@linaro.org Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
Diffstat (limited to 'target/arm/translate-sve.c')
-rw-r--r--target/arm/translate-sve.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c
index 3e7f310d59..c009ec54ff 100644
--- a/target/arm/translate-sve.c
+++ b/target/arm/translate-sve.c
@@ -3866,6 +3866,20 @@ DO_SVE2_RRX(trans_MUL_zzx_d, gen_helper_gvec_mul_idx_d)
#undef DO_SVE2_RRX
+#define DO_SVE2_RRX_TB(NAME, FUNC, TOP) \
+ static bool NAME(DisasContext *s, arg_rrx_esz *a) \
+ { \
+ return do_sve2_zzz_data(s, a->rd, a->rn, a->rm, \
+ (a->index << 1) | TOP, FUNC); \
+ }
+
+DO_SVE2_RRX_TB(trans_SQDMULLB_zzx_s, gen_helper_sve2_sqdmull_idx_s, false)
+DO_SVE2_RRX_TB(trans_SQDMULLB_zzx_d, gen_helper_sve2_sqdmull_idx_d, false)
+DO_SVE2_RRX_TB(trans_SQDMULLT_zzx_s, gen_helper_sve2_sqdmull_idx_s, true)
+DO_SVE2_RRX_TB(trans_SQDMULLT_zzx_d, gen_helper_sve2_sqdmull_idx_d, true)
+
+#undef DO_SVE2_RRX_TB
+
static bool do_sve2_zzzz_data(DisasContext *s, int rd, int rn, int rm, int ra,
int data, gen_helper_gvec_4 *fn)
{