2009/7/3 Ian Lance Taylor <i...@google.com>: > Mohamed Shafi <shafi...@gmail.com> writes: > >> I just want to know about the feasibility of implementing an >> instruction for a port in gcc 4.4 >> The target has 40 bit register where the normal load/store/move >> instructions will be able to access the 32 bits of the register. In >> order to move data into the rest of the register [b32 to b39] the data >> has to be stored into a 32bit memory location. The data should be >> stored in such a way that if it is stored for 0-7 in memory the data >> can be moved to b32-b39 of a even register and if the data in the >> memory is stored in 16-23 of the memory word then it can be moved to >> b32-b39 of a odd register. Hope i make myself clear. >> >> Will it be possible to implement this in the gcc back-end so that the >> particular instruction is supported? > > In general, the gcc backend can do anything, so, yes, this can be > supported. It sounds like this is not a general purpose register, so I > would probably do it using a builtin function. If you need to treat it > as a general purpose register (i.e., the register is managed by the > register allocator) then you will need a secondary reload to handle > this. >
This is a general purpose register. All the 40 bits are used only for fixed-point data types. When the register is used for fixed-point data type all the operations except initialization, are done through built-in functions. For initialization the immediate value should move through a memory ..i.e there is no immediate load when the data is 40bit. So i am planning to control this using LEGITIMATE_CONSTANT macro. But then i have a question. If all the operations are through intrinsics will there be a need for spilling for the variables used in the built-in functions? If so then depending on the register that get spilled is even or odd [b32 to b39] of the register gets stored in the memory to [b0 to b7] or [b16 tr b23] respectively. Will i be able to keep track of the spilling so that i can reload into the proper register? Hope i am clear. Regards Shafi