[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 18/20] target/arm: Reorg NEON VLD/VST all elemen
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 18/20] target/arm: Reorg NEON VLD/VST all elements |
Date: |
Fri, 19 Oct 2018 08:15:47 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.2.1 |
On 10/19/18 6:50 AM, Peter Maydell wrote:
> On 11 October 2018 at 21:52, Richard Henderson
> <address@hidden> wrote:
>> Instead of shifts and masks, use direct loads and stores from the neon
>> register file. Mirror the iteration structure of the ARM pseudocode
>> more closely. Correct the parameters of the VLD2 A2 insn.
>
> So is this actually fixing a bug here? The new code definitely
> looks right, but I can't make heads nor tails of the old code,
> so I'm not sure whether it actually behaved differently...
Hmm, that comment was written in July. Working backward,
- {4, 2, 1},
+ {2, 2, 2},
which is for "VLD2 (multiple 2-element structures) A2", which does have
regs = 2; inc = 2;
in the pseudocode. So, yes, we had the wrong stride (last number) for that
insn.
Aside from that the old code and the new code should have the same end result.
The old code computed addresses as it stepped through register elements, and so
accesses memory in a "random" order. The new code accesses memory sequentially
and computes the register element that corresponds. This is for simplicity of
tcg computation of addresses and not correctness.
r~
- [Qemu-devel] [PATCH 00/20] target/arm: Convert some neon insns to gvec, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 01/20] target/arm: Hoist address increment for vector memory ops, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 02/20] target/arm: Don't call tcg_clear_temp_count, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 09/20] target/arm: Use gvec for NEON_3R_VADD_VSUB insns, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 17/20] target/arm: Use gvec for NEON VLD all lanes, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 11/20] target/arm: Use gvec for NEON_3R_VMUL, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 18/20] target/arm: Reorg NEON VLD/VST all elements, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 05/20] target/arm: Mark some arrays const, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 03/20] target/arm: Use tcg_gen_gvec_dup_i64 for LD[1-4]R, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 13/20] target/arm: Use gvec for VSRA, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 06/20] target/arm: Use gvec for NEON VDUP, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 19/20] target/arm: Promote consecutive memory ops for aa32, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 12/20] target/arm: Use gvec for VSHR, VSHL, Richard Henderson, 2018/10/11
- [Qemu-devel] [PATCH 04/20] target/arm: Promote consecutive memory ops for aa64, Richard Henderson, 2018/10/11