PRE_DEC, POST_INC, how to ?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

I am working on a new port.

The machine is 16 bit and supports pre-dec and post-inc addressing modes.

I need your help because I do not manage to have GCC generating proper
pre dec or post inc assembler code.

I modified GO_IF_LEGITIMATE_ADDRESS routines so that addresses with
PRE_DEC or POST_INC as RTL code are accepted.

Then I sometimes get valid code like:
move r1,-(r0)
move r1,-2(r0)
move r2,r0

But only with optimization options.
Moreover, the previous example would be better coded with:
move r1,-(r0)
move r1,-(r0)
move r2,r0

because it does the same thing and pre dec is a cheaper operation
than -2(r0) (indexed with displacement).

I tried to implement the cost function so that pre dec is cheaper than
indexed with displacement but it does not work.

So I cannot control pre dec and post inc in move operations.
Besides, it never generates  this addressing mode with other
operations like add, and, ior ... which should be available.
I took inspiration from MSP430 and defined patterns to directly consider
the pre dec and post inc, but nothing changed.

Please, I need advice.

Regards.

Florent

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux