[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v10.5 12/20] target/arm: Use vector infrastructu
From: |
Peter Maydell |
Subject: |
Re: [Qemu-devel] [PATCH v10.5 12/20] target/arm: Use vector infrastructure for aa64 add/sub/logic |
Date: |
Thu, 25 Jan 2018 16:44:45 +0000 |
On 17 January 2018 at 16:14, Richard Henderson
<address@hidden> wrote:
> Reviewed-by: Alex Bennée <address@hidden>
> Signed-off-by: Richard Henderson <address@hidden>
> ---
> target/arm/translate-a64.c | 207
> +++++++++++++++++++++++++++++----------------
> 1 file changed, 134 insertions(+), 73 deletions(-)
>
> diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
> index 70c1e08a36..b97bc9b83c 100644
> --- a/target/arm/translate-a64.c
> +++ b/target/arm/translate-a64.c
> @@ -21,6 +21,7 @@
> #include "cpu.h"
> #include "exec/exec-all.h"
> #include "tcg-op.h"
> +#include "tcg-op-gvec.h"
> #include "qemu/log.h"
> #include "arm_ldst.h"
> #include "translate.h"
> @@ -83,6 +84,10 @@ typedef void NeonGenOneOpFn(TCGv_i64, TCGv_i64);
> typedef void CryptoTwoOpEnvFn(TCGv_ptr, TCGv_i32, TCGv_i32);
> typedef void CryptoThreeOpEnvFn(TCGv_ptr, TCGv_i32, TCGv_i32, TCGv_i32);
>
> +/* Note that the gvec expanders operate on offsets + sizes. */
> +typedef void GVecGen3Fn(unsigned, uint32_t, uint32_t,
> + uint32_t, uint32_t, uint32_t);
> +
> /* initialize TCG globals. */
> void a64_translate_init(void)
> {
> @@ -535,6 +540,21 @@ static inline int vec_reg_offset(DisasContext *s, int
> regno,
> return offs;
> }
>
> +/* Return the offset info CPUARMState of the "whole" vector register Qn. */
> +static inline int vec_full_reg_offset(DisasContext *s, int regno)
> +{
> + assert_fp_access_checked(s);
> + return offsetof(CPUARMState, vfp.regs[regno * 2]);
> +}
This function is already in the preparatory SVE code in target-arm.next,
so it should go away on rebase...
> +
> +/* Return the byte size of the "whole" vector register, VL / 8. */
> +static inline int vec_full_reg_size(DisasContext *s)
> +{
> + /* FIXME SVE: We should put the composite ZCR_EL* value into tb->flags.
> + In the meantime this is just the AdvSIMD length of 128. */
> + return 128 / 8;
> +}
...and this is fixed in your other patchset with the leftovers from
that preparatory set, right? What's the plan for what sequence we
put these into master?
Have you done risu-testing on this patchset?
Otherwise
Reviewed-by: Peter Maydell <address@hidden>
thanks
-- PMM
- Re: [Qemu-devel] [PATCH v10.5 02/20] tcg: Add types and basic operations for host vectors, (continued)
- [Qemu-devel] [PATCH v10.5 06/20] tcg: Add generic vector ops for comparisons, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 07/20] tcg: Add generic vector ops for multiplication, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 05/20] tcg: Add generic vector ops for constant shifts, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 04/20] tcg: Add generic vector expanders, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 08/20] tcg: Add generic helpers for saturating arithmetic, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 09/20] tcg: Add generic vector helpers with a scalar operand, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 10/20] tcg/optimize: Handle vector opcodes during optimize, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 12/20] target/arm: Use vector infrastructure for aa64 add/sub/logic, Richard Henderson, 2018/01/17
- Re: [Qemu-devel] [PATCH v10.5 12/20] target/arm: Use vector infrastructure for aa64 add/sub/logic,
Peter Maydell <=
- [Qemu-devel] [PATCH v10.5 11/20] target/arm: Align vector registers, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 14/20] target/arm: Use vector infrastructure for aa64 dup/movi, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 13/20] target/arm: Use vector infrastructure for aa64 mov/not/neg, Richard Henderson, 2018/01/17
- [Qemu-devel] [PATCH v10.5 15/20] target/arm: Use vector infrastructure for aa64 constant shifts, Richard Henderson, 2018/01/17