On 6/2/19 4:08 AM, Mark Cave-Ayland wrote: > - getVSR(xt_num, &xt, env); \ > + \ > nb = (nb >= 16) ? 16 : nb; \ > if (msr_le && !lj) { \ > for (i = 16; i > 16 - nb; i--) { \ > - cpu_stb_data_ra(env, addr, xt.VsrB(i - 1), GETPC()); \ > + cpu_stb_data_ra(env, addr, t.VsrB(i - 1), GETPC()); \ > addr = addr_add(env, addr, 1); \ > } \ > } else { \ > for (i = 0; i < nb; i++) { \ > - cpu_stb_data_ra(env, addr, xt.VsrB(i), GETPC()); \ > + cpu_stb_data_ra(env, addr, t.VsrB(i), GETPC()) ; \ > addr = addr_add(env, addr, 1); \ > } \ > } \ > + *xt = t; \
Do not write back stores. Actually, in this case there's no reason to copy t = *xt. Just store directly from xt->VsrB(i). r~