summaryrefslogtreecommitdiffstats
path: root/target/arm/mve_helper.c
diff options
context:
space:
mode:
authorPeter Maydell2021-06-17 14:16:17 +0200
committerPeter Maydell2021-06-24 15:58:47 +0200
commit9dc868c41d8c630f3c13040e2732b4df6d4739de (patch)
tree83589348cee2d3d843ef3f832b9d4a465eb33474 /target/arm/mve_helper.c
parenttarget/arm: Implement MVE VQSHL (vector) (diff)
downloadqemu-9dc868c41d8c630f3c13040e2732b4df6d4739de.tar.gz
qemu-9dc868c41d8c630f3c13040e2732b4df6d4739de.tar.xz
qemu-9dc868c41d8c630f3c13040e2732b4df6d4739de.zip
target/arm: Implement MVE VQRSHL
Implement the MV VQRSHL (vector) insn. Again, the code to perform the actual shifts is borrowed from neon_helper.c. Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-id: 20210617121628.20116-34-peter.maydell@linaro.org
Diffstat (limited to 'target/arm/mve_helper.c')
-rw-r--r--target/arm/mve_helper.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/target/arm/mve_helper.c b/target/arm/mve_helper.c
index d9f5fe13b1..64cb5b0c84 100644
--- a/target/arm/mve_helper.c
+++ b/target/arm/mve_helper.c
@@ -607,9 +607,15 @@ DO_2OP_SAT(vqsubsw, 4, int32_t, DO_SQSUB_W)
WRAP_QRSHL_HELPER(do_sqrshl_bhs, N, M, false, satp)
#define DO_UQSHL_OP(N, M, satp) \
WRAP_QRSHL_HELPER(do_uqrshl_bhs, N, M, false, satp)
+#define DO_SQRSHL_OP(N, M, satp) \
+ WRAP_QRSHL_HELPER(do_sqrshl_bhs, N, M, true, satp)
+#define DO_UQRSHL_OP(N, M, satp) \
+ WRAP_QRSHL_HELPER(do_uqrshl_bhs, N, M, true, satp)
DO_2OP_SAT_S(vqshls, DO_SQSHL_OP)
DO_2OP_SAT_U(vqshlu, DO_UQSHL_OP)
+DO_2OP_SAT_S(vqrshls, DO_SQRSHL_OP)
+DO_2OP_SAT_U(vqrshlu, DO_UQRSHL_OP)
#define DO_2OP_SCALAR(OP, ESIZE, TYPE, FN) \
void HELPER(glue(mve_, OP))(CPUARMState *env, void *vd, void *vn, \