From: "Alex Bennée" <alex.bennee@linaro.org>
To: Richard Henderson <richard.henderson@linaro.org>
Cc: qemu-devel@nongnu.org, qemu-arm@nongnu.org
Subject: Re: [Qemu-arm] [PATCH v2 02/67] target/arm: Introduce translate-a64.h
Date: Tue, 03 Apr 2018 10:01:46 +0100 [thread overview]
Message-ID: <871sfwek91.fsf@linaro.org> (raw)
In-Reply-To: <20180217182323.25885-3-richard.henderson@linaro.org>
Richard Henderson <richard.henderson@linaro.org> writes:
> Move some stuff that will be common to both translate-a64.c
> and translate-sve.c.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
> ---
> target/arm/translate-a64.h | 110 +++++++++++++++++++++++++++++++++++++++++++++
> target/arm/translate-a64.c | 101 ++++++-----------------------------------
> 2 files changed, 123 insertions(+), 88 deletions(-)
> create mode 100644 target/arm/translate-a64.h
>
> diff --git a/target/arm/translate-a64.h b/target/arm/translate-a64.h
> new file mode 100644
> index 0000000000..e519aee314
> --- /dev/null
> +++ b/target/arm/translate-a64.h
> @@ -0,0 +1,110 @@
> +/*
> + * AArch64 translation, common definitions.
> + *
> + * This library is free software; you can redistribute it and/or
> + * modify it under the terms of the GNU Lesser General Public
> + * License as published by the Free Software Foundation; either
> + * version 2 of the License, or (at your option) any later version.
> + *
> + * This library is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + * Lesser General Public License for more details.
> + *
> + * You should have received a copy of the GNU Lesser General Public
> + * License along with this library; if not, see <http://www.gnu.org/licenses/>.
> + */
> +
> +#ifndef TARGET_ARM_TRANSLATE_A64_H
> +#define TARGET_ARM_TRANSLATE_A64_H
> +
> +void unallocated_encoding(DisasContext *s);
> +
> +#define unsupported_encoding(s, insn) \
> + do { \
> + qemu_log_mask(LOG_UNIMP, \
> + "%s:%d: unsupported instruction encoding 0x%08x " \
> + "at pc=%016" PRIx64 "\n", \
> + __FILE__, __LINE__, insn, s->pc - 4); \
> + unallocated_encoding(s); \
> + } while (0)
> +
> +TCGv_i64 new_tmp_a64(DisasContext *s);
> +TCGv_i64 new_tmp_a64_zero(DisasContext *s);
> +TCGv_i64 cpu_reg(DisasContext *s, int reg);
> +TCGv_i64 cpu_reg_sp(DisasContext *s, int reg);
> +TCGv_i64 read_cpu_reg(DisasContext *s, int reg, int sf);
> +TCGv_i64 read_cpu_reg_sp(DisasContext *s, int reg, int sf);
> +void write_fp_dreg(DisasContext *s, int reg, TCGv_i64 v);
> +TCGv_ptr get_fpstatus_ptr(bool);
> +bool logic_imm_decode_wmask(uint64_t *result, unsigned int immn,
> + unsigned int imms, unsigned int immr);
> +uint64_t vfp_expand_imm(int size, uint8_t imm8);
> +
> +/* We should have at some point before trying to access an FP register
> + * done the necessary access check, so assert that
> + * (a) we did the check and
> + * (b) we didn't then just plough ahead anyway if it failed.
> + * Print the instruction pattern in the abort message so we can figure
> + * out what we need to fix if a user encounters this problem in the wild.
> + */
> +static inline void assert_fp_access_checked(DisasContext *s)
> +{
> +#ifdef CONFIG_DEBUG_TCG
> + if (unlikely(!s->fp_access_checked || s->fp_excp_el)) {
> + fprintf(stderr, "target-arm: FP access check missing for "
> + "instruction 0x%08x\n", s->insn);
> + abort();
> + }
> +#endif
> +}
> +
> +/* Return the offset into CPUARMState of an element of specified
> + * size, 'element' places in from the least significant end of
> + * the FP/vector register Qn.
> + */
> +static inline int vec_reg_offset(DisasContext *s, int regno,
> + int element, TCGMemOp size)
> +{
> + int offs = 0;
> +#ifdef HOST_WORDS_BIGENDIAN
> + /* This is complicated slightly because vfp.zregs[n].d[0] is
> + * still the low half and vfp.zregs[n].d[1] the high half
> + * of the 128 bit vector, even on big endian systems.
> + * Calculate the offset assuming a fully bigendian 128 bits,
> + * then XOR to account for the order of the two 64 bit halves.
> + */
> + offs += (16 - ((element + 1) * (1 << size)));
> + offs ^= 8;
> +#else
> + offs += element * (1 << size);
> +#endif
> + offs += offsetof(CPUARMState, vfp.zregs[regno]);
> + assert_fp_access_checked(s);
> + 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.zregs[regno]);
> +}
> +
> +/* Return a newly allocated pointer to the vector register. */
> +static inline TCGv_ptr vec_full_reg_ptr(DisasContext *s, int regno)
> +{
> + TCGv_ptr ret = tcg_temp_new_ptr();
> + tcg_gen_addi_ptr(ret, cpu_env, vec_full_reg_offset(s, regno));
> + return ret;
> +}
> +
> +/* Return the byte size of the "whole" vector register, VL / 8. */
> +static inline int vec_full_reg_size(DisasContext *s)
> +{
> + return s->sve_len;
> +}
> +
> +bool disas_sve(DisasContext *, uint32_t);
> +
> +#endif /* TARGET_ARM_TRANSLATE_A64_H */
> diff --git a/target/arm/translate-a64.c b/target/arm/translate-a64.c
> index 032cbfa17d..e0e7ebf68c 100644
> --- a/target/arm/translate-a64.c
> +++ b/target/arm/translate-a64.c
> @@ -36,13 +36,13 @@
> #include "exec/log.h"
>
> #include "trace-tcg.h"
> +#include "translate-a64.h"
>
> static TCGv_i64 cpu_X[32];
> static TCGv_i64 cpu_pc;
>
> /* Load/store exclusive handling */
> static TCGv_i64 cpu_exclusive_high;
> -static TCGv_i64 cpu_reg(DisasContext *s, int reg);
>
> static const char *regnames[] = {
> "x0", "x1", "x2", "x3", "x4", "x5", "x6", "x7",
> @@ -392,22 +392,13 @@ static inline void gen_goto_tb(DisasContext *s, int n, uint64_t dest)
> }
> }
>
> -static void unallocated_encoding(DisasContext *s)
> +void unallocated_encoding(DisasContext *s)
> {
> /* Unallocated and reserved encodings are uncategorized */
> gen_exception_insn(s, 4, EXCP_UDEF, syn_uncategorized(),
> default_exception_el(s));
> }
>
> -#define unsupported_encoding(s, insn) \
> - do { \
> - qemu_log_mask(LOG_UNIMP, \
> - "%s:%d: unsupported instruction encoding 0x%08x " \
> - "at pc=%016" PRIx64 "\n", \
> - __FILE__, __LINE__, insn, s->pc - 4); \
> - unallocated_encoding(s); \
> - } while (0)
> -
> static void init_tmp_a64_array(DisasContext *s)
> {
> #ifdef CONFIG_DEBUG_TCG
> @@ -425,13 +416,13 @@ static void free_tmp_a64(DisasContext *s)
> init_tmp_a64_array(s);
> }
>
> -static TCGv_i64 new_tmp_a64(DisasContext *s)
> +TCGv_i64 new_tmp_a64(DisasContext *s)
> {
> assert(s->tmp_a64_count < TMP_A64_MAX);
> return s->tmp_a64[s->tmp_a64_count++] = tcg_temp_new_i64();
> }
>
> -static TCGv_i64 new_tmp_a64_zero(DisasContext *s)
> +TCGv_i64 new_tmp_a64_zero(DisasContext *s)
> {
> TCGv_i64 t = new_tmp_a64(s);
> tcg_gen_movi_i64(t, 0);
> @@ -453,7 +444,7 @@ static TCGv_i64 new_tmp_a64_zero(DisasContext *s)
> * to cpu_X[31] and ZR accesses to a temporary which can be discarded.
> * This is the point of the _sp forms.
> */
> -static TCGv_i64 cpu_reg(DisasContext *s, int reg)
> +TCGv_i64 cpu_reg(DisasContext *s, int reg)
> {
> if (reg == 31) {
> return new_tmp_a64_zero(s);
> @@ -463,7 +454,7 @@ static TCGv_i64 cpu_reg(DisasContext *s, int reg)
> }
>
> /* register access for when 31 == SP */
> -static TCGv_i64 cpu_reg_sp(DisasContext *s, int reg)
> +TCGv_i64 cpu_reg_sp(DisasContext *s, int reg)
> {
> return cpu_X[reg];
> }
> @@ -472,7 +463,7 @@ static TCGv_i64 cpu_reg_sp(DisasContext *s, int reg)
> * representing the register contents. This TCGv is an auto-freed
> * temporary so it need not be explicitly freed, and may be modified.
> */
> -static TCGv_i64 read_cpu_reg(DisasContext *s, int reg, int sf)
> +TCGv_i64 read_cpu_reg(DisasContext *s, int reg, int sf)
> {
> TCGv_i64 v = new_tmp_a64(s);
> if (reg != 31) {
> @@ -487,7 +478,7 @@ static TCGv_i64 read_cpu_reg(DisasContext *s, int reg, int sf)
> return v;
> }
>
> -static TCGv_i64 read_cpu_reg_sp(DisasContext *s, int reg, int sf)
> +TCGv_i64 read_cpu_reg_sp(DisasContext *s, int reg, int sf)
> {
> TCGv_i64 v = new_tmp_a64(s);
> if (sf) {
> @@ -498,72 +489,6 @@ static TCGv_i64 read_cpu_reg_sp(DisasContext *s, int reg, int sf)
> return v;
> }
>
> -/* We should have at some point before trying to access an FP register
> - * done the necessary access check, so assert that
> - * (a) we did the check and
> - * (b) we didn't then just plough ahead anyway if it failed.
> - * Print the instruction pattern in the abort message so we can figure
> - * out what we need to fix if a user encounters this problem in the wild.
> - */
> -static inline void assert_fp_access_checked(DisasContext *s)
> -{
> -#ifdef CONFIG_DEBUG_TCG
> - if (unlikely(!s->fp_access_checked || s->fp_excp_el)) {
> - fprintf(stderr, "target-arm: FP access check missing for "
> - "instruction 0x%08x\n", s->insn);
> - abort();
> - }
> -#endif
> -}
> -
> -/* Return the offset into CPUARMState of an element of specified
> - * size, 'element' places in from the least significant end of
> - * the FP/vector register Qn.
> - */
> -static inline int vec_reg_offset(DisasContext *s, int regno,
> - int element, TCGMemOp size)
> -{
> - int offs = 0;
> -#ifdef HOST_WORDS_BIGENDIAN
> - /* This is complicated slightly because vfp.zregs[n].d[0] is
> - * still the low half and vfp.zregs[n].d[1] the high half
> - * of the 128 bit vector, even on big endian systems.
> - * Calculate the offset assuming a fully bigendian 128 bits,
> - * then XOR to account for the order of the two 64 bit halves.
> - */
> - offs += (16 - ((element + 1) * (1 << size)));
> - offs ^= 8;
> -#else
> - offs += element * (1 << size);
> -#endif
> - offs += offsetof(CPUARMState, vfp.zregs[regno]);
> - assert_fp_access_checked(s);
> - 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.zregs[regno]);
> -}
> -
> -/* Return a newly allocated pointer to the vector register. */
> -static TCGv_ptr vec_full_reg_ptr(DisasContext *s, int regno)
> -{
> - TCGv_ptr ret = tcg_temp_new_ptr();
> - tcg_gen_addi_ptr(ret, cpu_env, vec_full_reg_offset(s, regno));
> - return ret;
> -}
> -
> -/* 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;
> -}
> -
> /* Return the offset into CPUARMState of a slice (from
> * the least significant end) of FP register Qn (ie
> * Dn, Sn, Hn or Bn).
> @@ -620,7 +545,7 @@ static void clear_vec_high(DisasContext *s, bool is_q, int rd)
> }
> }
>
> -static void write_fp_dreg(DisasContext *s, int reg, TCGv_i64 v)
> +void write_fp_dreg(DisasContext *s, int reg, TCGv_i64 v)
> {
> unsigned ofs = fp_reg_offset(s, reg, MO_64);
>
> @@ -637,7 +562,7 @@ static void write_fp_sreg(DisasContext *s, int reg, TCGv_i32 v)
> tcg_temp_free_i64(tmp);
> }
>
> -static TCGv_ptr get_fpstatus_ptr(bool is_f16)
> +TCGv_ptr get_fpstatus_ptr(bool is_f16)
> {
> TCGv_ptr statusptr = tcg_temp_new_ptr();
> int offset;
> @@ -3130,8 +3055,8 @@ static inline uint64_t bitmask64(unsigned int length)
> * value (ie should cause a guest UNDEF exception), and true if they are
> * valid, in which case the decoded bit pattern is written to result.
> */
> -static bool logic_imm_decode_wmask(uint64_t *result, unsigned int immn,
> - unsigned int imms, unsigned int immr)
> +bool logic_imm_decode_wmask(uint64_t *result, unsigned int immn,
> + unsigned int imms, unsigned int immr)
> {
> uint64_t mask;
> unsigned e, levels, s, r;
> @@ -5164,7 +5089,7 @@ static void disas_fp_3src(DisasContext *s, uint32_t insn)
> * the range 01....1xx to 10....0xx, and the most significant 4 bits of
> * the mantissa; see VFPExpandImm() in the v8 ARM ARM.
> */
> -static uint64_t vfp_expand_imm(int size, uint8_t imm8)
> +uint64_t vfp_expand_imm(int size, uint8_t imm8)
> {
> uint64_t imm;
--
Alex Bennée
next prev parent reply other threads:[~2018-04-03 9:01 UTC|newest]
Thread overview: 167+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-02-17 18:22 [Qemu-arm] [PATCH v2 00/67] target/arm: Scalable Vector Extension Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 01/67] target/arm: Enable SVE for aarch64-linux-user Richard Henderson
2018-02-22 17:28 ` Peter Maydell
2018-02-22 19:27 ` Richard Henderson
2018-02-23 17:00 ` Alex Bennée
2018-02-23 18:47 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 02/67] target/arm: Introduce translate-a64.h Richard Henderson
2018-02-22 17:30 ` Peter Maydell
2018-04-03 9:01 ` Alex Bennée [this message]
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 03/67] target/arm: Add SVE decode skeleton Richard Henderson
2018-02-22 18:00 ` Peter Maydell
2018-02-23 11:40 ` Peter Maydell
2018-02-23 11:43 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 04/67] target/arm: Implement SVE Bitwise Logical - Unpredicated Group Richard Henderson
2018-02-22 18:04 ` Peter Maydell
2018-02-22 19:28 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 05/67] target/arm: Implement SVE load vector/predicate Richard Henderson
2018-02-22 18:20 ` Peter Maydell
2018-02-22 19:31 ` [Qemu-arm] " Richard Henderson
2018-04-03 9:26 ` Alex Bennée
2018-04-06 1:23 ` Richard Henderson
2018-04-06 13:03 ` Alex Bennée
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 06/67] target/arm: Implement SVE predicate test Richard Henderson
2018-02-22 18:38 ` Peter Maydell
2018-04-03 9:16 ` Alex Bennée
2018-04-06 1:27 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 07/67] target/arm: Implement SVE Predicate Logical Operations Group Richard Henderson
2018-02-22 18:55 ` Peter Maydell
2018-02-22 19:37 ` [Qemu-devel] " Richard Henderson
2018-02-23 9:56 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 08/67] target/arm: Implement SVE Predicate Misc Group Richard Henderson
2018-02-23 11:22 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 09/67] target/arm: Implement SVE Integer Binary Arithmetic - Predicated Group Richard Henderson
2018-02-23 11:35 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 10/67] target/arm: Implement SVE Integer Reduction Group Richard Henderson
2018-02-23 11:50 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 11/67] target/arm: Implement SVE bitwise shift by immediate (predicated) Richard Henderson
2018-02-23 12:03 ` [Qemu-devel] " Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 12/67] target/arm: Implement SVE bitwise shift by vector (predicated) Richard Henderson
2018-02-23 12:50 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 13/67] target/arm: Implement SVE bitwise shift by wide elements (predicated) Richard Henderson
2018-02-23 12:57 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 14/67] target/arm: Implement SVE Integer Arithmetic - Unary Predicated Group Richard Henderson
2018-02-23 13:08 ` [Qemu-arm] " Peter Maydell
2018-02-23 17:25 ` Richard Henderson
2018-02-23 17:30 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 15/67] target/arm: Implement SVE Integer Multiply-Add Group Richard Henderson
2018-02-23 13:12 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 16/67] target/arm: Implement SVE Integer Arithmetic - Unpredicated Group Richard Henderson
2018-02-23 13:16 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 17/67] target/arm: Implement SVE Index Generation Group Richard Henderson
2018-02-23 13:22 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 18/67] target/arm: Implement SVE Stack Allocation Group Richard Henderson
2018-02-23 13:25 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 19/67] target/arm: Implement SVE Bitwise Shift - Unpredicated Group Richard Henderson
2018-02-23 13:28 ` [Qemu-devel] " Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 20/67] target/arm: Implement SVE Compute Vector Address Group Richard Henderson
2018-02-23 13:34 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 21/67] target/arm: Implement SVE floating-point exponential accelerator Richard Henderson
2018-02-23 13:48 ` Peter Maydell
2018-02-23 17:29 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 22/67] target/arm: Implement SVE floating-point trig select coefficient Richard Henderson
2018-02-23 13:54 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 23/67] target/arm: Implement SVE Element Count Group Richard Henderson
2018-02-23 14:06 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 24/67] target/arm: Implement SVE Bitwise Immediate Group Richard Henderson
2018-02-23 14:10 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 25/67] target/arm: Implement SVE Integer Wide Immediate - Predicated Group Richard Henderson
2018-02-23 14:18 ` [Qemu-arm] " Peter Maydell
2018-02-23 17:31 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 26/67] target/arm: Implement SVE Permute - Extract Group Richard Henderson
2018-02-23 14:24 ` Peter Maydell
2018-02-23 17:46 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 27/67] target/arm: Implement SVE Permute - Unpredicated Group Richard Henderson
2018-02-23 14:34 ` [Qemu-arm] " Peter Maydell
2018-02-23 18:58 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 28/67] target/arm: Implement SVE Permute - Predicates Group Richard Henderson
2018-02-23 15:15 ` [Qemu-arm] " Peter Maydell
2018-02-23 19:59 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 29/67] target/arm: Implement SVE Permute - Interleaving Group Richard Henderson
2018-02-23 15:22 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 30/67] target/arm: Implement SVE compress active elements Richard Henderson
2018-02-23 15:25 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 31/67] target/arm: Implement SVE conditionally broadcast/extract element Richard Henderson
2018-02-23 15:44 ` [Qemu-devel] " Peter Maydell
2018-02-23 20:15 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 32/67] target/arm: Implement SVE copy to vector (predicated) Richard Henderson
2018-02-23 15:45 ` [Qemu-devel] " Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 33/67] target/arm: Implement SVE reverse within elements Richard Henderson
2018-02-23 15:50 ` Peter Maydell
2018-02-23 20:21 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 34/67] target/arm: Implement SVE vector splice (predicated) Richard Henderson
2018-02-23 15:52 ` [Qemu-devel] " Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 35/67] target/arm: Implement SVE Select Vectors Group Richard Henderson
2018-02-23 16:21 ` [Qemu-devel] " Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 36/67] target/arm: Implement SVE Integer Compare - " Richard Henderson
2018-02-23 16:29 ` Peter Maydell
2018-02-23 20:57 ` [Qemu-arm] " Richard Henderson
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 37/67] target/arm: Implement SVE Integer Compare - Immediate Group Richard Henderson
2018-02-23 16:32 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 38/67] target/arm: Implement SVE Partition Break Group Richard Henderson
2018-02-23 16:41 ` Peter Maydell
2018-02-23 20:59 ` Richard Henderson
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 39/67] target/arm: Implement SVE Predicate Count Group Richard Henderson
2018-02-23 16:48 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 40/67] target/arm: Implement SVE Integer Compare - Scalars Group Richard Henderson
2018-02-23 17:00 ` Peter Maydell
2018-02-23 21:06 ` [Qemu-arm] " Richard Henderson
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 41/67] target/arm: Implement FDUP/DUP Richard Henderson
2018-02-23 17:12 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:22 ` [Qemu-arm] [PATCH v2 42/67] target/arm: Implement SVE Integer Wide Immediate - Unpredicated Group Richard Henderson
2018-02-23 17:18 ` Peter Maydell
2018-02-17 18:22 ` [Qemu-devel] [PATCH v2 43/67] target/arm: Implement SVE Floating Point Arithmetic " Richard Henderson
2018-02-23 17:25 ` [Qemu-arm] " Peter Maydell
2018-02-23 21:15 ` Richard Henderson
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 44/67] target/arm: Implement SVE Memory Contiguous Load Group Richard Henderson
2018-02-27 12:16 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 45/67] target/arm: Implement SVE Memory Contiguous Store Group Richard Henderson
2018-02-27 13:22 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 46/67] target/arm: Implement SVE load and broadcast quadword Richard Henderson
2018-02-27 13:36 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 47/67] target/arm: Implement SVE integer convert to floating-point Richard Henderson
2018-02-27 13:47 ` [Qemu-arm] " Peter Maydell
2018-02-27 13:51 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 48/67] target/arm: Implement SVE floating-point arithmetic (predicated) Richard Henderson
2018-02-27 13:50 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 49/67] target/arm: Implement SVE FP Multiply-Add Group Richard Henderson
2018-02-27 13:54 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 50/67] target/arm: Implement SVE Floating Point Accumulating Reduction Group Richard Henderson
2018-02-27 13:59 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 51/67] target/arm: Implement SVE load and broadcast element Richard Henderson
2018-02-27 14:15 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 52/67] target/arm: Implement SVE store vector/predicate register Richard Henderson
2018-02-27 14:21 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 53/67] target/arm: Implement SVE scatter stores Richard Henderson
2018-02-27 14:36 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 54/67] target/arm: Implement SVE prefetches Richard Henderson
2018-02-27 14:43 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 55/67] target/arm: Implement SVE gather loads Richard Henderson
2018-02-27 14:53 ` [Qemu-devel] " Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 56/67] target/arm: Implement SVE scatter store vector immediate Richard Henderson
2018-02-27 15:02 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 57/67] target/arm: Implement SVE floating-point compare vectors Richard Henderson
2018-02-27 15:04 ` [Qemu-devel] " Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 58/67] target/arm: Implement SVE floating-point arithmetic with immediate Richard Henderson
2018-02-27 15:11 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 59/67] target/arm: Implement SVE Floating Point Multiply Indexed Group Richard Henderson
2018-02-27 15:18 ` [Qemu-devel] " Peter Maydell
2018-02-27 16:29 ` Richard Henderson
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 60/67] target/arm: Implement SVE FP Fast Reduction Group Richard Henderson
2018-02-27 15:24 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 61/67] target/arm: Implement SVE Floating Point Unary Operations - Unpredicated Group Richard Henderson
2018-02-27 15:28 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 62/67] target/arm: Implement SVE FP Compare with Zero Group Richard Henderson
2018-02-27 15:31 ` [Qemu-arm] " Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 63/67] target/arm: Implement SVE floating-point trig multiply-add coefficient Richard Henderson
2018-02-27 15:34 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 64/67] target/arm: Implement SVE floating-point convert precision Richard Henderson
2018-02-27 15:35 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 65/67] target/arm: Implement SVE floating-point convert to integer Richard Henderson
2018-02-27 15:36 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-arm] [PATCH v2 66/67] target/arm: Implement SVE floating-point round to integral value Richard Henderson
2018-02-27 15:39 ` Peter Maydell
2018-02-17 18:23 ` [Qemu-devel] [PATCH v2 67/67] target/arm: Implement SVE floating-point unary operations Richard Henderson
2018-02-27 15:40 ` Peter Maydell
2018-02-23 17:05 ` [Qemu-arm] [PATCH v2 00/67] target/arm: Scalable Vector Extension Alex Bennée
2018-04-03 15:41 ` Alex Bennée
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=871sfwek91.fsf@linaro.org \
--to=alex.bennee@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).