On 11 February 2011 16:14, Peter Maydell <peter.mayd...@linaro.org> wrote: > +void HELPER(neon_unzip)(CPUState *env, uint32_t insn) > +{ > + int rd = ((insn >> 18) & 0x10) | ((insn >> 12) & 0x0f); > + int rm = ((insn >> 1) & 0x10) | (insn & 0x0f); > + int size = (insn >> 18) & 3; > + if (insn & 0x40) { /* Q */ > + uint64_t zm0 = float64_val(env->vfp.regs[rm]); > + uint64_t zm1 = float64_val(env->vfp.regs[rm + 1]); > + uint64_t zd0 = float64_val(env->vfp.regs[rd]); > + uint64_t zd1 = float64_val(env->vfp.regs[rd + 1]);
I can rework these patches if people don't like the way this is effectively doing decoding in a helper function, incidentally, although I'm not convinced it would end up any nicer overall. -- PMM