Displaying 3 results from an estimated 3 matches for "ldw_2rus".
2009 Mar 31
0
[LLVMdev] adjust address calculus for an architecture that does not address bytes
...or store. For example the load word instruction LDW takes an
offset which is multiplied by 4 and added to the base pointer. This is
dealt with in the patterns defined in XCoreInstrInfo.td. The following
pattern is used for LDW:
def : Pat<(load (add GRRegs:$addr, immUs4:$offset)),
(LDW_2rus GRRegs:$addr, (div4_xform immUs4:$offset))>;
immUs4 is true when offset is a multiple of 4 and the offset divided by
4 fits in an immediate. The div4_xform xform divides a constant by 4.
These are both defined in XCoreInstrInfo.td.
It sounds like your target may be able to use a similar appr...
2009 Mar 31
2
[LLVMdev] adjust address calculus for an architecture that does not address bytes
Hi,
my target architecture has a kind of "16bit addressing mode", i.e. one address does not address 8 bit but a 16bit chunk. Consequently, every constant used to calculate effective addresses must be divided by two.
So far this is not such a problem for stack objects since FrameIndexes, function arguments etc. have a lot of custom lowering code where this can be done.
But when it comes
2009 Apr 01
2
[LLVMdev] adjust address calculus for an architecture that does not address bytes
...load word instruction LDW takes an
> offset which is multiplied by 4 and added to the base pointer. This is
> dealt with in the patterns defined in XCoreInstrInfo.td. The following
> pattern is used for LDW:
>
> def : Pat<(load (add GRRegs:$addr, immUs4:$offset)),
> (LDW_2rus GRRegs:$addr, (div4_xform immUs4:$offset))>;
>
Richard,
thanks for your suggestion.
However, I think what you describe is what I meant by 'only catch
the targeted addresses of loads/stores', i.e. the address the instruction
is reading from/writing to.
However, if I have e.g. a chun...