On 12/4/20 5:28 PM, Richard Henderson wrote: > On 12/2/20 12:44 PM, Philippe Mathieu-Daudé wrote: >> Commits 863f264d10f ("add msa_reset(), global msa register") and >> cb269f273fd ("fix multiple TCG registers covering same data") >> removed the FPU scalar registers and replaced them by aliases to >> the MSA vector registers. >> While this might be the case for CPU implementing MSA, this makes >> QEMU code incoherent for CPU not implementing it. It is simpler >> to inverse the logic and alias the MSA vector registers on the >> FPU scalar ones. > > How does it make things incoherent? I'm missing how the logic has actually > changed, as opposed to an order of assignments. I guess my wording isn't clear. By "incoherent" I want to say it is odd to disable MSA and have FPU registers displayed with MSA register names, instead of their proper FPU names. The MIPS ISA represents the ASE as onion rings that extend an ISA. I'd like to model it that way, have ASE optional (and that we can even not compile). You can have CPU without FPU, CPU with FPU, CPU with MSA (you implicitly have a FPU). If FPU depends on MSA, we can not take the MSA implementation out of the equation. Back to the patch, instead of aliasing FPU registers to the MSA ones (even when MSA is absent), we now alias the MSA ones to the FPU ones (only when MSA is present). This is what I call the "inverted logic". BTW the point of this change is simply to be able to extract the MSA code out of the huge translate.c. Regards, Phil.