This looks to have started when FPUs were optional and/or physically separate, but that's no longer the case.
Any examples-of/thoughts-on of systems that normally put floats and integers in the same registers?
This looks to have started when FPUs were optional and/or physically separate, but that's no longer the case.
Any examples-of/thoughts-on of systems that normally put floats and integers in the same registers?
Using a separate register set for FP is not just about making floats optional. It also allows to better isolate the float and int units and to build a more efficient micro-architecture.
For example: using a single physical register bank for floats and integers would be expensive (as the size of the register bank grows quadratically with the number of read/write ports), therefore using separate physical register bank for float and integer is more efficient.
This makes MMX very unpopular outside controlled situations, so compiler autovectorization doesn't support it.