[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v2 40/71] target/arm: Move pred_{full, gvec}_reg_{offset, size} t
From: |
Richard Henderson |
Subject: |
[PATCH v2 40/71] target/arm: Move pred_{full, gvec}_reg_{offset, size} to translate-a64.h |
Date: |
Tue, 7 Jun 2022 13:32:35 -0700 |
We will need these functions in translate-sme.c.
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
target/arm/translate-a64.h | 38 ++++++++++++++++++++++++++++++++++++++
target/arm/translate-sve.c | 36 ------------------------------------
2 files changed, 38 insertions(+), 36 deletions(-)
diff --git a/target/arm/translate-a64.h b/target/arm/translate-a64.h
index dbc917ee65..f0970c6b8c 100644
--- a/target/arm/translate-a64.h
+++ b/target/arm/translate-a64.h
@@ -107,6 +107,44 @@ static inline int vec_full_reg_size(DisasContext *s)
return s->vl;
}
+/*
+ * Return the offset info CPUARMState of the predicate vector register Pn.
+ * Note for this purpose, FFR is P16.
+ */
+static inline int pred_full_reg_offset(DisasContext *s, int regno)
+{
+ return offsetof(CPUARMState, vfp.pregs[regno]);
+}
+
+/* Return the byte size of the whole predicate register, VL / 64. */
+static inline int pred_full_reg_size(DisasContext *s)
+{
+ return s->vl >> 3;
+}
+
+/*
+ * Round up the size of a register to a size allowed by
+ * the tcg vector infrastructure. Any operation which uses this
+ * size may assume that the bits above pred_full_reg_size are zero,
+ * and must leave them the same way.
+ *
+ * Note that this is not needed for the vector registers as they
+ * are always properly sized for tcg vectors.
+ */
+static inline int size_for_gvec(int size)
+{
+ if (size <= 8) {
+ return 8;
+ } else {
+ return QEMU_ALIGN_UP(size, 16);
+ }
+}
+
+static inline int pred_gvec_reg_size(DisasContext *s)
+{
+ return size_for_gvec(pred_full_reg_size(s));
+}
+
bool disas_sve(DisasContext *, uint32_t);
void gen_gvec_rax1(unsigned vece, uint32_t rd_ofs, uint32_t rn_ofs,
diff --git a/target/arm/translate-sve.c b/target/arm/translate-sve.c
index 67761bf2cc..62b5f3040c 100644
--- a/target/arm/translate-sve.c
+++ b/target/arm/translate-sve.c
@@ -100,42 +100,6 @@ static inline int msz_dtype(DisasContext *s, int msz)
* Implement all of the translator functions referenced by the decoder.
*/
-/* Return the offset info CPUARMState of the predicate vector register Pn.
- * Note for this purpose, FFR is P16.
- */
-static inline int pred_full_reg_offset(DisasContext *s, int regno)
-{
- return offsetof(CPUARMState, vfp.pregs[regno]);
-}
-
-/* Return the byte size of the whole predicate register, VL / 64. */
-static inline int pred_full_reg_size(DisasContext *s)
-{
- return s->vl >> 3;
-}
-
-/* Round up the size of a register to a size allowed by
- * the tcg vector infrastructure. Any operation which uses this
- * size may assume that the bits above pred_full_reg_size are zero,
- * and must leave them the same way.
- *
- * Note that this is not needed for the vector registers as they
- * are always properly sized for tcg vectors.
- */
-static int size_for_gvec(int size)
-{
- if (size <= 8) {
- return 8;
- } else {
- return QEMU_ALIGN_UP(size, 16);
- }
-}
-
-static int pred_gvec_reg_size(DisasContext *s)
-{
- return size_for_gvec(pred_full_reg_size(s));
-}
-
/* Invoke an out-of-line helper on 2 Zregs. */
static bool gen_gvec_ool_zz(DisasContext *s, gen_helper_gvec_2 *fn,
int rd, int rn, int data)
--
2.34.1
- [PATCH v2 36/71] target/arm: Unexport aarch64_add_*_properties, (continued)
- [PATCH v2 36/71] target/arm: Unexport aarch64_add_*_properties, Richard Henderson, 2022/06/07
- [PATCH v2 38/71] target/arm: Introduce sve_vqm1_for_el_sm, Richard Henderson, 2022/06/07
- [PATCH v2 39/71] target/arm: Add SVL to TB flags, Richard Henderson, 2022/06/07
- [PATCH v2 32/71] target/arm: Create ARMVQMap, Richard Henderson, 2022/06/07
- [PATCH v2 37/71] target/arm: Add cpu properties for SME, Richard Henderson, 2022/06/07
- [PATCH v2 40/71] target/arm: Move pred_{full, gvec}_reg_{offset, size} to translate-a64.h,
Richard Henderson <=
- [PATCH v2 41/71] target/arm: Add infrastructure for disas_sme, Richard Henderson, 2022/06/07
- [PATCH v2 43/71] target/arm: Implement SME RDSVL, ADDSVL, ADDSPL, Richard Henderson, 2022/06/07
- [PATCH v2 47/71] target/arm: Export unpredicated ld/st from translate-sve.c, Richard Henderson, 2022/06/07
- [PATCH v2 44/71] target/arm: Implement SME ZERO, Richard Henderson, 2022/06/07
- [PATCH v2 45/71] target/arm: Implement SME MOVA, Richard Henderson, 2022/06/07
- [PATCH v2 46/71] target/arm: Implement SME LD1, ST1, Richard Henderson, 2022/06/07