Bernd Schmidt <ber...@codesourcery.com> writes: > On 04/11/2012 07:31 PM, Peter Bigot wrote: >> The biggest one is that widening from 20-bit to 32-bit is an extremely >> expensive operation: it was a 16-bit ISA, but some newer MCUs support >> an extension with 20 bits in each register and a set of new >> instructions that must be used to preserve the upper 4 bits. Getting >> bits 19..16 of a 20-bit register down into the low bits of a 16 bit >> register requires a five-position rotate-through-carry. The 20-bit >> enhancement to the ISA was really intended only to support a larger >> address space; to simplify validation of the machine description I've >> chosen to allow it to be used for any integer operation, but I have no >> reason to think that'll be common. > > Ok. So these are pointer modes, essentially? For the target I'm working > on, I'm using the following patch, see if that helps you any. It seems > to apply to trunk, so I might as well ask for an OK if it bootstraps and > tests ok (but it has little use while these ports remain out-of-tree).
Not that I can approve this anyway, but: what are the properties of MODE_POINTER vs. MODE_PARTIAL_INT? It seems odd on the face of it for POINTER_MODE_P (Pmode) to be false on the majority of targets. But that's probably just a naming thing. Richard