> Then there's the question of what to do on targets with (say) three > different REGMODE_NATURAL_SIZE values. All three could even come into > play in a single move (the move mode and the two subreg modes). > > So it just seems simpler to say that the target must provide integer > moves up to the minimum of: > > - MAX_FIXED_MODE_SIZE > - the largest REGMODE_NATURAL_SIZE
Ok, let's go with the simpler variant then. I am observing OImode subregs on riscv, even though our MAX_FIXED_MODE_SIZE is TImode. In that testcase there is: typedef unsigned __int128 v2ti __attribute__ ((vector_size (32))); We do define OImode as a mode but never adjusted MAX_FIXED_MODE_SIZE because we don't actually like that mode :) I guess that constitutes either a target bug or a middle-end path that didn't query MAX_FIXED_MODE_SIZE but I haven't checked. -- Regards Robin
