As I've said before, m32c is probably a "worst case" scenario for gcc
as it has not one, not two, not even three, but FOUR different types
of registers (8/16 bit general, 16 bit only general, 24 bit address
registers, and control (incl $fp) registers), and only a small number
(2) of each.

I think our mxp is more 'interesting'.  It got several hundred register
classes, auto-generated, and some important ones have only a single member.

We got a number of vector registers, a flags register, and an accumulator.
All of them are 128 bit wide and an 8-bit mask selects which 16-bit wide
lanes of the 128 bit word are operated on - i.e. 255 different combinations.
A lot of instructions clobber the accumulator and/or the flags
and to make sure that the registers are lined up, I have to make flags and
accumulator allocated registers.
Then the first few of the vector registers are also special because they
can also be used as 16 and 32 bit scalar registers.
A truely complete register class set would have 2^32 register classes even
before getting into such niceties as call used / clobered regs and sibcalls,
but I considered this slightly impractical considering the amount of
memory that would cost.

Reply via email to