Re: [Qemu-devel] [PATCH 01/10] target-arm: A64: Add SIMD ld/st multiple

2014-01-10 Thread Richard Henderson
On 01/10/2014 10:37 AM, Peter Maydell wrote: > On 10 January 2014 18:28, Richard Henderson wrote: >> On 01/10/2014 10:18 AM, Peter Maydell wrote: > Maybe better to hoist load of > tcg_rn to before initial assignment of tcg_addr? >>> Not sure what you have in mind here. Pulling the >>> cpu_

Re: [Qemu-devel] [PATCH 01/10] target-arm: A64: Add SIMD ld/st multiple

2014-01-10 Thread Peter Maydell
On 10 January 2014 18:28, Richard Henderson wrote: > On 01/10/2014 10:18 AM, Peter Maydell wrote: >>> > Maybe better to hoist load of >>> > tcg_rn to before initial assignment of tcg_addr? >> Not sure what you have in mind here. Pulling the >> cpu_reg_sp() call out one level like: >> >> if (is

Re: [Qemu-devel] [PATCH 01/10] target-arm: A64: Add SIMD ld/st multiple

2014-01-10 Thread Richard Henderson
On 01/10/2014 10:18 AM, Peter Maydell wrote: >> > Maybe better to hoist load of >> > tcg_rn to before initial assignment of tcg_addr? > Not sure what you have in mind here. Pulling the > cpu_reg_sp() call out one level like: > > if (is_postidx) { > int rm = extract32(insn, 16, 5); >

Re: [Qemu-devel] [PATCH 01/10] target-arm: A64: Add SIMD ld/st multiple

2014-01-10 Thread Peter Maydell
On 10 January 2014 18:05, Richard Henderson wrote: > On 01/10/2014 09:12 AM, Peter Maydell wrote: >> +TCGMemOp memop = MO_TE + size; > > Double space after =. Multiple occurrences. Just this one plus its copy-n-paste in do_vec_st, I think. >> +if (is_postidx) { >> +int rm = ext

Re: [Qemu-devel] [PATCH 01/10] target-arm: A64: Add SIMD ld/st multiple

2014-01-10 Thread Richard Henderson
On 01/10/2014 09:12 AM, Peter Maydell wrote: > +TCGMemOp memop = MO_TE + size; Double space after =. Multiple occurrences. > +if (is_postidx) { > +int rm = extract32(insn, 16, 5); > +if (rm == 31) { > +tcg_gen_mov_i64(cpu_reg_sp(s, rn), tcg_addr); > +

[Qemu-devel] [PATCH 01/10] target-arm: A64: Add SIMD ld/st multiple

2014-01-10 Thread Peter Maydell
From: Alex Bennée This adds support support for the SIMD load/store multiple category of instructions. This also brings in a couple of helper functions for manipulating sections of the SIMD registers: * do_vec_get - fetch value from a slice of a vector register * do_vec_set - set a slice of