This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch,AVR] Light-weight DImode implementation.


On 11/21/2011 11:31 AM, Georg-Johann Lay wrote:
> ;; The caveat is that if there are insns for some mode, there must also be a
> ;; respective move insn that describes reloads.  Therefore, this
> ;; implementation uses an accumulator-based model with two hard-coded,
> ;; accumulator-like registers
> ;;
> ;;    A[] = reg:DI 18
> ;;    B[] = reg:DI 10
> ;;
> ;; so that no DImode insn contains pseudos or needs reloading.

Well, rtl loop optimization will not work, but given that SSE optimizations ought to have been performed, that's probably acceptable.

It's definitely a hack, but perhaps you'll be able to get away with it.

I do wonder if you might even get smaller code if you force DImode quantities into the stack (just hack use_register_for_decl locally while testing; a new target hook if that pans out), and pass pointers to the variables instead.  At the moment you're having to use 8*3 insns inline to put the quantities in place and take them back out again.  With pointers this would seem to drop to 2*3.


r~


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]