On 4/30/20 11:09 AM, Peter Maydell wrote: > These don't use do_3same() because they want to > operate on VFP double registers, whose offsets are different from the > neon_reg_offset() calculations do_3same does.
Actually, no, it's an around the bush way of computing the same register offset. vfp_reg_offset(true, reg) -> vfp.zregs[reg >> 1].d[reg & 1]; neon_reg_offset(reg, 0) -> vfp_reg_offset(false, 2 * reg + 0) -> vfp.zregs[(2 * reg) >> 2].d[((2 * reg) >> 1) & 1] + ((2 * reg) & 1) * offsetof(lower/upper) -> vfp.zregs[reg >> 1].d[reg & 1] + 0 r~